├── .editorconfig ├── .eslintrc.json ├── .gitignore ├── .npmignore ├── .travis.yml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── bin └── how-to-markdown ├── exercises ├── blockquotes │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── code │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── emphasis │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── gfm │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── headings │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── hello_world │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── horizontal_rules │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── html │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── images │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── links │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── lists │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ │ ├── en.md │ │ ├── ja.md │ │ ├── solution.md │ │ ├── uk.md │ │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md └── tables │ ├── en.md │ ├── exercise.js │ ├── ja.md │ ├── solution │ ├── en.md │ ├── ja.md │ ├── solution.md │ ├── uk.md │ └── zh-cn.md │ ├── uk.md │ └── zh-cn.md ├── i18n ├── en.json ├── footer │ ├── en.md │ ├── ja.md │ ├── uk.md │ └── zh-cn.md ├── ja.json ├── troubleshooting │ ├── en.md │ ├── ja.md │ ├── uk.md │ └── zh-cn.md ├── uk.json └── zh-cn.json ├── index.js ├── package-lock.json ├── package.json ├── preview.png ├── test ├── blockquotes │ └── valid.md ├── code │ └── valid.md ├── emphasis │ └── valid.md ├── gfm │ └── valid.md ├── headings │ └── valid.md ├── hello_world │ └── valid.md ├── horizontal_rules │ └── valid.md ├── html │ └── valid.md ├── images │ └── valid.md ├── links │ └── valid.md ├── lists │ └── valid.md └── tables │ └── valid.md ├── utils ├── diff.js ├── fail.js ├── problem.js └── troubleshooting.js └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | charset = utf-8 6 | trim_trailing_whitespace = true 7 | insert_final_newline = true 8 | 9 | [{*.json,*.js}] 10 | indent_style = space 11 | indent_size = 2 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es6": true, 4 | "node": true 5 | }, 6 | "extends": "eslint:recommended", 7 | "rules": { 8 | "indent": ["error", 2], 9 | "linebreak-style": ["error", "unix"], 10 | "quotes": ["error", "single"], 11 | "semi": ["error","always"], 12 | "no-console": 0 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | .DS_Store 3 | node_modules 4 | npm-debug.log 5 | preview.png 6 | .travis.yml 7 | .eslintrc.json 8 | .editorconfig 9 | /test 10 | *~ 11 | *.bak 12 | yarn.lock 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - node 4 | - 6 5 | - 4 6 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Code contributions are welcome and highly encouraged! For instructions on and help with creating a great pull request, please read the [workshopper contributing document](https://github.com/workshopper/org/blob/master/CONTRIBUTING.md). 4 | 5 | If you have questions about contributing, please create an issue. 6 | 7 | ## Lead Maintainers 8 | 9 | The role of lead maintainers is to triage and categorize issues, answer questions about contributing to the repository, review and give feedback on PRs, and maintain the quality of a workshopper's codebase and repository. 10 | 11 | **Current Lead Maintainers** 12 | - Denys Dovhan [@denysdovhan](https://github.com/denysdovhan) 13 | - Seth [@itzsaga](https://github.com/itzsaga) 14 | 15 | ### Volunteer 16 | 17 | Submitting many PRs? Please volunteer to lead this repository! Lead maintainers are selected in the philosophy of [Open Open Source](http://openopensource.org/): 18 | 19 | > Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Denys Dovhan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![how-to-markdown](./preview.png) 2 | 3 | # how-to-markdown 4 | 5 | [![NPM version][npm-image]][npm-url] 6 | [![node][node-image]][node-url] 7 | [![Dependency Status][depstat-image]][depstat-url] 8 | [![Build Status][buildstat-image]][buildstat-url] 9 | 10 | > Learn how to start using Markdown. 11 | 12 | It's kinda strange, but many people still don't know Markdown, although there is nothing hard about this amazing tool. This workshopper will teach you how to use Markdown. 13 | 14 | > **Markdown** is a _lightweight markup language_ with plain text formatting syntax designed so that it can be converted to [HTML] and many other formats using a tool by the same name. 15 | > 16 | > — about [Markdown] at **Wikipedia** 17 | 18 | ## Exercises 19 | 20 | This workshopper has 12 easy and clear tasks that cover the most important aspects of Markdown. 21 | 22 | * **HELLO WORLD** — the brief history of Markdown. 23 | * **HEADINGS** — how to use headings. 24 | * **EMPHASIS** — how you mark some text as important. 25 | * **LISTS** — creating of ordered and unordered lists. 26 | * **LINKS** — inline and reference links. 27 | * **IMAGES** — how to embed images. 28 | * **BLOCKQUOTES** — how to paste blockquotes. 29 | * **CODE** — inline code and blocks of code with syntax highlighting. 30 | * **TABLES** — creating tables. 31 | * **HORIZONTAL RULES** — how to split information using horizontal rules. 32 | * **HTML** — using HTML in a Markdown document. 33 | * **GFM** — useful things in [GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/). 34 | 35 | ## Requirements 36 | 37 | If you are on Windows, make sure you are using at least version 5.1.0 of Node.js, which provides a fix for a bug in Windows where you can't choose items in the menu. 38 | 39 | * [**Node.js**](node-url) >=4.0.0 (>=5.1.0 for Windows) 40 | 41 | ## Installation 42 | 43 | Open your terminal and run this command: 44 | 45 | npm install -g how-to-markdown 46 | 47 | Use `sudo` if you get an `EACCESS` error. 48 | 49 | ## Usage 50 | 51 | Open your terminal and run the following command: 52 | 53 | how-to-markdown 54 | 55 | ## License 56 | 57 | MIT © [Denys Dovhan](http://denysdovhan.com) 58 | 59 | 60 | 61 | [html]: https://en.wikipedia.org/wiki/HTML 62 | [markdown]: https://en.wikipedia.org/wiki/Markdown 63 | 64 | 65 | 66 | [npm-url]: https://npmjs.org/package/how-to-markdown 67 | [npm-image]: https://img.shields.io/npm/v/how-to-markdown.svg?style=flat-square 68 | 69 | [node-url]: https://nodejs.org/en/download/ 70 | [node-image]: https://img.shields.io/node/v/how-to-markdown.svg?style=flat-square 71 | 72 | [depstat-url]: https://david-dm.org/workshopper/how-to-markdown 73 | [depstat-image]: https://david-dm.org/workshopper/how-to-markdown.svg?style=flat-square 74 | 75 | [buildstat-url]: https://travis-ci.org/workshopper/how-to-markdown 76 | [buildstat-image]: https://img.shields.io/travis/workshopper/how-to-markdown.svg?style=flat-square -------------------------------------------------------------------------------- /bin/how-to-markdown: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const pkg = require('../package'); 6 | 7 | const curretVersion = process.versions.node; 8 | const targetVersion = pkg.engines.node.replace(/>|=|<|~/g, ''); 9 | 10 | if (parseFloat(curretVersion) < parseFloat(targetVersion)) { 11 | console.error(` 12 | ${pkg.name} supports only Node.js v${targetVersion} or higher 13 | You have installed Node.js v${curretVersion}. 14 | Please, update Node.js to v${targetVersion}+: https://nodejs.org/download 15 | `); 16 | process.exit(1); 17 | } 18 | 19 | require('..').execute(process.argv.slice(2)); 20 | -------------------------------------------------------------------------------- /exercises/blockquotes/en.md: -------------------------------------------------------------------------------- 1 | Sometimes we need to quote someone's words. In that case, blockquotes are exactly what we need. 2 | 3 | The syntax of blockquotes is simple: 4 | 5 | > This is my blockquote. 6 | > This line is part of the same quote. 7 | 8 | This will look like this: 9 | 10 | > This is my blockquote. 11 | > This line is part of the same quote. 12 | 13 | As you have seen, the line-break doesn't break a block of quote. To separate a few quotes just add an empty line between them. 14 | 15 | You are able to put Markdown into a blockquote, therefore this will work as well: 16 | 17 | > **Markdown** is a _lightweight markup language_ with plain text formatting syntax designed so that it can be converted to **HTML** and many other formats. 18 | > - from [Wikipedia](https://en.wikipedia.org/wiki/Markdown) 19 | 20 | ## THE CHALLENGE 21 | 22 | Start the new file with `Blockquotes` as heading. 23 | 24 | Add a quote from **William Shakespeare**'s play _Hamlet_: 25 | 26 | > To be, or not to be, that is the question. 27 | 28 | And add an original author to the quote right on the next line after this quote. When you are done, verify your solution. 29 | 30 | --- 31 | -------------------------------------------------------------------------------- /exercises/blockquotes/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/blockquotes/ja.md: -------------------------------------------------------------------------------- 1 | 時々、誰かの言葉を引用する必要があります。その場合、ブロッククォート(引用記法)はまさに私たちが必要とするものです。 2 | 3 | 引用の構文は、極めて単純です。 4 | 5 | > これがブロッククォート 6 | > この行は同じ引用符の一部です。 7 | 8 | これが次のように変換されます。 9 | 10 | > これがブロッククォート 11 | > この行は同じ引用符の一部です。 12 | 13 | 見ての通り、改行は引用のブロックを壊すことはありません。いくつかの引用符を区切るには、それらの間に空白行を追加するだけです。 14 | 15 | 他のMarkdownをブロッククォートに入れることができるので、このようなことも出来ます。 16 | 17 | > **Markdown** is a _lightweight markup language_ with plain text formatting syntax designed so that it can be converted to **HTML** and many other formats. 18 | > - from [Wikipedia](https://en.wikipedia.org/wiki/Markdown) 19 | > **Markdown** is a _lightweight markup language_ with plain text formatting syntax designed so that it can be converted to **HTML** and many other formats. 20 | > - from [Wikipedia](https://en.wikipedia.org/wiki/Markdown) 21 | 22 | ## 課題 23 | 24 | 見出しとして `Blockquotes` を付けて新しいファイルを開始してください。 25 | 26 | ファイルに、**William Shakespeare** の _Hamlet_ の演劇から、以下の文の引用を加えてください。 27 | 28 | > To be, or not to be, that is the question. 29 | 30 | そして、この文の後の次の行に、引用元の著者を追加します。完了したら、解答を確認してください。 31 | 32 | --- 33 | -------------------------------------------------------------------------------- /exercises/blockquotes/solution/en.md: -------------------------------------------------------------------------------- 1 | # Neat! 2 | 3 | You made a great quote from a great play! Blockquotes are useful and handy in email to emulate reply text. They are often used in conversation at **GitHub** for replies to specific comments. 4 | 5 | In the next exercise we will take a look at code in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/blockquotes/solution/ja.md: -------------------------------------------------------------------------------- 1 | # スッキリ! 2 | 3 | すばらしい演劇からの引用ができましたね!ブロッククォートは、返信テキストを使いまわすのに非常に便利です。 **GitHub** の会話では、特定のコメントへの返信として頻繁に使用されます。 4 | 5 | 次の演習では、Markdownのコードを見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/blockquotes/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Blockquotes 2 | 3 | > To be, or not to be, that is the question. 4 | > William Shakespeare 5 | -------------------------------------------------------------------------------- /exercises/blockquotes/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Гарно припасовано! 2 | 3 | Ви додали велику цитату з великого твору! Цитати корисні й зручні в електронній пошті, щоб виділяти текст відповіді. Вони часто використовуються в розмовах на **GitHub** для відповідей на конкретні зауваження. 4 | 5 | У наступній вправі ми розглянемо оформлення коду в Markdown. 6 | -------------------------------------------------------------------------------- /exercises/blockquotes/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 好棒! 2 | 3 | 你已经可以从伟大的作品中引经据典了。引用语法在回复邮件时经常使用。在 **GitHub** 的交流讨论中也经常使用。 4 | 5 | 下一个练习我们将学习 Markdown 的代码语法。 6 | -------------------------------------------------------------------------------- /exercises/blockquotes/uk.md: -------------------------------------------------------------------------------- 1 | Інколи нам необхідно процитувати чиїсь слова. В цьому разі цитата є саме тим, що нам необхідно. 2 | 3 | Синтаксис цитати простий: 4 | 5 | > Це цитата. 6 | > Цей рядок є частоною тієї ж цитати. 7 | 8 | Отримаємо: 9 | 10 | > Це цитата. 11 | > Цей рядок є частоною тієї ж цитати. 12 | 13 | Як ви бачите, новий рядок не розвиває цитату. Щоб розділити декілька цитат просто додайте пустий рядок між ними. 14 | 15 | Ви можете також додавати в цитату Markdown, не тільки звичайний текст: 16 | 17 | > **Markdown** це _легка мова розмітки_ з простим синтаксисом форматування тексту який розроблено таким чином, що він може бути перетворений в **HTML** і в багато інших форматів. 18 | > - з [Вікіпедія](https://en.wikipedia.org/wiki/Markdown) 19 | 20 | ## ЗАВДАННЯ 21 | 22 | Створіть новий файл з заголовоком `Blockquotes`. 23 | 24 | Додайте цитату _Hamlet_ з п'єси **William Shakespeare**: 25 | 26 | > To be, or not to be, that is the question. 27 | 28 | І додайте автора в цитату в наступному рядоку після цієї цитати. 29 | 30 | Перевірте ваше рішення, коли закінчите. 31 | 32 | --- 33 | -------------------------------------------------------------------------------- /exercises/blockquotes/zh-cn.md: -------------------------------------------------------------------------------- 1 | 有时我们需要引用他人的话语。在这种情况下,MarkDown 的引用语法恰好能解决我们的问题。 2 | 3 | 引用语法非常简单: 4 | 5 | > 这是一个引文。 6 | > 此行是同一引文的一部分。 7 | 8 | 上面代码的显示效果如下: 9 | 10 | > 这是一个引文。 11 | > 此行是同一引文的一部分。 12 | 13 | 正如你所看到的,换行并不能打断一个引用块。如果要分开引文,需要在其中插入空行。 14 | 15 | 你可以在引文中添加 MarkDown 语法,完全没有问题: 16 | 17 | > **Markdown** 是一个纯文本的_轻量标记语言_,它可以被转换成 **HTML** 以及其他很多格式。 18 | > - 出自[维基百科](https://en.wikipedia.org/wiki/Markdown) 19 | 20 | ## 挑战 21 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Blockquotes`。 22 | 23 | 添加一段引文,出自 **William Shakespeare** 的 play _Hamlet_: 24 | 25 | > To be, or not to be, that is the question. 26 | 27 | 在引文的下方添加上原始作者的名字。 28 | 29 | 完成后,请检查你的文件。 30 | 31 | --- 32 | -------------------------------------------------------------------------------- /exercises/code/en.md: -------------------------------------------------------------------------------- 1 | Code is a part of Markdown spec. There are two ways to add code in your document: inline code and blocks of code. 2 | 3 | ### Inline code 4 | 5 | To mark a part of text as code, just wrap it in back-ticks ( ``` ` ```). Here is an example: 6 | 7 | Inline code transforms into `` html-tag. 8 | 9 | **|>** Inline code transforms into `` html-tag. 10 | 11 | ### Blocks of code 12 | 13 | Blocks of code are either fenced by lines with three back-ticks ( ``` ``` ```), or are indented with four spaces. 14 | 15 | Syntax highlighting isn't part Markdown's spec. However, many renderers support syntax highlighting. Which languages are supported and how those language names should be written will vary from renderer to renderer. 16 | 17 | ```js 18 | console.log('This is JavaScript syntax highlighting!'); 19 | ``` 20 | 21 | ``` 22 | No language indicated, so no syntax highlighting. 23 | ``` 24 | 25 | Block of code with indentation. 26 | 27 | These two blocks will be rendered like so: 28 | 29 | ```js 30 | console.log('This is JavaScript syntax highlighting!'); 31 | ``` 32 | 33 | ``` 34 | No language indicated, so no syntax highlighting. 35 | ``` 36 | 37 | Block of code with indentation. 38 | 39 | We recommend to use the fenced code blocks instead of blocks with indentation, because they support syntax highlighting. 40 | 41 | ## THE CHALLENGE 42 | 43 | Add `Code` as the first-level heading in your file. 44 | 45 | Add this JavaScript code with relevant syntax highlighting: 46 | 47 | ```js 48 | const add = (a, b) => a + b; 49 | ``` 50 | 51 | Don't forget to verify your solution. 52 | 53 | --- 54 | -------------------------------------------------------------------------------- /exercises/code/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/code/ja.md: -------------------------------------------------------------------------------- 1 | コードはMarkdown仕様の一部です。 ドキュメントにコードを追加するには、インラインコードとコードブロックの2つの方法があります。 2 | 3 | ### インラインコード 4 | 5 | テキストの一部をコードとしてマークするには、バッククォート( ``` ` ```)で囲むだけです。 次に例を示します。 6 | 7 | インラインコードは `` でhtml-tagに変わります。 8 | 9 | **|>** インラインコードは `` でhtml-tagに変わります。 10 | 11 | ### コードブロック 12 | 13 | コードブロックは、3つのバッククォート( ``` ``` ```)を持つ行に囲まれているか、または4つのスペースで字下げされています。 14 | 15 | シンタックスハイライトはMarkdownの仕様の一部ではありません。 ただし、多くのレンダラーはシンタックスハイライトをサポートしています。 サポートされている言語とその記述方法は、レンダラーによって異なります。 16 | 17 | ```js 18 | console.log('これはjavascriptのシンタックスハイライトです!'); 19 | ``` 20 | 21 | ``` 22 | 言語の指定がないので、シンタックスハイライトにはなりません。 23 | ``` 24 | 25 | 字下げによるコードブロック。 26 | 27 | These two blocks will be rendered like so: 28 | 29 | ```js 30 | console.log('これはjavascriptのシンタックスハイライトです!'); 31 | ``` 32 | 33 | ``` 34 | 言語の指定がないので、シンタックスハイライトにはなりません。 35 | ``` 36 | 37 | 字下げによるコードブロック。 38 | 39 | 字下げによるコードブロックよりも、バッククォートでのコードブロックを使用することをお勧めします。これは、シンタックスハイライトをサポートしているためです。 40 | 41 | ## 課題 42 | 43 | ファイルに第一レベルの見出しで `Code` のテキストとします。 44 | 45 | 以下のJavaScriptコードをシンタックスハイライトするように追加します。 46 | 47 | ```js 48 | const add = (a, b) => a + b; 49 | ``` 50 | 51 | 終わったら、解答の確認を忘れずに。 52 | 53 | --- 54 | -------------------------------------------------------------------------------- /exercises/code/solution/en.md: -------------------------------------------------------------------------------- 1 | # Awesome! 2 | 3 | Now you can embed code snippets into Markdown documents. That is yet another thing that is used almost everywhere. 4 | 5 | In the next exercise we will take a look at tables in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/code/solution/ja.md: -------------------------------------------------------------------------------- 1 | # 最高! 2 | 3 | これであなたは、Markdownドキュメントにコードスニペットを埋め込むことができますね。 4 | 5 | 次の演習では、Markdownの表を見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/code/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Code 2 | 3 | ```js 4 | const add = (a, b) => a + b; 5 | ``` 6 | -------------------------------------------------------------------------------- /exercises/code/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Неймовірно! 2 | 3 | Тепер ви можете вставляти фрагменти коду в Markdown документи. Тобто це ще одна річ, яка використовується практично скрізь. 4 | 5 | У наступній вправі ми розглянемо таблиці в Markdown. 6 | -------------------------------------------------------------------------------- /exercises/code/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 太神奇了! 2 | 3 | 现在你已经能够在文档中嵌入代码片段了。这也是一种用途广泛的语法之一。 4 | 5 | 下一个练习我们将学习 Markdown 的表格语法。 6 | -------------------------------------------------------------------------------- /exercises/code/uk.md: -------------------------------------------------------------------------------- 1 | Код є частиною специфікації Markdown. Є два способи додавання коду в документі: вбудований код і блоки коду. 2 | 3 | ### Вбудований код 4 | 5 | Щоб позначити частину тексту як код, необхідно просто обернути його в зворотні лапки (``` ` ```). Ось приклад: 6 | 7 | Вбудований код перетворюється в `` html-теґ. 8 | 9 | **|>** Вбудований код перетворюється в `` html-теґ. 10 | 11 | ### Блоки коду 12 | 13 | Блоки коду огортаються лініями з трьома зворотними лапками (``` ``` ```), або виділені відступом довжиною в чотири пробіли. 14 | 15 | Підсвічування синтаксису не є частиною специфікації Markdown. Тим не менш, багато додатків підтримують підсвічування синтаксису. Мови, які підтримуються і правильність написасання назв буде відрізнятися для різних додатків. 16 | 17 | ```js 18 | console.log('Це приклад JavaScript підсвічування синтаксису!'); 19 | ``` 20 | 21 | ``` 22 | Мови не вказано, тому немає підсвічування синтаксису. 23 | ``` 24 | 25 | Блок коду з відступом. 26 | 27 | Ці два блоки відображатимуться наступним чином: 28 | 29 | ```js 30 | console.log('Це приклад JavaScript підсвічування синтаксису!'); 31 | ``` 32 | 33 | ``` 34 | Мови не вказано, тому немає підсвічування синтаксису. 35 | ``` 36 | 37 | Блок коду з відступом. 38 | 39 | Ми рекомендуємо використовувати блоки коду з трьома зворотними лапками замість блоків з відступом, тому що вони підтримують підсвічування синтаксису. 40 | 41 | ## ЗАВДАННЯ 42 | 43 | Додайте `Code` як заголовок першого рівня у ваш файл. 44 | 45 | Додайте цей код JavaScript з відповідним підсвічуванням синтаксису: 46 | 47 | ```js 48 | const add = (a, b) => a + b; 49 | ``` 50 | 51 | Не забудьте перевірити ваше рішення. 52 | 53 | --- 54 | -------------------------------------------------------------------------------- /exercises/code/zh-cn.md: -------------------------------------------------------------------------------- 1 | 嵌入代码是 MarkDown 支持的语法之一。有两种方式可以在你的文档中嵌入代码:行内代码和块式代码。 2 | 3 | ### 行内代码 4 | 5 | 标记一部分文字为代码,只需要把文字包裹在反引号中间(``` ` ```)。下面是一个例子: 6 | 7 | 行内代码被翻译成 HTML 标记的 ``。 8 | 9 | **|>** 行内代码被翻译成 HTML 标记 ``。 10 | 11 | ### 块式代码 12 | 13 | 块式代码由三个反引号的符号行所包裹(``` ``` ```),或者前面插入四个空格。 14 | 15 | 语法高亮不是 MarkDown 标准的一部分。然而很多解释器都支持语法高亮,不同的解释器支持的编程语言不同,而且语言的名称短语也不同。 16 | 17 | ```js 18 | console.log('这是 JavaScript 语法高亮!'); 19 | ``` 20 | 21 | ``` 22 | 没有指定语言,所以没有语法高亮。 23 | ``` 24 | 25 | 前导空格的代码块。 26 | 27 | 上面代码块的显示效果如下: 28 | 29 | ```js 30 | console.log('这是 JavaScript 语法高亮!'); 31 | ``` 32 | 33 | ``` 34 | 没有指定语言,所以没有语法高亮。 35 | ``` 36 | 37 | 前导空格的代码块。 38 | 39 | 建议你使用反引号包裹的代码块,而避免使用前导空格的代码块,因为,反引号包裹的代码块支持语法高亮。 40 | 41 | ## 挑战 42 | 43 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Code`。 44 | 45 | 在文档中添加下面带语法高亮的 JavaScript 代码块: 46 | 47 | ```js 48 | const add = (a, b) => a + b; 49 | ``` 50 | 51 | 完成后,请检查你的文件。 52 | 53 | --- 54 | -------------------------------------------------------------------------------- /exercises/emphasis/en.md: -------------------------------------------------------------------------------- 1 | It's easy to mark text as _italic_, **bold**, _**combined**_ and ~~strikethrough~~. There are a few ways to make emphasis in Markdown and each of those is readable. 2 | 3 | To get emphasis just wrap some text in single, double or triple asterisks (`*`) or underscores (`_`). Here are some examples: 4 | 5 | Italics with *asterisks* and _underscores_. 6 | 7 | **|>** Italics with *asterisks* and _underscores_. 8 | 9 | Bold with **asterisks** or __underscores__ 10 | 11 | **|>** Bold with **asterisks** or __underscores__ 12 | 13 | Combined emphasis with **asterisks and _underscores_**. 14 | 15 | **|>** Combined emphasis with **asterisks and _underscores_**. 16 | 17 | Sometimes you need to draw line through the text. To get strikethrough wrap the text in two tildes (`~`) like so: 18 | 19 | ~~Scratch this line.~~ 20 | 21 | **|>** ~~Scratch this line.~~ 22 | 23 | ## THE CHALLENGE 24 | 25 | Create a new file and add a first-level heading at the top of your file. This heading should contain `Emphasis` as text. 26 | 27 | Below the heading, add this text: 28 | 29 | It's very easy to use italic, bold and combined emphasis in Markdown! 30 | 31 | Please, mark _italic_, **bold** and _**combined**_ using relevant styles. 32 | 33 | --- 34 | -------------------------------------------------------------------------------- /exercises/emphasis/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/emphasis/ja.md: -------------------------------------------------------------------------------- 1 | _italic(イタリック)_, **bold(太字)**, _**combined(コンビネーション)**_ そして ~~打ち消し線~~などは簡単に出来ます。 2 | Markdownで強調する方法はいくつかあり、それぞれが文章を読みやすくすることに役立ちます。 3 | 4 | 文書を強調するには、単一、二重、三重のアスタリスク:asterisks(`*`)またはアンダースコア:underscores(`_`)でテキストを囲むだけです。 ここではいくつかの例を示します。 5 | 6 | Italics(イタリック) は *asterisks* か _underscores_ 7 | 8 | **|>** Italics(イタリック) は *asterisks* か _underscores_ 9 | 10 | Bold(太字)は **asterisks** か __underscores__ 11 | 12 | **|>** Bold(太字)は **asterisks** か __underscores__ 13 | 14 | コンビネーションは **asterisks と _underscores_**. 15 | 16 | **|>** コンビネーションは **asterisks と _underscores_**. 17 | 18 | テキストを打ち消し線で消す必要があることがあります。 取り消し線を得るには、次のように2つのチルダ(`~`) でテキストを囲みます。 19 | 20 | ~~この一文を訂正~~ 21 | 22 | **|>** ~~この一文を訂正~~ 23 | 24 | ## 課題 25 | 26 | 新しいファイルを作成し、ファイルの先頭に第1レベルの見出しを追加します。 この見出しは、`Emphasis`というテキストにしましょう。 27 | 28 | 見出しの下に、次のテキストを追加します。 29 | 30 | It's very easy to use italic, bold and combined emphasis in Markdown! 31 | 32 | _italic_, **bold** そして _**combined**_ に関連するマークを使用してください。 33 | 34 | --- 35 | -------------------------------------------------------------------------------- /exercises/emphasis/solution/en.md: -------------------------------------------------------------------------------- 1 | # Nice job! 2 | 3 | Now you know how you can easily mark important parts in Markdown. 4 | 5 | We suggest to use different notations for italic and bold, for example: 6 | 7 | 1. Single underscore for `_italic_` and double asterisks for `**bold**` 8 | 2. Single asterisk for `*italic*` and double underscores for `__bold__` 9 | 10 | This approach helps to recognize different styles faster. For _**combined**_ you may mix styles such as `_**combined**_` or `*__combined__*` as well. 11 | 12 | In the next exercise we will take a look at lists in Markdown. 13 | -------------------------------------------------------------------------------- /exercises/emphasis/solution/ja.md: -------------------------------------------------------------------------------- 1 | # すばらしい! 2 | 3 | Markdownで重要な部分を簡単にマークする方法が分かりましたね。 4 | 5 | イタリック体と太字体には、以下の例のように、異なる表記法を使用することをお勧めします。 6 | 7 | 1. 単一のアンダースコアで `_italic_` と、二重のアスタリスクで `**bold**` 8 | 2. 単一のアスタリスクで `*italic*` と、二重のアンダースコアで `__bold__` 9 | 10 | このアプローチは、異なるスタイルをより早く認識するのに役立ちます。_**combined**_の場合は、 `_**combined**_` や `*__combined__*`などのスタイルを混在させることもできます。 11 | 12 | 次の演習ではMarkdownのリストを見ていきます。 13 | -------------------------------------------------------------------------------- /exercises/emphasis/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Emphasis 2 | 3 | It's very easy to use _italic_, **bold** and _**combined**_ emphasis in Markdown! 4 | -------------------------------------------------------------------------------- /exercises/emphasis/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Хороша робота! 2 | 3 | Тепер ви знаєте як легко виділити важливі деталі в Markdown. 4 | 5 | Ми пропонуємо використовувати різні позначення для курсивного і напівжирного шрифту, наприклад: 6 | 7 | 1. Одне підкреслення для `_курсиву_` і двома зірочками для`**напівжирного**` 8 | 2. Одна зірочка для `*курсиву*` і подвійні підкреслення для `__напівжирного__` 9 | 10 | Такий підхід дозволяє розпізнавати різні стилі швидше. Для _**комбінованого**_ стилю ви можете використовути такі стилі: `_**комбінованний**_` або `*__комбінованний__*`. 11 | 12 | У наступній вправі ми подивимося на списки в Markdown. 13 | -------------------------------------------------------------------------------- /exercises/emphasis/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 干得漂亮! 2 | 3 | 现在你已经知道在 MarkDown 语法中如何轻松的强调重要信息了。 4 | 5 | 我们建议你对斜体和粗体使用不同的标记,例如: 6 | 7 | 1. 一个下划线的`_斜体_`和两个星号的`**粗体**` 8 | 2. 一个星号的`*斜体*`和两个下划线的`__粗体__` 9 | 10 | 这种方式可以让你在文档中快速的识别不同的样式。对于_**加粗斜体**_,两种方式你可以自由选择`_**加粗斜体**_`或`*__加粗斜体__*`。 11 | 12 | 下一个练习我们将学习 Markdown 的列表语法。 13 | -------------------------------------------------------------------------------- /exercises/emphasis/uk.md: -------------------------------------------------------------------------------- 1 | Легко відзначити частину тексту як _курсив_, **напівжирний**, _**комбінований**_ і ~~перекреслений~~. Є кілька способів зробити виділення в Markdown і кожен з них є читабельним. 2 | 3 | Щоб виділити текст необхідно тільки обернути текст в одинарні, подвійні або потрійні зірочки (`*`) чи підкреслення (`_`). Ось деякі приклади: 4 | 5 | Курсив з *зірочками* і _підкресленнями_. 6 | 7 | **|>** Курсив з *зірочками* і _підкресленнями_. 8 | 9 | Напівжирний з **зірочками** чи __підкресленням__ 10 | 11 | **|>** Напівжирний з **зірочками** чи __підкресленням__ 12 | 13 | Комбіноване виділення з **зірочками і _підкресленнями_**. 14 | 15 | **|>** Комбіноване виділення з **зірочками і _підкресленнями_**. 16 | 17 | Іноді вам потрібно закреслити текст. Для цього треба обернути текст в тильди (`~`): 18 | 19 | ~~Закресли цю лінію.~~ 20 | 21 | **|>** ~~Закресли цю лінію.~~ 22 | 23 | ## ЗАВДАННЯ 24 | Створіть новий файл і додайте заголовок першого рівня у верхній частині файлу. Цей заголовок повинен містити `Emphasis` як текст. 25 | 26 | Під заголовком, додайте цей текст: 27 | 28 | It's very easy to use italic, bold and combined emphasis in Markdown! 29 | 30 | Будь ласка, виділіть _курсив_, **напівжирний** і _**комбінований_** використовуючи відповідні стилі. 31 | 32 | --- 33 | -------------------------------------------------------------------------------- /exercises/emphasis/zh-cn.md: -------------------------------------------------------------------------------- 1 | 很容易把文字格式化成 _斜体_, **粗体**, _**加粗斜体**_ 以及 ~~删除样式~~。在 MarkDown 中只有几种强调文字的语法,每种语法的可读性都很强。 2 | 3 | 强调文字只需要把被强调的文字包裹在一个、两个或者三个星号(`*`)或者下划线(`_`)中即可。下面是一些例子: 4 | 5 | 使用*星号*或者_下划线_来格式化斜体。 6 | 7 | **|>** 使用*星号*或者_下划线_来格式化斜体。 8 | 9 | 使用**星号**或者__下划线__来格式化粗体。 10 | 11 | **|>** 使用**星号**或者__下划线__来格式化粗体。 12 | 13 | 混合使用**星号和 _下划线_**。 14 | 15 | **|>** 混合使用**星号和 _下划线_**。 16 | 17 | 有些时候你需要在文字上划删除线。把需要格式化的文字包裹上两个波浪线(`~`)。像下面这样: 18 | 19 | ~~删除此行。~~ 20 | 21 | **|>** ~~删除此行。~~ 22 | 23 | ## 挑战 24 | 25 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Emphasis`。 26 | 27 | 在标题下面,添加下面的文本: 28 | 29 | It's very easy to use italic, bold and combined emphasis in Markdown! 30 | 31 | 请用样式语法来强调文本中的 _italic_, **bold** 和 _**combined**_ 这三个单词。 32 | 33 | --- 34 | -------------------------------------------------------------------------------- /exercises/gfm/en.md: -------------------------------------------------------------------------------- 1 | If you are a developer, then you have heard about **GitHub**. GitHub is an important part of the community. Why are we talking about it? That's because GitHub is a big customer of Markdown. Even more, GitHub uses its own version of the Markdown syntax that provides an additional set of useful features. This version of markdown is called _GitHub Flavored Markdown_ or simply _GFM_. 2 | 3 | From previous exercises you are already familiar with syntax highlighting in blocks of code and tables. However, there are some other features which may be helpful for you. 4 | 5 | ### Task lists 6 | 7 | To create a task list you should create an ordered or unordered list. Then you can use squared brackets that will be turned into checkboxes. An `x` between them makes the item marked as completed. Example: 8 | 9 | - [x] [links](#), **formatting**, and tags supported 10 | - [x] list syntax required (any unordered or ordered list supported) 11 | - [x] this is a complete item 12 | - [ ] this is an incomplete item 13 | 14 | - [x] [links](#), **formatting**, and tags supported 15 | - [x] list syntax required (any unordered or ordered list supported) 16 | - [x] this is a complete item 17 | - [ ] this is an incomplete item 18 | 19 | ### SHA references 20 | 21 | Any reference to a commit’s _SHA-1 hash_ will be automatically converted into a link to that commit on GitHub: 22 | 23 | 4ad0c921206dec4d1518f4aeead932e7617f934f 24 | denysdovhan/how-to-markdowkn@4ad0c921206dec4d1518f4aeead932e7617f934f 25 | 26 | ### Issue and Pull request references 27 | 28 | Any number that refers to an Issue or Pull Request will be automatically converted into a link: 29 | 30 | #1 31 | denysdovhan/how-to-markdowkn#1 32 | 33 | ### Username @mentions 34 | 35 | Typing an `@` symbol, followed by a _username_, will notify that person to come and view the comment. This is called a **@mention**, because you’re mentioning the individual. You can also mention **@teams** within an organization. 36 | 37 | ### Emoji 38 | 39 | It's a funny part, but it's still important. GFM also supports _emoji_! 40 | 41 | ✨ 🐫 💥 42 | 43 | To see a list of every emoji that is supported, check out the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/). 44 | 45 | ## THE CHALLENGE 46 | 47 | Add a first-level heading that contains `GFM`. 48 | 49 | Please create a to-do list with these tasks: 50 | 51 | - hey 52 | - ho 53 | - let's go 54 | 55 | Then mark item `ho` as completed. 56 | 57 | Verify your solution. 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /exercises/gfm/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/gfm/ja.md: -------------------------------------------------------------------------------- 1 | あなたが開発者であれば、**GitHub** について聞いたことがあるでしょう。 GitHubは近年の重要なコミュニティの1つです。 なぜそれについて話しているか? それは、GitHubはMarkdownの大きな顧客だからです。 さらに、GitHubは独自のバージョンのMarkdown構文を使用して、一連の便利な機能を追加しています。 このバージョンのマークダウンは _GitHub Flavored Markdown_ または単に _GFM_ と呼ばれます。 2 | 3 | 4 | これまでの演習で、コード、テーブルのブロックでのシンタックスハイライトについて、既に理解しています。 しかし、あなたに役立ついくつかの他の機能があります。 5 | 6 | ### タスクリスト 7 | 8 | タスクリストを作成するには、順序付きリストまたは順序付けられていないリストを作成する必要があります。 次に、チェックボックスに変わる角括弧を使用します。括弧の中の `x` は、その項目を完了マークを意味します。 9 | 10 | - [x] [リンク](#), **フォーマット**、そして タグに対応しています。 11 | - [x] リスト構文が必要。 (任意の順序付けられていないリストまたは順序付けされたリスト) 12 | - [x] 完了した項目 13 | - [ ] 未完了の項目 14 | 15 | - [x] [リンク](#), **フォーマット**、そして タグに対応しています。 16 | - [x] リスト構文が必要。 (任意の順序付けられていないリストまたは順序付けされたリスト) 17 | - [x] 完了した項目 18 | - [ ] 未完了の項目 19 | 20 | ### SHA への参照 21 | 22 | コミットの _SHA-1 hash_ への参照は、自動的にGitHub上のそのコミットへのリンクに変換されます。 23 | 24 | 4ad0c921206dec4d1518f4aeead932e7617f934f 25 | denysdovhan/how-to-markdowkn@4ad0c921206dec4d1518f4aeead932e7617f934f 26 | 27 | ### Issue と Pull request への参照 28 | 29 | Issue または Pull request を参照する番号は、自動的にリンクに変換されます。 30 | 31 | #1 32 | denysdovhan/how-to-markdowkn#1 33 | 34 | ### ユーザー名 @mentions 35 | 36 | `@`シンボルのあとに続けて _username_ を入力すると、その人に、来ているコメントを見るように通知されます。 あなたはその人に言及しているので、これは **@mention** と呼ばれます。 また、組織内の **@teams** に言及することもできます。 37 | 38 | ### 絵文字 39 | 40 | ファニーな要素ですが、それでも重要です。GFMも _emoji_ をサポートしています! 41 | 42 | ✨ 🐫 💥 43 | 44 | サポートされている絵文字のリストを確認するには、[Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/). 45 | 46 | ## 課題 47 | 48 | `GFM`を含む第1レベル見出しを追加してください。 49 | 50 | 以下のタスクで予定リストを作成してください。 51 | 52 | - hey 53 | - ho 54 | - let's go 55 | 56 | 次に、項目`ho`を完了としてマークします。 57 | 58 | 解答を確認します。 59 | 60 | --- 61 | -------------------------------------------------------------------------------- /exercises/gfm/solution/en.md: -------------------------------------------------------------------------------- 1 | # Congratulations! 2 | 3 | You finished this workshopper! Now you are familiar with Markdown and know how to write and read Markdown documents. 4 | 5 | What should you do next? Just write some Markdown. Rewrite the `README`-file of your project in Markdown, start to write posts in your blog in Markdown, whatever. 6 | 7 | Anyway, knowledge of Markdown is a very nice skill that will be useful. 8 | 9 | Thank you for using this workshopper. Check out other workshoppers on . 10 | -------------------------------------------------------------------------------- /exercises/gfm/solution/ja.md: -------------------------------------------------------------------------------- 1 | # おめでとうございます!! 2 | 3 | あなたはこのワークショッパーを終了しました! Markdownに精通しており、Markdownドキュメントの読み書き方法を知っています。 4 | 5 | あなたは次に何をすべきでしょうか? Markdownを書くだけです。 6 | 7 | あなたのプロジェクトの `README`ファイルをMarkdownで書き直し、Markdownであなたのブログの投稿を書き始めましょう。 8 | 9 | とにかく、Markdownの知識はとても便利なスキルです。 10 | 11 | このワークショッパーを使用していただきありがとうございます。 で他のワークショッパーをチェックしてください。 12 | -------------------------------------------------------------------------------- /exercises/gfm/solution/solution.md: -------------------------------------------------------------------------------- 1 | # GFM 2 | 3 | - [ ] hey 4 | - [x] ho 5 | - [ ] let's go 6 | -------------------------------------------------------------------------------- /exercises/gfm/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Вітаємо! 2 | 3 | Ви закінчили цей воркшоп! Тепер ви знайомі з Markdown і знаєте, як читати і писати Markdown документи 4 | 5 | Що ви повинні робити далі? Просто напишіть деякі Markdown. Перепишіть `README`-файл вашого проекту в Markdown чи почніть писати повідомлення у свій блог в Markdown що завгодно. 6 | 7 | 8 | У всякому разі, знання Markdown - дуже хороша навичка, яка вам обов'язково стане в нагоді. 9 | 10 | Дякуємо вам за використання цього воркшопу. Перевірте інші воркшопи на . 11 | -------------------------------------------------------------------------------- /exercises/gfm/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 恭喜你! 2 | 3 | 成功的完成本教程!现在你已经熟悉 MarkDown,并且知道如何编辑和阅读 MarkDown 文档。 4 | 5 | 接下来打算做点什么?在自己的工作和生活中编写 MarkDown 文档吧。把自己项目中的 `README`文件重新编辑一下,开始在博客中用 MarkDown 编写博文,或者其他什么。 6 | 7 | 不管怎样,MarkDown 的知识是非常有用的。 8 | 9 | 感谢你使用本教程。欢迎继续学习 [nodeschool](http://nodeschool.io) 上的其他教程。 10 | -------------------------------------------------------------------------------- /exercises/gfm/uk.md: -------------------------------------------------------------------------------- 1 | Якщо ви розробник, то ви напевно чули про **GitHub**. GitHub є важливою частиною спільноти розробників. Чому ми говоримо про це? Це тому, що GitHub є великим клієнтом Markdown. Більш того, GitHub використовує свою власну версію синтаксису Markdown, що забезпечує додатковий набір корисних функцій. Ця версія називається _GitHub Flavored Markdown_ або просто _GFM_. 2 | 3 | З попередніх вправ ви вже знайомі з підсвічуванням синтаксису в блоках коду і таблицями. Проте, є й інші функції, які можуть стати корисними для вас. 4 | 5 | ### Списки завдань 6 | 7 | Для створення списку завдань ви повинні створити упорядкований або невпорядкований список. Потім ви можете використовувати квадратні дужки, які будуть перетворені в поле для прапорці. `x` між дужками позначає поле як завершене. 8 | 9 | - [x] [посилання](#), **форматування** і теги підтримується 10 | - [x] синтаксис списку вимагається (невпорядкований або впорядкований список підтримується) 11 | - [x] це виконаний пункт 12 | - [ ] це не виконаний пункт 13 | 14 | - [x] [посилання](#), **форматування** і теги підтримується 15 | - [x] синтаксис списку вимагається (невпорядкований або впорядкований список підтримується) 16 | - [x] це виконаний пункт 17 | - [ ] це не виконаний пункт 18 | 19 | ### Посилання SHA 20 | 21 | Будь-яке посилання на комміти _SHA-1 hash_ будуть автоматично перетворені в посилання на цей комміт на GitHub: 22 | 23 | 4ad0c921206dec4d1518f4aeead932e7617f934f 24 | denysdovhan/how-to-markdowkn@4ad0c921206dec4d1518f4aeead932e7617f934f 25 | 26 | ### Посилання `проблем` і `пул-реквестів` 27 | 28 | Будь-яке число, яке відноситься до `проблем` чи `пул-реквестів` буде автоматично перетворено на посилання: 29 | 30 | #1 31 | denysdovhan/how-to-markdowkn#1 32 | 33 | ### @згадування користувача 34 | 35 | Згадка користовуча офрмлюється в такому форматі: символ @ разом з ім'ям користувача - відправить повідомлення користувачу, щоб він міг прийти і переглянути коментар. Це називається **@згадака** , тому що ви ви згадуєтe особу. Можна також згадати **@команди** всередині організації. 36 | 37 | ### Emoji 38 | 39 | Це кумедна частина, але вона як і раніше важлива. GFM також підтримує _emoji_! 40 | 41 | ✨ 🐫 💥 42 | 43 | Для того, щоб побачити список всіх смайликів які підтримується перегляньте [Emoji Шпаргалка](http://www.emoji-cheat-sheet.com/). 44 | 45 | ## ЗАВДАННЯ 46 | 47 | Додати заголовок першого рівня, що містить `GFM`. 48 | 49 | Будь ласка, створіть список справ з цими завданнями: 50 | 51 | - hey 52 | - ho 53 | - let's go 54 | 55 | Потім позначте пункт `ho` як виконаний. 56 | 57 | Перевірте своє рішення. 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /exercises/gfm/zh-cn.md: -------------------------------------------------------------------------------- 1 | 如果你是开发人员,想必你听说过**GitHub**。GitHub是开源社区中的重要一员。为什么我们会讨论这个?因为GitHub大量使用了Markdown。甚至,GitHub实现了自己特有的 Markdown语法,来提供一些更有用的功能。这个本版本的markdown被称为_GitHub Flavored(特色的) Markdown_或者简称为_GFM_。 2 | 3 | 前面的练习中你已经熟悉了GFM的代码块语法高亮以及表格语法。然而,这里还有一些有用的语法,也许你会用到。 4 | 5 | ### 任务列表 6 | 7 | 创建任务列表的前提是你需要创建一个有序或无序列表。然后使用方括号来表示一个复选框。方括号中用字母`x`标识任务已经完成,或者空格标识任务没有完成。示例如下: 8 | 9 | - [x] [这是链接](#),**这是格式化**,这是删除标记 10 | - [x] 需要列表语法(有序和无序列表都支持) 11 | - [x] 此项已完成 12 | - [ ] 此项未完成 13 | 14 | - [x] [这是链接](#),**这是格式化**,这是删除标记 15 | - [x] 需要列表语法(有序和无序列表都支持) 16 | - [x] 此项已完成 17 | - [ ] 此项未完成 18 | 19 | ### SHA 引用 20 | 21 | Github上对一个提交的_SHA-1 hash_引用会被翻译为该提交的一个链接: 22 | 23 | 4ad0c921206dec4d1518f4aeead932e7617f934f 24 | denysdovhan/how-to-markdowkn@4ad0c921206dec4d1518f4aeead932e7617f934f 25 | 26 | ### 问题(Issue)和请求合并(Pull request)引用 27 | 28 | 与问题或请求合并相关的任何数字都被自动翻译成链接: 29 | 30 | #1 31 | denysdovhan/how-to-markdowkn#1 32 | 33 | ### 用户 @提及 34 | 35 | 在_用户名_前面加一个 `@` 符号,将通知该用户来查看评论。这被称为 **@提及**,因为你正在提醒某个人,当然,你也可以在一个组织里**@团队**。 36 | 37 | ### 表情符号 38 | 39 | 这是一个有趣的部分,也是一个重要部分。GFM 也支持_表情符号_! 40 | 41 | ✨ 🐫 💥 42 | 43 | 查看 GFM 支持的完整表情符号列表,请访问 [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com/)。 44 | 45 | ## 挑战 46 | 47 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `GFM`。 48 | 49 | 在文档中添加一个待办列表,内容如下: 50 | 51 | - hey 52 | - ho 53 | - let's go 54 | 55 | 然后标记 `ho` 项已完成。 56 | 57 | 完成后,请检查你的文件。 58 | 59 | --- 60 | -------------------------------------------------------------------------------- /exercises/headings/en.md: -------------------------------------------------------------------------------- 1 | It's important to categorize information. That's when headings help. 2 | 3 | If you need to add a heading, just type a `#` sign at the beginning of the line. The number of `#` is a heading level. For example: 4 | 5 | # Heading 1 6 | ## Heading 2 7 | ### Heading 3 8 | #### Heading 4 9 | ##### Heading 5 10 | ###### Heading 6 11 | 12 | As in HTML, there are 6 levels of headings. These headings will be transformed into `

`-`

` tags accordingly. 13 | 14 | There are aliases for first and second-level headings. You will get a first-level heading if you type three `=` signs on the following line. 15 | You can type three `-` on the following line to create a second-level heading. For example: 16 | 17 | Heading 1 18 | === 19 | 20 | Heading 2 21 | --- 22 | 23 | ## THE CHALLENGE 24 | 25 | Please create a first-level heading with `Markdown is awesome!` and then verify your solution. 26 | 27 | --- 28 | -------------------------------------------------------------------------------- /exercises/headings/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/headings/ja.md: -------------------------------------------------------------------------------- 1 | 情報を分類することが重要です。それには見出しが助けになります。 2 | 3 | 見出しを追加する必要がある場合は、行の先頭に`#`記号を入力するだけです。 `#`の数は以下のように見出しレベルになります。 4 | 5 | # Heading 1 6 | ## Heading 2 7 | ### Heading 3 8 | #### Heading 4 9 | ##### Heading 5 10 | ###### Heading 6 11 | 12 | HTMLのように、6つのレベルの見出しがあります。これらの見出しはそれに応じて `

` - `

`のタグに変換されます。 13 | 14 | 第1レベルと第2レベルの見出しには別名があります。次の行に3つの `=` 記号を入力すると、1レベル目の見出しが得られます。 15 | 次の行に3つの `-` を入力すると、2番目の見出しを作成できます。 例えば: 16 | 17 | Heading 1 18 | === 19 | 20 | Heading 2 21 | --- 22 | 23 | ## 課題 24 | 25 | `Markdown is awesome!`で一番上の見出しを作成して、あなたの解答を確認してください。 26 | 27 | --- 28 | -------------------------------------------------------------------------------- /exercises/headings/solution/en.md: -------------------------------------------------------------------------------- 1 | # Success! 2 | 3 | There's nothing strange, right? Everything is obvious. 4 | 5 | In all of the next exercises you will have to add headings with the name of the current exercise. 6 | 7 | In the next exercise we will take a look at emphasis in Markdown. 8 | -------------------------------------------------------------------------------- /exercises/headings/solution/ja.md: -------------------------------------------------------------------------------- 1 | # 成功です! 2 | 3 | 変なところはありませんよね?とても分かりやすいです。 4 | 5 | 次の演習では、現在の演習の名前の見出しを応用する必要があります。 6 | 7 | 次の演習で、Markdownの重点を見ていきます。 8 | -------------------------------------------------------------------------------- /exercises/headings/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Markdown is awesome! 2 | -------------------------------------------------------------------------------- /exercises/headings/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Успіх! 2 | 3 | Там немає нічого дивного, чи не так? Все очевидно. 4 | 5 | У всіх інших вправах ви повинні додати заголовки з ім'ям поточної вправи. 6 | 7 | У наступній вправі ми розглянемо виділення в Markdown. -------------------------------------------------------------------------------- /exercises/headings/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 成功! 2 | 3 | 一点都不陌生,是吗?一切都那么简单。 4 | 5 | 下面的所有练习你都需要在练习的 MarkDown 文件的第一行就上一个一级标题,标题的内容是当前练习的名字。 6 | 7 | 下一个练习我们将学习 Markdown 的强调语法。 8 | -------------------------------------------------------------------------------- /exercises/headings/uk.md: -------------------------------------------------------------------------------- 1 | Заголовки допомагають, коли нам важливо класифікувати інформацію. 2 | 3 | Якщо вам потрібно додати заголовок, просто введіть `#` знак на початку рядка. Кількість `#` є рівнем заголовка. Наприклад: 4 | 5 | # Заголовок 1 6 | ## Заголовок 2 7 | ### Заголовок 3 8 | #### Заголовок 4 9 | ##### Заголовок 5 10 | ###### Заголовок 6 11 | 12 | Як і в HTML, є 6 рівнів заголовків. Ці заголовки будуть перетворені в `

` -`

` теґи відповідно. 13 | 14 | Є псевдоніми для заголовків першого і другого рівня. Ви отримаєте заголовок першого рівня, якщо ввести три `=` знаки на наступному рядку. 15 | Ви можете ввести три `-` на наступному рядку для створення заголовка другого рівня. Наприклад: 16 | 17 | Заголовок 1 18 | === 19 | 20 | Заголовок 2 21 | --- 22 | 23 | ## ЗАВДАННЯ 24 | 25 | Будь ласка, створіть заголовок перший рівень з текстом `Markdown is awesome!` а потім перевірте своє рішення. 26 | 27 | --- 28 | -------------------------------------------------------------------------------- /exercises/headings/zh-cn.md: -------------------------------------------------------------------------------- 1 | 标题语法可以很好的帮助我们对信息做分类,她是很重要的语法。 2 | 3 | 如果你需要添加一个标题,只需要在一行文字的开头输入 `#` 字符。`#` 字符的数量代表标题的级别。例如: 4 | 5 | # 标题 1 6 | ## 标题 2 7 | ### 标题 3 8 | #### 标题 4 9 | ##### 标题 5 10 | ###### 标题 6 11 | 12 | 在 HTML 中,有六种级别的标题。MarkDown 中的标题会根据级别被翻译成 `

`-`

` 相应的 HTML 标记。 13 | 14 | 一级标题和二级标题还有另一种等价的语法。如在一行文字下面输入三个 `=` 号,则创建了一个一级标题。 15 | 在一行文字下面输入三个 `-` 号,则创建了一个二级标题。例如: 16 | 17 | 标题 1 18 | === 19 | 20 | 标题 2 21 | --- 22 | 23 | ## 挑战 24 | 25 | 请创建一个一级标题 `Markdown is awesome!` 的 MarkDown 文件,并检查你的成果。 26 | 27 | --- 28 | -------------------------------------------------------------------------------- /exercises/hello_world/en.md: -------------------------------------------------------------------------------- 1 | _ _ _ _ _ 2 | | |__ _____ __ | |_ ___ | V | | | 3 | | '_ \ / _ \ \ /\ / /____| __/ _ \ ____| |V| |_| |_ 4 | | | | | (_) \ V V /_____| || (_) |____| | | |\ / 5 | |_| |_|\___/ \_/\_/ \__\___/ |_| |_| \_/ 6 | 7 | 8 | Welcome to **how-to-markdown**! 9 | 10 | ### What is Markdown? 11 | 12 | First things first, let's consider what Markdown actually is. 13 | 14 | **Markdown** - is a lightweight, easy-to-read, easy-to-write plain text format for styling all forms of writing around the Internet. Markdown helps to control the display of the document: formatting words as bold or italic, adding images, creating lists and so on. 15 | 16 | Markdown was made by [John Gruber](http://daringfireball.net/) in 2004, with significant collaboration from [Aaron Swartz](http://www.aaronsw.com/). 17 | 18 | Markdown can be written in a basic text editor. It's an easy way to write text that easily translates into HTML. When you write in Markdown, you have to save the document with the `.md` or `.markdown` extensions. 19 | 20 | We can use Markdown almost everywhere: 21 | 22 | * **StackOverflow** uses Markdown for posts and comments. 23 | * **GitHub** uses Markdown for discussions in issues and pull requests. 24 | * **Reddit** uses Markdown for formatting comments. 25 | * **Slack**, **Gitter** and other IM use Markdown for formatting messages. 26 | * **Jekyll**, **Octopress**, **Hexo** and other static site tools use Markdown. 27 | * **GitBook** uses Markdown for writing books. 28 | * Many people prefer to use Markdown for writing their blogs. 29 | * Documentations for many open source project are written in Markdown. 30 | * **how-to-markdown** also uses Markdown for formatting exercises. 31 | 32 | So, knowledge of Markdown is an important skill for modern developers. That's why you have to learn it. 33 | 34 | ### How to get Markdown? 35 | 36 | There is no clearly defined Markdown standard. Markdown is just common rules on how to write readable and formatted text. 37 | 38 | While Markdown is a minimal markup language and is easily read and edited with a normal text editor, there's no need in specially designed editors for writing files in Markdown. However, there are a few editors that preview the files with styles. 39 | 40 | Implementations of Markdown are available for over a dozen programming languages (_JavaScript_, _Ruby_, _Python_, _PHP_, _Perl_, etc). In addition, many platforms and frameworks support Markdown out of the box. For example, Markdown plugins exist for every major blogging platform. 41 | 42 | ### How to use this workshopper? 43 | 44 | It's easy to use this workshopper. In most cases, it's enough to use these three commands for interacting with this workshopper: 45 | 46 | * `how-to-markdown run file.md` will serve a local server at `http://localhost:3000/` with a preview of `file.md`. 47 | * `how-to-markdown verify file.md` will verify your file. 48 | * `how-to-markdown help` shows a help message. 49 | 50 | ## THE CHALLENGE 51 | 52 | You first challenge is pretty simple. Just create a new file (for example using `touch`) and add a single line: 53 | 54 | Hello, world! 55 | 56 | If you already did this, run `how-to-markdown verify` to verify your solution or `how-to-markdown run` to run your file in the browser. 57 | 58 | --- 59 | -------------------------------------------------------------------------------- /exercises/hello_world/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/hello_world/ja.md: -------------------------------------------------------------------------------- 1 | _ _ _ _ _ 2 | | |__ _____ __ | |_ ___ | V | | | 3 | | '_ \ / _ \ \ /\ / /____| __/ _ \ ____| |V| |_| |_ 4 | | | | | (_) \ V V /_____| || (_) |____| | | |\ / 5 | |_| |_|\___/ \_/\_/ \__\___/ |_| |_| \_/ 6 | 7 | 8 | **how-to-markdown**へようこそ! 9 | 10 | ### **Markdownってなに?** 11 | 12 | まずはじめに、Markdownが実際に何をしているか考えて見ましょう。 13 | 14 | **Markdown** - それは気軽で、読みやすく、書きやすく、インターネット上の全ての書体をスタイリングする、平易なテキストフォーマットです。Markdownは、文字をボールド・イタリックに変更したり、画像を追加したり、リストを作ったり、その他さまざまな文書の表現をコントロールするのに役立ちます。 15 | 16 | Markdown は2004年に [John Gruber](http://daringfireball.net/) によって、[Aaron Swartz](http://www.aaronsw.com/)の協力を経て作られました。 17 | 18 | Markdown 一般的なテキストエディターで書くことが出来ます。そして、簡単にHTMLで表現できるテキストを書ける方法です。 Markdownで書くときは、 `.md`または` .markdown`拡張子で文書を保存する必要があります。 19 | 20 | Markdown はどこでも使用可能です: 21 | 22 | * **StackOverflow** では、投稿やコメントでMarkdownが使用できます。 23 | * **GitHub** では、議論やissuesおよびPull requestでMarkdownが使用できます。 24 | * **Reddit** では、コメントでMarkdownが使用できます。 25 | * **Slack**, **Gitter** やほかのIM のメッセージでMarkdownが使用できます。 26 | * **Jekyll**, **Octopress**, **Hexo** やほかの静的なサイトツールでMarkdownが使用できます。 27 | * **GitBook** では、ブックを書く際にMarkdownが使用できます。 28 | * Many people prefer to use Markdown for writing their blogs. 29 | * 多くの人はMarkdownを使ってブログを書くことを好みます。 30 | * **how-to-markdown** はMarkdownの演習として役立ちます。 31 | 32 | Markdownについての知識は、現代の開発者にとって重要なスキルです。ですので、あなたはそれを学ばなければならないのです。 33 | 34 | ### Markdownの入手方法 35 | 36 | Markdownの基準は明確に定義されていません。 Markdownは、読みやすい書式付きテキストの書き方に関する一般的な規則です。 37 | 38 | Markdownは最小限のマークアップ言語であり、通常のテキストエディタで簡単に読み込んで編集できますが、Markdownでファイルを書き込むための特別に設計されたエディタは必要ありません。ただし、スタイルを使用してファイルをプレビューするエディタはいくつかあります。 39 | 40 | Markdownの実装は、十数以上のプログラミング言語(_JavaScript_、_Ruby_、_Python_、_PHP_、_Perl_など)で利用できます。さらに、多くのプラットフォームおよびフレームワークはMarkdownをそのまま使用できます。たとえば、Markdownプラグインは主要なブログプラットフォームごとに存在します。 41 | 42 | ### このワークショップの使い方 43 | 44 | このワークショップを使用するのは簡単です。ほとんどの場合、次の3つのコマンドを使用してこのプログラムと対話するだけで十分です。 45 | 46 | * `how-to-markdown run file.md` で、`file.md` をプレビューするためのローカルサーバー `http://localhost:3000/` を提供します。 47 | * `how-to-markdown verify file.md` で、作成したファイルをチェックします。 48 | * `how-to-markdown help` でヘルプを表示します。 49 | 50 | ## 課題 51 | 52 | 最初の課題はいたってシンプル。`touch`などを使って、新しいファイルを作成し、その中に以下の通り一行追加してください。 53 | 54 | Hello, world! 55 | 56 | 完了したら、`how-to-markdown verify` で解答が正しいか確認するか、`how-to-markdown run`で作成したファイルをブラウザで見てみましょう。 57 | 58 | --- 59 | -------------------------------------------------------------------------------- /exercises/hello_world/solution/en.md: -------------------------------------------------------------------------------- 1 | # You did it! 2 | 3 | Congratulations! You wrote your first paragraph in Markdown! Quite simple, isn't it? 4 | 5 | If you are already familiar with HTML, you may guess that your solution will be rendered in such markup: 6 | 7 | ```html 8 |

Hello, world!

9 | ``` 10 | 11 | Paragraphs are separated by a blank line, so if you need to create two or more paragraphs, you have to write something like this: 12 | 13 | ``` 14 | I am the first paragraph. 15 | 16 | I am the second one. 17 | ``` 18 | 19 | In the next exercise we will take a look at headings in Markdown. 20 | -------------------------------------------------------------------------------- /exercises/hello_world/solution/ja.md: -------------------------------------------------------------------------------- 1 | # カンペキ! 2 | 3 | おめでとうございます! Markdownで最初の段落を書くことが出来ました!とってもシンプルだったでしょう? 4 | 5 | 6 | 既にHTMLに精通している方は、あなたの解答が以下のようなマークアップでレンダリングされると推測できるでしょう。 7 | 8 | ```html 9 |

Hello, world!

10 | ``` 11 | 12 | 段落は空行で区切られているので、2つ以上の段落を作成する必要がある場合は、次のように記述する必要があります。 13 | 14 | ``` 15 | I am the first paragraph. 16 | 17 | I am the second one. 18 | ``` 19 | 20 | 次の演習では、Markdownの見出しを見ていきます。 21 | -------------------------------------------------------------------------------- /exercises/hello_world/solution/solution.md: -------------------------------------------------------------------------------- 1 | Hello, world! 2 | -------------------------------------------------------------------------------- /exercises/hello_world/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Ви зробили це! 2 | 3 | Вітаємо! Ви написали свій перший абзац в Markdown! Досить просто, чи не так? 4 | 5 | Якщо ви вже знайомі з HTML, то можете здогадатися, що ваше рішення буде перетворене в такий розмітці: 6 | 7 | ```html 8 |

Hello, world!

9 | ``` 10 | 11 | Абзаци діляться символом нового рядка, так що якщо вам потрібно створити два або більше абзаців, ви повинні написати щось на зразок цього: 12 | 13 | ``` 14 | Я перший абзац. 15 | 16 | Я другий. 17 | ``` 18 | 19 | У наступній вправі ми розглянемо заголовки в Markdown. 20 | -------------------------------------------------------------------------------- /exercises/hello_world/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 完成! 2 | 3 | 恭喜你!你已经用 MarkDown 写出了第一个段落!非常简单,是不是? 4 | 5 | 如果你了解 HTML。估计你能猜到,刚编写的文档被解释成下面的代码: 6 | 7 | ```html 8 |

Hello, world!

9 | ``` 10 | 11 | 段落之间需要用空行隔开,所以,如果你需要创建两个或多个段落,你需要这样编写文档: 12 | 13 | ``` 14 | 这是第一个段落。 15 | 16 | 这是第二个段落。 17 | ``` 18 | 19 | 下一个练习我们将学习 Markdown 的标题语法。 20 | -------------------------------------------------------------------------------- /exercises/hello_world/uk.md: -------------------------------------------------------------------------------- 1 | _ _ _ _ _ 2 | | |__ _____ __ | |_ ___ | V | | | 3 | | '_ \ / _ \ \ /\ / /____| __/ _ \ ____| |V| |_| |_ 4 | | | | | (_) \ V V /_____| || (_) |____| | | |\ / 5 | |_| |_|\___/ \_/\_/ \__\___/ |_| |_| \_/ 6 | 7 | 8 | Вітаємо в **how-to-markdown**! 9 | 10 | ### Що є Markdown? 11 | 12 | Перш за все, давайте розглянемо чим є Markdown насправді. 13 | **Markdown** - це легкий, читабельний, простий в написанні текстовий формат для укладання всіх форм написання по всьому Інтернету. Markdown дозволяє контролювати відображення документа: форматування слів, як напівжирний шрифт або курсив, додавання зображень, створення списків і так далі. 14 | 15 | Markdown був зроблений [Джоном Грубером](http://daringfireball.net/) в 2004, при значній співпраці з [Аароном Шварцом](http://www.aaronsw.com/). 16 | 17 | Markdown можна писати у вигляді звийчайного текстового редактора. Це простий спосіб для того щоб написати текст, який легко перетворюється на HTML. Ви повинні зберегти Markdown документи з `.md` або `.markdown` розширеннями. 18 | 19 | Ми можемо використовувати Markdown майже всюди: 20 | 21 | * **StackOverflow** використовує Markdown для постів і коментарів. 22 | * **GitHub** використовує Markdown для обговореннях проблем і пул-реквестів. 23 | * **Reddit** використовує Markdown для форматування коментарів. 24 | * **Slack**, **Gitter** та інші інтернет-месенджери використовують Markdown для форматування повідомлень. 25 | * **Jekyll**, **Octopress**, **Hexo** та інші інструменти статичного сайту використовують Markdown. 26 | * **GitBook** використовує Markdown для написання книг. 27 | * Багато людей надають перевагу Markdown для написання своїх блогів. 28 | * Документації для багатьох проектів з відкритим вихідним кодом написані в Markdown. 29 | * **how-to-markdown** також використовує Markdown для форматування вправ. 30 | 31 | Таким чином, знання Markdown є важливим навиком для сучасних розробників. Ось чому ви повинні вивчити його. 32 | 33 | ### Як отримати Markdown? 34 | 35 | Тут нема чітко визначеного стандарту. Markdown це просто загальні правила про те, як писати читабельний і форматований текст. 36 | 37 | Хоча Markdown є простою мовою розмітки і його легко читати та редагувати за допомогою звичайного текстового редактора, немає ніякої необхідності в спеціально призначених для редакторів для запису файлів в Markdown. Тим не менш, є кілька редакторів, які дозволяють попередньо переглянути файли зі стилями. 38 | 39 | Реалізації Markdown доступні для більш ніж десятка мов програмування (_JavaScript_, _Ruby_, _Python_, _PHP_, _Perl_ та інші). Крім того, багато платформ і фреймворків підтримують Markdown з коробки. Наприклад, плагіни Markdown існують для всіх основних платформ блогінгу. 40 | 41 | ### Як користуватися воркшопом? 42 | 43 | Досить легко використовувати цей воркшоп. У більшості випадків цього достатньо використовувати ці три команди для взаємодії з цим воркшопом: 44 | 45 | * `how-to-markdown run file.md` створить локальний сервер на `http://localhost:3000/` з попереднім переглядом файлу `file.md`. 46 | * `how-to-markdown verify file.md` перевірятиме ваш файл. 47 | * `how-to-markdown help` покаже повідомлення довідки. 48 | 49 | ## ЗАВДАННЯ 50 | 51 | Ваше перше завдання досить просте. Просто створіть новий файл (наприклад, з використанням `touch`) і додайте один рядок: 52 | 53 | Hello, world! 54 | 55 | Якщо ви вже зробили це, запустіть `how-to-markdown verify` щоб перевірити ваше рішення або `how-to-markdown run` щоб запустити файл в браузері. 56 | 57 | --- 58 | -------------------------------------------------------------------------------- /exercises/hello_world/zh-cn.md: -------------------------------------------------------------------------------- 1 | _ _ _ _ _ 2 | | |__ _____ __ | |_ ___ | V | | | 3 | | '_ \ / _ \ \ /\ / /____| __/ _ \ ____| |V| |_| |_ 4 | | | | | (_) \ V V /_____| || (_) |____| | | |\ / 5 | |_| |_|\___/ \_/\_/ \__\___/ |_| |_| \_/ 6 | 7 | 8 | 欢迎使用 **how-to-markdown** 教程! 9 | 10 | ## Markdown 是什么? 11 | 12 | 首先,我们需要了解 MarkDown 到底是什么。 13 | 14 | **Markdown** - 是一种轻量的、易于书写的、纯文本格式的语法,用来在互联网上书写带有格式的文档。Markdown 用来控制文档的样式,包括:文字的粗体、斜体,在文档中添加图片,创建列表,等等。 15 | 16 | Markdown 是由 [John Gruber](http://daringfireball.net/) 与 [Aaron Swartz](http://www.aaronsw.com/) 在 2004 年合作发明的。 17 | 18 | Markdown 文档可以在最简单的文本编辑器中编写。可以很方便的把文本转换成 HTML 网页。当你编写 Markdown 文档时,你需要把文件保存成 `.md` 或 `.markdown` 扩展名。 19 | 20 | 你可以在几乎所有的地方使用 Markdown: 21 | 22 | * **StackOverflow** 使用 Markdown 来发帖或者评论。 23 | * **GitHub** 使用 Markdown 提交 issues 讨论问题或者 pull requests。 24 | * **Reddit** 使用 Markdown 来格式化评论。 25 | * **Slack**, **Gitter** 和其他的 IM(即时通讯工具)使用 Markdown 来格式化消息。 26 | * **Jekyll**, **Octopress**, **Hexo** 以及其他静态网站工具使用 Markdown 来发布网站内容。 27 | * **GitBook** 使用 Markdown 来编写电子书。 28 | * 很多人用 Markdown 来写博客日志。 29 | * 很多开源项目的文档用 Markdown 来编写。 30 | * **how-to-markdown** 也用 Markdown 来格式化练习题。 31 | 32 | 因此,掌握 MarkDown 语法是现代开发人员的一项重要技能。这就是为什么你需要学习她的理由。 33 | 34 | ### 如何得到 Markdown? 35 | 36 | 并不存在一个明确的 Markdown 标准规范。Markdown 只是如何编写可读性强又具有格式的文档的一系列通用规则。 37 | 38 | 因为 Markdown 是一个精炼的标记语言,在文本编辑工具中很容易阅读和编写,所以,并不需要为编写 MarkDown 文档设计特殊的文字编辑软件。然而,只有少部分文本编辑工具能提供文档的样式预览功能。 39 | 40 | 超过一打的编程语句实现了 MarkDown(包括:_JavaScript_, _Ruby_, _Python_, _PHP_, _Perl_, 等等)。此外,很多平台和框架支持 Markdown。例如,很多主流的博客平台都支持 Markdown 插件。 41 | 42 | ### 如何使用本教程? 43 | 44 | 本教程很容易使用。大部分情况只需要使用三个命令: 45 | 46 | * `how-to-markdown run file.md` 将启动一个本地服务 `http://localhost:3000/` 来预览 `file.md`。 47 | * `how-to-markdown verify file.md` 来检查你的文件是否正确。 48 | * `how-to-markdown help` 显示一个帮助信息。 49 | 50 | ## 挑战 51 | 52 | 你的第一个挑战非常简单。只需要新建一个文件(例如:`touch.md`)并且添加一行文字: 53 | 54 | Hello, world! 55 | 56 | 如果已经完成,请运行 `how-to-markdown verify` 来检查你的成果或者运行 `how-to-markdown run` 在浏览器中预览你的文件。 57 | 58 | --- 59 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/en.md: -------------------------------------------------------------------------------- 1 | Sometimes we have to divide some information. In HTML we use the `
` tag, which means _**h**orizontal **r**ule_. 2 | 3 | There's nothing hard to make a horizontal rule in Markdown. Just type three or more dashes (`-`), asterisks (`*`) or underscores (`_`): 4 | 5 | Dashes 6 | 7 | --- 8 | 9 | Asterisks 10 | 11 | *** 12 | 13 | Underscores 14 | 15 | ___ 16 | 17 | And it will turn into: 18 | 19 | Dashes 20 | 21 | --- 22 | 23 | Asterisks 24 | 25 | *** 26 | 27 | Underscores 28 | 29 | ___ 30 | 31 | 32 | As you may remember from the _Headings_ exercise, three dashes on the next line makes a second-level heading. To avoid this behavior, just add an empty line between text and these dashes. 33 | 34 | ## THE CHALLENGE 35 | 36 | Please add a `Horizontal rules` heading and add a horizontal rule right after this heading. 37 | 38 | That's it. Just verify your solution. 39 | 40 | --- 41 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/ja.md: -------------------------------------------------------------------------------- 1 | 時と場合によっては、いくつかの情報を分割する必要があります。 HTMLでは、
タグを使用します。これは、 _**h**orizontal **r**ule_ を意味します。 2 | 3 | Markdownで水平なルールを作るのは難しいことではありません。 3つ以上のダッシュ(`-`)、アスタリスク(`*`)またはアンダースコア(`_`)を入力するだけです。 4 | 5 | ダッシュ 6 | 7 | --- 8 | 9 | アスタリスク 10 | 11 | *** 12 | 13 | アンダースコア 14 | 15 | ___ 16 | 17 | それは次のように変わります。 18 | 19 | ダッシュ 20 | 21 | --- 22 | 23 | アスタリスク 24 | 25 | *** 26 | 27 | アンダースコア 28 | 29 | ___ 30 | 31 | 32 | _Headings_演習で覚えているように、次の行の3つのダッシュは2番目の見出しになります。 この動作を回避するには、テキストとこれらのダッシュの間に空の行を追加するだけです。 33 | 34 | ## 課題 35 | 36 | `Horizontal rule` ヘッダーを追加し、この見出しの直後に水平ルールを追加してください。 37 | 38 | それだけです。 あとは解答を確認するだけです。 39 | 40 | --- 41 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/solution/en.md: -------------------------------------------------------------------------------- 1 | # Nice job! 2 | 3 | It was a pretty easy exercise, but sometimes horizontal rules are very handy, so you should know how to create them. 4 | 5 | In the next exercise we will take a look at inline HTML in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/solution/ja.md: -------------------------------------------------------------------------------- 1 | # グッジョブ! 2 | 3 | かなり簡単なエクササイズでしたが、水平罫線はとても便利なので、作成する方法を知って損はありません。 4 | 5 | 次の演習では、MarkdownのインラインHTMLを見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Horizontal rules 2 | 3 | --- 4 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Хороша робота! 2 | 3 | Це була досить проста вправа, але іноді горизонтальні лінії дуже зручні. Тому ви повинні знати як їх створювати. 4 | 5 | У наступній вправі ми розглянемо вбудування HTML в Markdown. 6 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 出色的工作! 2 | 3 | 这个练习很简单吧。因为水平分隔线经常能用到,所以,你应该掌握如何创建它。 4 | 5 | 下一个练习我们将学习 Markdown 的 HTML 语法。 6 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/uk.md: -------------------------------------------------------------------------------- 1 | Іноді нам необхіднно розділити деяку інформацію. В HTML ми використовуємо `
` теґ для _**г**оризонтальної **л**інії_. 2 | 3 | Немає нічого складно зробити горизонтальну лінію в Markdown. Просто введіть три або більше дефіси (`-`), зірочки (`*`) чи підкреслення (`_`): 4 | 5 | Дефіси 6 | 7 | --- 8 | 9 | Зірочки 10 | 11 | *** 12 | 13 | Підкреслення 14 | 15 | ___ 16 | 17 | І воно перетвориться в: 18 | 19 | Дефіси 20 | 21 | --- 22 | 23 | Зірочки 24 | 25 | *** 26 | 27 | Підкреслення 28 | 29 | ___ 30 | 31 | 32 | Як ви пам'ятаєте з вправи _Заголовки_, три тире на наступному рядку робить заголовок другого рівня. Щоб уникнути цього, просто додайте порожній рядок між текстом і цими рисками. 33 | 34 | ## ЗАВДАННЯ 35 | 36 | Будь ласка, додайте `Horizontal rules` як заголовок і додайте горизонтальну лінію відразу після цього заголовка. 37 | 38 | Це все. Просто перевірте своє рішення. 39 | 40 | --- 41 | -------------------------------------------------------------------------------- /exercises/horizontal_rules/zh-cn.md: -------------------------------------------------------------------------------- 1 | 有时我们需要将信息分隔开。在 HTML 中我们使用 `
` 标记,这个标记是两个单词的首字母缩写:_**h**orizontal **r**ule_。 2 | 3 | MarkDown 中添加水平分隔线毫无难度。只需要输入三个横线(星号或下划线)即可。 4 | 5 | 横线 6 | 7 | --- 8 | 9 | 星号 10 | 11 | *** 12 | 13 | 下划线 14 | 15 | ___ 16 | 17 | 上面代码的效果如下: 18 | 19 | 横线 20 | 21 | --- 22 | 23 | 星号 24 | 25 | *** 26 | 27 | 下划线 28 | 29 | ___ 30 | 31 | 32 | 你应该还记得在 _标题_练习中,三个下划线会让上一行文字变成二级标题。为了避免这种情况,需要在文本和三个下划线中间插入一个空行。 33 | 34 | ## 挑战 35 | 36 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Horizontal rules`。 37 | 38 | 请在标题的后面增加一个分隔线。 39 | 40 | 完成后,请检查你的文件。 41 | 42 | --- 43 | -------------------------------------------------------------------------------- /exercises/html/en.md: -------------------------------------------------------------------------------- 1 | If you want to style something more than is allowed in Markdown, you can use raw HTML in your Markdown and it'll work pretty well. 2 | 3 |

Centered text works well!

4 | 5 | And you will get a centered paragraph. 6 | 7 | Sometimes it's helpful, but be careful! Markdown inside HTML won't be rendered! That means if you write something like this: 8 | 9 | Markdown **won't** work here! 10 | 11 | It won't work. 12 | 13 | ## THE CHALLENGE 14 | 15 | Add `HTML` as the first-level heading. 16 | 17 | Below, use HTML for centering this text: 18 | 19 | HTML in Markdown 20 | 21 | Verify your solution. 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /exercises/html/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/html/ja.md: -------------------------------------------------------------------------------- 1 | Markdownで許可されているものよりも多くのものをスタイルしたい場合は、MarkdownでHTMLを使うことができます。 2 | 3 |

Centered text works well!

4 | 5 | これで、中央揃えの段落が作れます。 6 | 7 | ときどき訳にたちますが、注意してください! HTML内のマークダウンはレンダリングされません! つまり、次のような記述をすれば 8 | 9 | Markdown **won't** work here! 10 | 11 | それは動作しません。 12 | 13 | ## 課題 14 | 15 | 第1レベル見出しとして`HTML`を追加してください。 16 | 17 | 以下のテキストをセンタリングするためにHTMLを使用します。 18 | 19 | HTML in Markdown 20 | 21 | 解答を確認しましょう。 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /exercises/html/solution/en.md: -------------------------------------------------------------------------------- 1 | # Works! 2 | 3 | You can use HTML for creating anything you want: definition lists, embedding posts from social networks, embedding videos from YouTube, etc. Just type HTML tags right in your Markdown document and see how it works. 4 | 5 | In the next exercise we will take a look at GFM in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/html/solution/ja.md: -------------------------------------------------------------------------------- 1 | # OKです! 2 | 3 | 定義リスト、ソーシャルネットワークからの投稿の埋め込み、YouTubeからの動画の埋め込みなど、HTMLを使用して任意のものを作成することができます。Markdown文書のHTMLタグを入力し、その動作を確認してください。 4 | 5 | 次の練習ではMarkdownのGFMを見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/html/solution/solution.md: -------------------------------------------------------------------------------- 1 | # HTML 2 | 3 |

HTML in Markdown

4 | -------------------------------------------------------------------------------- /exercises/html/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Працює! 2 | 3 | Ви можете використовувати HTML для створення всього що необхідно: списки визначень, вбудованих повідомлень з соціальних мереж, вбудовування відео з YouTube і т.д. Просто введіть HTML-тег прямо в Markdown документі і подивіться на результат. 4 | 5 | У наступній вправі ми розглянемо на GFM в Markdown. -------------------------------------------------------------------------------- /exercises/html/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 完工! 2 | 3 | 你可以使用 HTML 编写任何内容:定义列表,嵌入社交网络中的内容,嵌入 YouTube 视频,等等。只需要在你的 MarkDown 文档的合适位置插入 HTML 标记即可。 4 | 5 | 下一个练习我们将学习 Markdown 的 GFM 语法。 6 | -------------------------------------------------------------------------------- /exercises/html/uk.md: -------------------------------------------------------------------------------- 1 | Якщо ви хочете стилізувати щось більше ніж це дозволено в Markdown, ви можете використовувати HTML у вашому Markdown, і він буде працювати дуже добре. 2 | 3 |

Центрований текст добре працює!

4 | 5 | І ви отримаєте центрований абзац. 6 | 7 | Іноді це корисно, але будьте обережні! Markdown всередині HTML не буде опрацьований! Це означає, що якщо ви напишете щось на зразок цього: 8 | 9 | Markdown **не буде** працювати тут! 10 | 11 | Він не працюватиме. 12 | 13 | ## ЗАВДАННЯ 14 | 15 | Додайте `HTML`в якості заголовка першого рівня. 16 | 17 | Нижче використовуйте HTML для центрування цього тексту: 18 | 19 | HTML in Markdown 20 | 21 | Перевірте своє рішення. 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /exercises/html/zh-cn.md: -------------------------------------------------------------------------------- 1 | 如果你想对文档做更多的格式化,而这些格式超出了 MarkDown 的能力范围,你可以使用 HTML 标记,MarkDown 对 HTML 能够很好地兼容。 2 | 3 |

可以很好地将文本居中。

4 | 5 | 这样你就可以得到一个居中的段落。 6 | 7 | 这个功能非常有用,但是需要小心。HTML 内部的 MarkDown 语法会无效!如果你按下面的方式编写文档: 8 | 9 | Markdown **不能** 正常工作! 10 | 11 | 它不能正常工作。 12 | 13 | ## 挑战 14 | 15 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `HTML`。 16 | 17 | 接下来,使用 HTML 将下面的文字居中: 18 | 19 | HTML in Markdown 20 | 21 | 完成后,请检查你的文件。 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /exercises/images/en.md: -------------------------------------------------------------------------------- 1 | The embedding of images is very similar to insertion of links. To embed an image you have to use this syntax: 2 | 3 | ![alt text](url) 4 | 5 | As you may see, the only difference is that you have to add an exclamation mark before squared brackets. `alt text` is an alternate text for an image (similar to `alt` attribute in HTML). `url` is the URL of an image (similar to `src` attribute in HTML). 6 | 7 | The reference style also works for images. You can do something like this: 8 | 9 | ![reference style][logo] 10 | 11 | [logo]: ./logo.png 12 | 13 | ## THE CHALLENGE 14 | 15 | Add a first-level heading with `Images` text inside. 16 | 17 | Let's say we have a Markdown logo on this URL: `http://bit.do/how-to-markdown` 18 | 19 | Below, you should create a inline-style image with `Markdown logo` as alternate text and `http://bit.do/how-to-markdown` as URL. 20 | 21 | --- 22 | -------------------------------------------------------------------------------- /exercises/images/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/images/ja.md: -------------------------------------------------------------------------------- 1 | 画像の埋め込みは、リンクの挿入と非常によく似ています。イメージを埋め込むには、次の構文を使用する必要があります。 2 | 3 | ![alt text](url) 4 | 5 | ご覧のように、括弧の前に感嘆符を付ける必要がある点のみが異なります。`alt text`はイメージの代替テキストです(HTMLの `alt` 属性に似ています)。 `url` はイメージのURLです(HTMLの `src` 属性に似ています)。 6 | 7 | 参照スタイルは画像にも適用されます。たとえば、次のようなことができます。 8 | 9 | ![reference style][logo] 10 | 11 | [logo]: ./logo.png 12 | 13 | ## 課題 14 | 15 | `Images` というテキストで第1レベルの見出しを追加します。 16 | 17 | Let's say we have a Markdown logo on this URL: `http://bit.do/how-to-markdown` 18 | 19 | このURLにMarkdownロゴがあるとしましょう→ `http://bit.do/how-to-markdown` 20 | 21 | `Markdown logo` を代替テキストとして、 `http://bit.do/how-to-markdown` をURLとして、インラインスタイルのイメージを作成してみましょう。 22 | 23 | 完了したら、解答を確認してください。 24 | 25 | --- 26 | -------------------------------------------------------------------------------- /exercises/images/solution/en.md: -------------------------------------------------------------------------------- 1 | # Cool! 2 | 3 | Now you learned how to add an image in Markdown. This is a common style for images, but some parsers provide additional tools for alignment, adding classes and other styles. 4 | 5 | In the next exercise we will take a look at blockquotes in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/images/solution/ja.md: -------------------------------------------------------------------------------- 1 | # クール! 2 | 3 | Markdownで画像を追加する方法を学びました。これはイメージの一般的なスタイルですが、一部のパーザーは、アライメント、クラスやその他のスタイルの追加のための追加ツールを提供します。 4 | 5 | 次の練習ではMarkdownの引用について見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/images/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Images 2 | 3 | ![Markdown logo](http://bit.do/how-to-markdown) 4 | -------------------------------------------------------------------------------- /exercises/images/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Круто! 2 | 3 | Тепер ви дізналися, як додати зображення в Markdown. Це загальний стиль для зображень, але деякі парсери надають додаткові інструменти для вирівнювання, додаючи класи та інші стилі. 4 | 5 | У наступній вправі ми розглянемо цитати в Markdown. 6 | -------------------------------------------------------------------------------- /exercises/images/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 酷! 2 | 3 | Now you learned how to create a link in Markdown. This is a common style for links, but some parsers provide additional tools for alignment, adding classes and other styles. 4 | 5 | 下一个练习我们将学习 Markdown 的引用语法。 6 | -------------------------------------------------------------------------------- /exercises/images/uk.md: -------------------------------------------------------------------------------- 1 | Вкладення зображень дуже схоже на вставку посилань. Для того, щоб вставити зображення, ви повинні використовувати цей синтаксис: 2 | 3 | ![alt text](url) 4 | 5 | Як бачите, єдина відмінність полягає в тому, що ви повинні додати знак оклику перед тим квадратом дужки. `alt text` це альтернативний текст для зображення (аналогічно атрибуту `alt` в HTML). `url` є URL адресою зображення (за аналогією з атрибутом `src` в HTML). 6 | 7 | Вказівний стиль також працює для зображень. Ви можете зробити щось на зразок цього: 8 | 9 | ![Вказівний стиль][logo] 10 | 11 | [logo]: ./logo.png 12 | 13 | ## ЗАВДАННЯ 14 | 15 | Додати заголовок першого рівня `Images`. 16 | 17 | Скажімо, у нас є Markdown логотип на цьому URL: `http://bit.do/how-to-markdown` 18 | 19 | Нижче, ви повинні створити зображення в рядковому стилі з альтернативним текстом `Markdown logo` і URL `http://bit.do/how-to-markdown`. 20 | 21 | --- 22 | -------------------------------------------------------------------------------- /exercises/images/zh-cn.md: -------------------------------------------------------------------------------- 1 | 在文档中嵌入图片和插入链接的操作类似。嵌入图片时,你需要使用下面的 MarkDown 语法: 2 | 3 | ![alt text](url) 4 | 5 | 正如你所见,和插入链接的语法唯一的区别是在方括号前多了一个感叹号。`alt text` 是图片的可选文本(类似 HTML 中的 `alt` 属性)。`url` 是图片的 URL 地址(类似 HTML 中的 `src` 属性)。 6 | 7 | 引用式同样对图片适用。你可以按照下面的方式书写: 8 | 9 | ![reference style][logo] 10 | 11 | [logo]: ./logo.png 12 | 13 | ## 挑战 14 | 15 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Images`。 16 | 17 | 现在我们在 `http://bit.do/how-to-markdown` 地址有一个 MarkDown logo 图片。 18 | 19 | 请添加一个嵌入类型的图片,可选文本是 `Markdown logo`,URL 地址是:`http://bit.do/how-to-markdown`。 20 | 21 | 完成后,请检查你的文件。 22 | 23 | --- 24 | -------------------------------------------------------------------------------- /exercises/links/en.md: -------------------------------------------------------------------------------- 1 | We often need to make a reference for something. There are two ways to create links: _inline-style_ and _reference-style_. 2 | 3 | By the way, the easiest way to create a link is to just paste the link into a Markdown file. URLs and URLs in angle brackets will automatically get turned into links: 4 | 5 | http://www.example.com or 6 | 7 | **|>** http://www.example.com or 8 | 9 | ### Inline style 10 | 11 | Links in Markdown have this format: 12 | 13 | [text](href "alt") 14 | 15 | Above, `text` is text that will be a link, `href` is your reference to the resource (similar to `href` attribute in HTML), `alt` is an alternative text for link (similar to `alt` attribute in HTML). Text in a link may have any formatting, which means you are able to use emphasis in your links, if needed. 16 | 17 | Here are more real world examples: 18 | 19 | [Google](https://www.google.com) 20 | [Google Homepage](https://www.google.com "Google Homepage") 21 | 22 | ## Reference style 23 | 24 | Sometimes you have to use the same link in different places, so it would be convenient to use one reference for all of these links. So you may do this like so: 25 | 26 | [NodeSchool Site][ref] 27 | [GitHub][1] 28 | [Remark parser] 29 | 30 | Some text to show that the reference links can follow later: 31 | 32 | [ref]: http://www.nodeschool.io 33 | [1]: https://github.com/ 34 | [Remark parser]: http://remark.js.org/ 35 | 36 | As you may notice above, references are case-insensitive and you are free to use numbers for creating references or use link text itself as its reference. 37 | 38 | ## THE CHALLENGE 39 | 40 | At the top of the file, add a first-level heading with `Links` text. 41 | 42 | Here you have some text: 43 | 44 | how-to-markdown is a workshopper that teaches you how to write Markdown. 45 | 46 | Please, copy this text to the new file and mark **'how-to-markdown'** phrase as reference-style link with reference to itself. Below in your file, add a relevant reference which will reference to the `//git.io/how-to-markdown`. 47 | 48 | When you are done, please, verify your solution. 49 | 50 | --- 51 | -------------------------------------------------------------------------------- /exercises/links/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/links/ja.md: -------------------------------------------------------------------------------- 1 | 私たちはしばしば、何かを参考にする必要があります。 リンクを作成するには、_inline-style_ と _reference-style_ の2つの方法があります。 2 | 3 | ところで、リンクを作成する最も簡単な方法はリンクをMarkdownファイルに貼り付けることです。山括弧で囲まれたURLとURLは自動的にリンクに変わります. 4 | 5 | 6 | http://www.example.com or 7 | 8 | **|>** http://www.example.com or 9 | 10 | ### Inline style 11 | 12 | Markdownのリンクは次の形式です。 13 | 14 | [text](href "alt") 15 | 16 | 17 | 上記の `text`はリンクとなるテキストで、`href`はリソースへの参照(HTMLの `href`属性に似ています)、`alt`はリンクの代替テキストです( `alt`属性に似ていますHTML)。リンク内のテキストには書式が設定されているため、必要に応じてリンク内で強調を使用することができます。 18 | 19 | 20 | より現実的な例がこちらです。 21 | 22 | [Google](https://www.google.com) 23 | [Google Homepage](https://www.google.com "Google Homepage") 24 | 25 | ## Reference style 26 | 27 | 場合によっては、同じリンクを別の場所で使用する必要があるため、これらのリンクすべてに対して1つの参照を使用すると便利です。そのときは、こうすることが出来ます。 28 | 29 | 30 | [NodeSchool Site][ref] 31 | [GitHub][1] 32 | [Remark parser] 33 | 34 | 35 | 参照リンクがついているいくつかのテキスト: 36 | 37 | [ref]: http://www.nodeschool.io 38 | [1]: https://github.com/ 39 | [Remark parser]: http://remark.js.org/ 40 | 41 | 上記のように、参照は大文字と小文字を区別しません。参照を作成するために数値を使用するか、リンクテキスト自体を参照として使用することは自由です。 42 | 43 | ## 課題 44 | 45 | ファイルの一番上に、第一レベル見出しとして `Links`テキストを追加します。 46 | 47 | ここにいくつかのテキストがあります: 48 | 49 | how-to-markdown is a workshopper that teaches you how to write Markdown. 50 | 51 | このテキストを新しいファイルにコピーして、**'how-to-markdown'** フレーズをリファレンススタイルのリンクとしてマークしてください。あなたのファイルの下に `//git.io/how-to-markdown`を参照するリファレンスを追加してください。 52 | 53 | 54 | 完了したら、解答を確認してください。 55 | 56 | --- 57 | -------------------------------------------------------------------------------- /exercises/links/solution/en.md: -------------------------------------------------------------------------------- 1 | # Amazing! 2 | 3 | References are very handy in cases when you have to write a big document, such as documentation for your project. If you have a lot of links and you want to easily manage them, you can create a section at the bottom of your file and leave all your references there. For example: 4 | 5 | A lot of text. Many [useful] and [important] information here. 6 | 7 | 8 | [useful]: http://useful.site 9 | [important]: https://important.site 10 | 11 | Above, `` is an HTML-comment that will be omit. You can skip this comment, but actually it helps to recognize a section with references. This approach helps you to keep track of all of your links. 12 | 13 | By the way, references also work for images as well! 14 | 15 | In the next exercise we will take a look at images in Markdown. 16 | -------------------------------------------------------------------------------- /exercises/links/solution/ja.md: -------------------------------------------------------------------------------- 1 | # 驚愕! 2 | 3 | 参照は、プロジェクトのドキュメントなど大きなドキュメントを作成する必要がある場合に非常に便利です。 リンクがたくさんあり、簡単に管理したい場合は、ファイルの一番下にセクションを作成してそこにすべての参照を残すことができます。 4 | 例えば以下の通り。 5 | 6 | A lot of text. Many [useful] and [important] information here. 7 | 8 | 9 | [useful]: http://useful.site 10 | [important]: https://important.site 11 | 12 | 上記の `` は表示されないHTMLコメントです。 このコメントはなくても問題ありませんが、実際には参照があるセクションを認識するのに便利です。 この方法は、すべてのリンクを把握するのに役立ちます。 13 | 14 | ちなみに、参考文献は画像に対しても同じようにはたらきます! 15 | 16 | 次の演習では、Markdownの画像について見ていきます。 17 | -------------------------------------------------------------------------------- /exercises/links/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Links 2 | 3 | [how-to-markdown] is a workshopper that teaches you how to write Markdown. 4 | 5 | [how-to-markdown]: //git.io/how-to-markdown 6 | -------------------------------------------------------------------------------- /exercises/links/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Дивовижно! 2 | 3 | Вказівники використовувати дуже зручно в тих випадках, коли необхідно написати великий документ, наприклад, документацію для вашого проекту. Якщо у вас є багато посилань і ви хочете легко керувати ними, то можете створити розділ в нижній частині файлу і залишити всі вказівники там. Наприклад: 4 | 5 | Багато тексту. [корисна] і [важлива] інформації тут. 6 | 7 | 8 | [корисна]: http://useful.site 9 | [важлива]: https://important.site 10 | 11 | Вище, `` є HTML-коментарем, який буде пропущено. Ви можете пропустити цей коментар, але насправді він допомагає показати розділ з посиланнями. Такий підхід допоможе вам відстежувати всі ваші посилання. 12 | 13 | До речі, посилання також працюють для зображень! 14 | 15 | У наступній вправі ми розглянемо зображення в Markdown. 16 | -------------------------------------------------------------------------------- /exercises/links/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 难以置信! 2 | 3 | 当你在项目中编写长文档时引用非常有用。如果你有很多链接并且希望轻松的管理他们,你可以把这些链接放到文档的末尾。就像下面的代码一样: 4 | 5 | 这里是文档正文。这里有很多[有用]的以及[重要]的信息。 6 | 7 | 8 | [有用]: http://useful.site 9 | [重要]: https://important.site 10 | 11 | 上面的代码中,`` 是一个 HTML 注释,MarkDown 会忽视它。你可以跳过这个注释文字,但是实际上这个注释文字可以帮助你把文档内容有效的组织成两个部分,其中一部分来放引用。这种方式可以帮助你来管理文档中的所有链接。 12 | 13 | 顺便说提一下,图片引用和文字引用语法类似。 14 | 15 | 下一个练习我们将学习 Markdown 的图片语法。 16 | -------------------------------------------------------------------------------- /exercises/links/uk.md: -------------------------------------------------------------------------------- 1 | Нам часто необхідно зробити посилання на щось. Є два способи створення посилання: _рядковий_ та _вказівний_ стиль. 2 | 3 | До речі, найпростіший спосіб створити посилання - просто вставити посилання в файл Markdown. URL-адреси та URL-адреси в кутових дужках автоматично перетворюються в посилання: 4 | 5 | http://www.example.com чи 6 | 7 | **|>** http://www.example.com чи 8 | 9 | ### Рядковий стиль 10 | 11 | Посилання в Markdown мають цей формат: 12 | 13 | [text](href "alt") 14 | 15 | Вище `text` - це текст посилання, `href` - це ваше посилання на ресурс (схоже на `href` атрибут в HTML), `alt` - альтернативний текст для посилання (схоже на `alt` атрибут в HTML). Текст в посиланні може мати будь-яке форматування, тобто ви можете використовувати будь-які виділення в посиланнях якщо це необхідно. 16 | 17 | Ось ще приклади: 18 | 19 | [Google](https://www.google.com) 20 | [Google Homepage](https://www.google.com "Google Homepage") 21 | 22 | ## Вказівний стиль 23 | 24 | Іноді ви повинні використовувати те саме посилання в різних місцях, тому було б зручно використовувати один вказівник на всі ці посилання. Таким чином, ви можете зробити це в такий спосіб: 25 | 26 | [NodeSchool Site][ref] 27 | [GitHub][1] 28 | [Remark parser] 29 | 30 | Якийсь текст, щоб показати, що вказівки на посилання можуть слідувати пізніше: 31 | 32 | [ref]: http://www.nodeschool.io 33 | [1]: https://github.com/ 34 | [Remark parser]: http://remark.js.org/ 35 | 36 | Як ви можете помітити вище, посилання чутливі до регістру і ви можете використовувати цифри для створення посилань або використовуйте текст посилання в якості вказівника. 37 | 38 | ## ЗАВДАННЯ 39 | 40 | У верхній частині файлу, додайте заголовок першого рівеня `Links` . 41 | 42 | Тут у вас є який-небудь текст: 43 | 44 | how-to-markdown is a workshopper that teaches you how to write Markdown. 45 | 46 | Будь ласка, скопіюйте цей текст в новий файл і позначте фразу **'how-to-markdown'** в якості посилання вказівного стилю з вказівкою на себе. Нижче в файлі, додайте відповідне посилання, яка буде посилатися на `//git.io/how-to-markdown`. 47 | 48 | Коли ви закінчите, будь ласка, перевірте ваше рішення. 49 | 50 | --- 51 | -------------------------------------------------------------------------------- /exercises/links/zh-cn.md: -------------------------------------------------------------------------------- 1 | 文档中我们经常需要引用一些东西。有两种创建链接的方式: _内嵌式_和 _引用式_。 2 | 3 | 其实,创建链接的最简单方式就是直接在 MarkDown 文档中粘贴一个 URL 地址。 URL 地址或者在尖角号中的 URL 地址都会被翻译成超链接: 4 | 5 | http://www.example.com or 6 | 7 | **|>** http://www.example.com or 8 | 9 | ### 内嵌式 10 | 11 | MarkDown 语法中链接的写法如下: 12 | 13 | [text](href "alt") 14 | 15 | 上面表达式中,`text` 是超链接的文字,`href` 是你引用的资源(跟 HTML 中的 `href` 属性相同),`alt` 是超链接的替代文本(与 HTML 中的 `alt` 属性相同)。超链接的文本可以带格式,也就是说,如果需要,你可以对超链接的文字进行强调。 16 | 17 | 下面是更实际的例子: 18 | 19 | [谷歌](https://www.google.com) 20 | [谷歌主页](https://www.google.com "谷歌主页") 21 | 22 | ## 引用式 23 | 24 | 有些时候,你可能在多个地方使用相同的链接。在多个地方使用同一个引用,引用式会非常方便。你可以这样编写链接: 25 | 26 | [NodeSchool Site][ref] 27 | [GitHub][1] 28 | [Remark parser] 29 | 30 | 下面是这些链接所引用的资源: 31 | 32 | [ref]: http://www.nodeschool.io 33 | [1]: https://github.com/ 34 | [Remark parser]: http://remark.js.org/ 35 | 36 | 你可能已经注意到了,引用是大小写不敏感的,并且对于已经创建好的引用你可以使用任意多次,或者链接文字本身作为它的引用。 37 | 38 | ## 挑战 39 | 40 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Links`。 41 | 42 | 这里有一些文字: 43 | 44 | how-to-markdown is a workshopper that teaches you how to write Markdown. 45 | 46 | 请把这些文字复制到文件中,并且标记**'how-to-markdown'** 短语为引用式链接,引用自身。文件的后面添加一个相对链接,链接指向的资源是 `//git.io/how-to-markdown`。 47 | 48 | 完成后,请检查你的文件。 49 | 50 | --- 51 | -------------------------------------------------------------------------------- /exercises/lists/en.md: -------------------------------------------------------------------------------- 1 | Lists are important for structured information. There is nothing hard in the creation of lists in Markdown. Just insert an asterisk (`*`) or a dash (`-`) before each item for an unordered list or a number with a dot for an ordered one (e.g., 1., 2., 3.). 2 | 3 | ### Unordered lists 4 | 5 | Here is an example of an unordered list: 6 | 7 | * item1 8 | * item2 9 | * item3 10 | 11 | And it will be transformed to something like this: 12 | 13 | * item1 14 | * item2 15 | * item3 16 | 17 | Dashes work as well: 18 | 19 | - first item with dash 20 | - second item with dash 21 | 22 | Goes to: 23 | 24 | - first item with dash 25 | - second item with dash 26 | 27 | ### Ordered lists 28 | 29 | Here is an example of a simple ordered list: 30 | 31 | 1. item1 32 | 2. item2 33 | 3. item3 34 | 35 | Which will be transformed into: 36 | 37 | 1. item1 38 | 2. item2 39 | 3. item3 40 | 41 | As you may see, this notation is very intuitive and readable. 42 | 43 | ### Nested lists 44 | 45 | There is nothing hard about making a nested list. Just add a tab, or spaces for nested elements such as: 46 | 47 | - element 1 48 | - element 1.1 49 | - element 1.2 50 | - element 2 51 | - element 2.1 52 | - element 3 53 | 54 | For lists with `*` and ordered lists it works as well. 55 | 56 | ## THE CHALLENGE 57 | 58 | In the new file add a first-level heading with `Lists` as content. 59 | 60 | Try to write your own list. Please create a new file and create an unordered list in it: 61 | 62 | - One 63 | - 1.1 64 | - 1.2 65 | - Two 66 | - 2.1 67 | - 2.2 68 | - Three 69 | - Four 70 | - Five 71 | 72 | When you are done, please verify your solution. 73 | 74 | --- 75 | -------------------------------------------------------------------------------- /exercises/lists/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/lists/ja.md: -------------------------------------------------------------------------------- 1 | リストは構造化された情報の表示にとって重要です。 Markdownでリストを作成するのは難しいことではありません。 順序付けられていないリストの各項目の前にアスタリスク(`*`) またはダッシュ(`-`) を挿入するだけです(例えば、1. 2. 3.) 。 2 | 3 | ### 順序付けられていないリスト 4 | 5 | ここに順序付けられていないリストの例を示します。 6 | 7 | * item1 8 | * item2 9 | * item3 10 | 11 | そして、これはこのように変換されます。 12 | 13 | * item1 14 | * item2 15 | * item3 16 | 17 | ダッシュも同様に機能します。 18 | 19 | - first item with dash 20 | - second item with dash 21 | 22 | これが、このように。 23 | 24 | - first item with dash 25 | - second item with dash 26 | 27 | ### 順序付きリスト 28 | 29 | ここに順序付きリストの例を示します。 30 | 31 | 1. item1 32 | 2. item2 33 | 3. item3 34 | 35 | これはこのように変換されます。 36 | 37 | 1. item1 38 | 2. item2 39 | 3. item3 40 | 41 | ご覧のとおり、この表記は非常に直感的で読みやすいです。 42 | 43 | ### ネストされたリスト 44 | 45 | ネストされたリストを作成することは何も難しいことではありません。 タブを追加するか、次のようなネストされた要素のスペースを追加するだけです。 46 | 47 | - element 1 48 | - element 1.1 49 | - element 1.2 50 | - element 2 51 | - element 2.1 52 | - element 3 53 | 54 | `*`のリストと順序付きリストの場合も同様に動作します。 55 | 56 | ## 課題 57 | 58 | 新しいファイルで、 `Lists`という内容の、第1レベル見出しを追加します。 59 | 60 | そこに、あなたのリストを作ってみましょう。 新しいファイルを作成し、そこに順序付けられていないリストを、以下のように作成してください。 61 | 62 | - One 63 | - 1.1 64 | - 1.2 65 | - Two 66 | - 2.1 67 | - 2.2 68 | - Three 69 | - Four 70 | - Five 71 | 72 | 完了したら、解答の確認を行ってください。 73 | 74 | --- 75 | -------------------------------------------------------------------------------- /exercises/lists/solution/en.md: -------------------------------------------------------------------------------- 1 | # Great! 2 | 3 | There is one more thing. You may have any order of numbers in your ordered lists. For example this notation works well: 4 | 5 | 0. only zeros 6 | 0. only zeros 7 | 0. only zeros 8 | 9 | 10. any order 10 | 5. any order 11 | 2. any order 12 | 7. any order 13 | 14 | 15 | 0. only zeros 16 | 0. only zeros 17 | 0. only zeros 18 | 19 | 20 | 5. any order 21 | 10. any order 22 | 2. any order 23 | 7. any order 24 | 25 | Markdown parser is pretty clever in creating the correct order. This approach may be very useful for supporting big ordered lists. 26 | 27 | In the next exercise we will take a look at references in Markdown. 28 | -------------------------------------------------------------------------------- /exercises/lists/solution/ja.md: -------------------------------------------------------------------------------- 1 | # 見事! 2 | 3 | 一つ注意事項があります。 順序つきリストに、他の数字をつけたいかもしれません。 たとえば、この表記法はうまくいきます。 4 | 5 | 6 | 0. only zeros 7 | 0. only zeros 8 | 0. only zeros 9 | 10 | 10. any order 11 | 5. any order 12 | 2. any order 13 | 7. any order 14 | 15 | 16 | 0. only zeros 17 | 0. only zeros 18 | 0. only zeros 19 | 20 | 21 | 5. any order 22 | 10. any order 23 | 2. any order 24 | 7. any order 25 | 26 | Markdownのパーザーは、正しい順序を作成するのには非常に賢いです。 このアプローチは、大規模な順序付きリストをサポートするのに非常に便利です。 27 | 28 | 次の演習では、Markdownのリンク(参照)について見ていきます。 29 | -------------------------------------------------------------------------------- /exercises/lists/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Lists 2 | 3 | - One 4 | - 1.1 5 | - 1.2 6 | - Two 7 | - 2.1 8 | - 2.2 9 | - Three 10 | - Four 11 | - Five 12 | -------------------------------------------------------------------------------- /exercises/lists/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Чудово! 2 | 3 | Ви можете використовувати будь-який порядок чисел у ваших впорядкованих списках. Наприклад, це позначення працює добре: 4 | 5 | 0. тільки нулі 6 | 0. тільки нулі 7 | 0. тільки нулі 8 | 9 | 10. будь-яке число 10 | 5. будь-яке число 11 | 2. будь-яке число 12 | 7. будь-яке число 13 | 14 | 15 | 0. тільки нулі 16 | 0. тільки нулі 17 | 0. тільки нулі 18 | 19 | 20 | 5. будь-яке число 21 | 10. будь-яке число 22 | 2. будь-яке число 23 | 7. будь-яке число 24 | 25 | Markdown парсер досить розумний в створенні правильного порядку. Такий підхід може бути дуже корисний для підтримки великих упорядкованих списків. 26 | У наступній вправі ми розглянемо на посилання в Markdown. 27 | -------------------------------------------------------------------------------- /exercises/lists/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 非常棒! 2 | 3 | 额外强调一下,你可以在有序列表中按任意顺序编排项目。请参考下面的例子: 4 | 5 | 0. only zeros 6 | 0. only zeros 7 | 0. only zeros 8 | 9 | 10. any order 10 | 5. any order 11 | 2. any order 12 | 7. any order 13 | 14 | 格式化后的效果如下: 15 | 16 | 0. only zeros 17 | 0. only zeros 18 | 0. only zeros 19 | 20 | 5. any order 21 | 10. any order 22 | 2. any order 23 | 7. any order 24 | 25 | Markdown 很聪明,会创建一个正确的顺序。在你维护一个很大的列表时,这个功能非常有用。 26 | 27 | 下一个练习我们将学习 Markdown 的引用语法。 28 | -------------------------------------------------------------------------------- /exercises/lists/uk.md: -------------------------------------------------------------------------------- 1 | Списки мають важливе значення для структурування інформації. Немає нічого складного в створенні списків в Markdown. Просто вставте зірочки (`*`) чи тире (`-`) перед кожним елементом для невпорядкованого списку або поруч число з точкою для упорядкованого одного (наприклад, 1., 2., 3.). 2 | 3 | ### Невпорядковані списки 4 | 5 | Ось приклад Невпорядкованого списку: 6 | 7 | * пункт1 8 | * пункт2 9 | * пункт3 10 | 11 | І це буде перетворено в: 12 | 13 | * пункт1 14 | * пункт2 15 | * пункт3 16 | 17 | Штрихи працюють також: 18 | 19 | - перший елемент з тире 20 | - другий елемент з тире 21 | 22 | Goes to: 23 | 24 | - перший елемент з тире 25 | - другий елемент з тире 26 | 27 | ### Впорядковані списки 28 | 29 | Ось приклад простого впорядкованого списку: 30 | 31 | 1. пункт1 32 | 2. пункт2 33 | 3. пункт3 34 | 35 | Який буде перетворений в: 36 | 37 | 1. пункт1 38 | 2. пункт2 39 | 3. пункт3 40 | 41 | Як ви можете бачити, це позначення є дуже інтуїтивними і читаними. 42 | 43 | ### Вкладені списки 44 | 45 | Там немає нічого складного про створення вкладеного списку. Просто додайте табуляцію чи пробіл для вкладених елементів, таких як: 46 | 47 | - елемент 1 48 | - елемент 1.1 49 | - елемент 1.2 50 | - елемент 2 51 | - елемент 2.1 52 | - елемент 3 53 | 54 | Для списків з `*` і впорядкованих списків це працює також добре. 55 | 56 | ## ЗАВДАННЯ 57 | 58 | У новому файлі додайте заголовок першого рівня `Lists`. 59 | 60 | Спробуйте написати свій власний список. Будь ласка, створіть новий файл і невпорядкований список в ньому: 61 | 62 | - One 63 | - 1.1 64 | - 1.2 65 | - Two 66 | - 2.1 67 | - 2.2 68 | - Three 69 | - Four 70 | - Five 71 | 72 | Коли ви закінчите, будь ласка, перевірте ваше рішення. 73 | 74 | --- 75 | -------------------------------------------------------------------------------- /exercises/lists/zh-cn.md: -------------------------------------------------------------------------------- 1 | 列表是一种很重要的结构化信息。用 MarkDown 语法创建列表非常容易。只要在每个项目之前插入一个星号(`*`)或者横线(`-`)就可以创建一个无序列表。在数字后面跟着点号就可以创建一个有序列表(例如:1., 2., 3.)。 2 | 3 | ### 无序列表 4 | 5 | 一个无序列表的例子: 6 | 7 | * 项目 1 8 | * 项目 2 9 | * 项目 3 10 | 11 | 格式化后的样子如下: 12 | 13 | * 项目 1 14 | * 项目 2 15 | * 项目 3 16 | 17 | 横线作用相同: 18 | 19 | - 用横线的第一个项目 20 | - 用横线的第二个项目 21 | 22 | 结果: 23 | 24 | - 用横线的第一个项目 25 | - 用横线的第二个项目 26 | 27 | ### 有序列表 28 | 29 | 一个简单的有序列表的例子: 30 | 31 | 1. 项目 1 32 | 2. 项目 2 33 | 3. 项目 3 34 | 35 | 格式化后的样子如下: 36 | 37 | 1. 项目 1 38 | 2. 项目 2 39 | 3. 项目 3 40 | 41 | 正如你所见,这些标记非常直观可读。 42 | 43 | ### 多级列表 44 | 45 | 创建多级列表也很简单。只需要像下面这样添加 tab 或空格缩进即可。 46 | 47 | - 项目 1 48 | - 项目 1.2 49 | - 项目 1.3 50 | - 项目 2 51 | - 项目 2.1 52 | - 项目 3 53 | 54 | 使用 `*` 号或有序列表一样能正常工作。 55 | 56 | ## 挑战 57 | 58 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Lists`。 59 | 60 | 在标题下面,添加下面的无序列表: 61 | 62 | - One 63 | - 1.1 64 | - 1.2 65 | - Two 66 | - 2.1 67 | - 2.2 68 | - Three 69 | - Four 70 | - Five 71 | 72 | 完成后,请检查你的文件。 73 | 74 | --- 75 | -------------------------------------------------------------------------------- /exercises/tables/en.md: -------------------------------------------------------------------------------- 1 | Tables are not a part of Markdown spec, but a lot of parsers support them. Especially **GFM** which are used on GitHub. 2 | 3 | The creation of tables in Markdown looks exactly like drawing using dashes (`-`) and pipes (`|`). Also, you may use colons to align columns. For example: 4 | 5 | | Head | of | Table | 6 | | ------------ |:--------:| ------------ :| 7 | | left-aligned | centered | right-aligned | 8 | | left-aligned | centered | right-aligned | 9 | 10 | The table above will be rendered like this: 11 | 12 | | Head | of | Table | 13 | | ------------ |:--------:| ------------ :| 14 | | left-aligned | centered | right-aligned | 15 | | left-aligned | centered | right-aligned | 16 | 17 | There are a few important things here: 18 | 19 | * There must be at least 3 dashes separating each header cell. Colons to align columns count as dashes. 20 | * The outer pipes (`|`) are optional. 21 | * You can use inline Markdown in cells. 22 | 23 | That means you can do something like this: 24 | 25 | Markdown | Less | Pretty 26 | --- | --- | --- 27 | *Still* | `renders` | **nicely** 28 | 29 | It doesn't looks so nice, but it works as expected: 30 | 31 | Markdown | Less | Pretty 32 | --- | --- | --- 33 | *Still* | `renders` | **nicely** 34 | 35 | ## THE CHALLENGE 36 | 37 | Add a first-level heading that contains the name of this exercise. 38 | 39 | Reproduce this table: 40 | 41 | | Year | World population | 42 | | :--: | ---------------- | 43 | | 1960 | 3 Billion | 44 | | 1980 | 4 Billion | 45 | | 2000 | 6 Billion | 46 | 47 | The _Year_ column should be centered. 48 | 49 | --- 50 | -------------------------------------------------------------------------------- /exercises/tables/exercise.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('../../utils/problem')(__dirname); 4 | -------------------------------------------------------------------------------- /exercises/tables/ja.md: -------------------------------------------------------------------------------- 1 | テーブルはMarkdown仕様の一部ではありませんが、多くのパーサがそれらをサポートしています。 特に**GFM** はGitHubで使用されます。 2 | 3 | Markdownのテーブルの作成は、ダッシュ (`-`) とパイプ(`|`)を使った描画のようになります。 また、コロンを使用して列を揃えることもできます。 4 | 5 | | Head | of | Table | 6 | | :----------- |:--------:| ------------: | 7 | | left-aligned | centered | right-aligned | 8 | | left-aligned | centered | right-aligned | 9 | 10 | 上記の表は次のように表示されます。 11 | 12 | | Head | of | Table | 13 | | :----------- |:--------:| ------------: | 14 | | left-aligned | centered | right-aligned | 15 | | left-aligned | centered | right-aligned | 16 | 17 | ここで重要なことがいくつかあります。 18 | 19 | * 各ヘッダーセルを少なくとも3つのダッシュで区切る必要があります。 列を揃えるコロンはダッシュとしてカウントされます。 20 | * 外側のパイプ (`|`) はオプションです。 21 | * セルでインラインMarkdownを使用できます。 22 | 23 | つまり、次のようなことができます。 24 | 25 | Markdown | Less | Pretty 26 | --- | --- | --- 27 | *Still* | `renders` | **nicely** 28 | 29 | あまり綺麗な表に見えませんが、期待どおりに動作します。 30 | 31 | Markdown | Less | Pretty 32 | --- | --- | --- 33 | *Still* | `renders` | **nicely** 34 | 35 | ## 課題 36 | 37 | この演習の名前を含む、第1レベルの見出しを追加します。 38 | 39 | そして、この表を再現してください。 40 | 41 | | Year | World population | 42 | | :--: | ---------------- | 43 | | 1960 | 3 Billion | 44 | | 1980 | 4 Billion | 45 | | 2000 | 6 Billion | 46 | 47 | _Year_ 列は中央揃えにする必要があります。 48 | 49 | 終わったら解答を確認しましょう。 50 | 51 | --- 52 | -------------------------------------------------------------------------------- /exercises/tables/solution/en.md: -------------------------------------------------------------------------------- 1 | # Very well! 2 | 3 | You did a cool table of the World population. Now do you realize how awesome tables in Markdown are? They are easy and readable, even in plain files. 4 | 5 | In the next exercise we will take a look at horizontal rules in Markdown. 6 | -------------------------------------------------------------------------------- /exercises/tables/solution/ja.md: -------------------------------------------------------------------------------- 1 | # 結構! 2 | 3 | あなたは世界人口のクールなテーブルをしました。 Markdownテーブルがどれほど素晴らしいか分かりましたか? テーブルを使えば、平易なファイルであっても、簡単で読みやすいです。 4 | 5 | 次の練習ではMarkdownの水平罫線を見ていきます。 6 | -------------------------------------------------------------------------------- /exercises/tables/solution/solution.md: -------------------------------------------------------------------------------- 1 | # Tables 2 | 3 | | Year | World population | 4 | | :--: | ---------------- | 5 | | 1960 | 3 Billion | 6 | | 1980 | 4 Billion | 7 | | 2000 | 6 Billion | 8 | -------------------------------------------------------------------------------- /exercises/tables/solution/uk.md: -------------------------------------------------------------------------------- 1 | # Дуже добре! 2 | 3 | Ви зробили чудову таблицю населення світу. Тепер ви розумієте які дивовижні таблиці в Markdown? Вони прості і читабельні, навіть просто в коді. 4 | 5 | У наступній вправі ми розглянемо горизонтальні лінії в Markdown. 6 | -------------------------------------------------------------------------------- /exercises/tables/solution/zh-cn.md: -------------------------------------------------------------------------------- 1 | # 太好了! 2 | 3 | 你已经出色的制作了一个世界人口的数据表格。现在你知道 MarkDown 中表格有多神奇了吗?即使在纯文本文档中他们也非常简单、易读。 4 | 5 | 下一个练习我们将学习 Markdown 的水平分隔线语法。 6 | -------------------------------------------------------------------------------- /exercises/tables/uk.md: -------------------------------------------------------------------------------- 1 | Таблиці не є частиною специфікації Markdown, але багато парсерів підтримують їх. Особливо **GFM**, який використовується на GitHub. 2 | 3 | Створення таблиць в Markdown виглядає як малювання їх за допомогою тире (`-`) і вертикальної лінії (`|`). Також, ви можете використовувати двокрапку для вирівнювання колонок. Наприклад: 4 | 5 | | Шапка | цієї | таблиці | 6 | | -------------- |:---------:| -------------- :| 7 | | по лівому краю | по центру | по правому краю | 8 | | по лівому краю | по центру | по правому краю | 9 | 10 | Таблиця вище, буде представлена наступним чином: 11 | 12 | | Шапка | цієї | таблиці | 13 | | -------------- |:---------:| -------------- :| 14 | | по лівому краю | по центру | по правому краю | 15 | | по лівому краю | по центру | по правому краю | 16 | 17 | Є кілька важливих речей тут: 18 | 19 | * Повинно бути щонайменше 3 тире, що відокремлюють кожну клітинку заголовка. Двокрапки для вирівнювання колонок рахувати як тире. 20 | * Зовнішні вертикальні лінії (`|`) не є обов'язковими. 21 | * Ви можете використовувати Markdown в клітинах. 22 | 23 | Це означає, що ви можете зробити щось на зразок цього: 24 | 25 | Markdown | Менш | Гарний 26 | --- | --- | --- 27 | *Але* | `відображається` | **чудово** 28 | 29 | Це не виглядає так добре, але він працює очікувано: 30 | 31 | Markdown | Менш | Гарний 32 | --- | --- | --- 33 | *Але* | `відображається` | **чудово** 34 | 35 | ## ЗАВДАННЯ 36 | 37 | Додати заголовок першого рівня, що містить ім'я цієї вправи `Tables`. 38 | 39 | Відтворіть цю таблицю: 40 | 41 | | Year | World population | 42 | | :--: | ---------------- | 43 | | 1960 | 3 Billion | 44 | | 1980 | 4 Billion | 45 | | 2000 | 6 Billion | 46 | 47 | Колонка _Year_ має бути відцентрована. 48 | 49 | --- 50 | -------------------------------------------------------------------------------- /exercises/tables/zh-cn.md: -------------------------------------------------------------------------------- 1 | 表格不在 MarkDown 的规范里,但是很多解释器都支持表格。尤其是 Github 使用的 **GFM** 也是支持表格的。 2 | 3 | MarkDown用横线(`-`)和竖线(`|`)来制作表格。并使用冒号来控制表格的对齐,如下面的例子所示: 4 | 5 | | 这 | 是 | 表头 | 6 | | ---------- |:--------:| -------- :| 7 | | 左侧对齐 | 居中对齐 | 右侧对齐 | 8 | | 左侧对齐 | 居中对齐 | 右侧对齐 | 9 | 10 | 上面的表格显示效果如下: 11 | 12 | | 这 | 是 | 表头 | 13 | | ------------ |:--------:| ------------ :| 14 | | 左侧对齐 | 居中对齐 | 右侧对齐 | 15 | | 左侧对齐 | 居中对齐 | 右侧对齐 | 16 | 17 | 这里有几个要点: 18 | 19 | * 每个单元格至少需要三个横线来间隔,冒号算作一个横线。 20 | * 外侧的竖线(`|`)可以没有。 21 | * 单元格里可以使用 MarkDown 语法。 22 | 23 | 这就意味着,你可以按照下面的方式来编写表格: 24 | 25 | Markdown | Less | Pretty 26 | --- | --- | --- 27 | *Still* | `renders` | **nicely** 28 | 29 | 虽然上面的代码看上去不美观,但是表格可以正常显示: 30 | 31 | Markdown | Less | Pretty 32 | --- | --- | --- 33 | *Still* | `renders` | **nicely** 34 | 35 | ## 挑战 36 | 37 | 创建一个新文件,在文件第一行添加一个一级标题,标题的文字是 `Tables`。 38 | 39 | 在文档中编制下面的表格: 40 | 41 | | Year | World population | 42 | | :--: | ---------------- | 43 | | 1960 | 3 Billion | 44 | | 1980 | 4 Billion | 45 | | 2000 | 6 Billion | 46 | 47 | 注意 _Year_ 这一列是居中对齐的。 48 | 49 | 完成后,请检查你的文件。 50 | 51 | --- 52 | -------------------------------------------------------------------------------- /i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "How To Markdown", 3 | "subtitle": "Markdown is awesome!" 4 | } 5 | -------------------------------------------------------------------------------- /i18n/footer/en.md: -------------------------------------------------------------------------------- 1 | - To print these instructions again, run: `{appname} print` 2 | - To execute your program, run: `{appname} run file.md` 3 | - To verify your program, run: `{appname} verify file.md` 4 | - For help run: `{appname} help` 5 | -------------------------------------------------------------------------------- /i18n/footer/ja.md: -------------------------------------------------------------------------------- 1 | - この説明をもう一度表示する: `{appname} print` 2 | - 作成したプログラムを試しに実行する: `{appname} run file.md` 3 | - 作成したプログラムが正しいか検証する: `{appname} verify file.md` 4 | - ヘルプを表示する: `{appname} help` 5 | -------------------------------------------------------------------------------- /i18n/footer/uk.md: -------------------------------------------------------------------------------- 1 | - Щоб побачити ці інструкції знову виконайте: `{appname} print` 2 | - Шоб запустити вашу програму: `{appname} run file.md` 3 | - Щоб перевірити вашу програму: `{appname} verify file.md` 4 | - Для довідки: `{appname} help` 5 | -------------------------------------------------------------------------------- /i18n/footer/zh-cn.md: -------------------------------------------------------------------------------- 1 | - 再次打印教程,请运行:`{appname} print` 2 | - 查看文档效果,请运行:`{appname} run file.md` 3 | - 检查文档对错,请运行:`{appname} verify file.md` 4 | - 获取帮助信息,请运行:`{appname} help` 5 | -------------------------------------------------------------------------------- /i18n/ja.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "How To Markdown", 3 | "subtitle": "Markdownは最高!", 4 | "exercise": { 5 | "HELLO WORLD": "HELLO, WORLD", 6 | "HEADINGS": "ヘッダー", 7 | "EMPHASIS": "強調", 8 | "LISTS": "リスト", 9 | "LINKS": "リンク", 10 | "IMAGES": "画像", 11 | "BLOCKQUOTES": "引用", 12 | "CODE": "コード", 13 | "TABLES": "テーブル", 14 | "HORIZONTAL RULES": "水平罫線", 15 | "GFM": "GFM" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /i18n/troubleshooting/en.md: -------------------------------------------------------------------------------- 1 | ---- 2 | # Wo-ops, something isn't working. But don't panic! 3 | ---- 4 | 5 | ## Check your solution: 6 | 7 | `Solution ===================` 8 | 9 | ``` 10 | %solution% 11 | ``` 12 | 13 | `Your Attempt ===================` 14 | 15 | ``` 16 | %attempt% 17 | ``` 18 | 19 | `Difference ===================` 20 | 21 | ``` 22 | %diff% 23 | ``` 24 | 25 | ## Additional troubleshooting: 26 | 27 | * Did you type the name of the file correctly? You can check by running `ls %filename%`, if you see `ls: cannot access %filename%: No such file or directory` then you should create new file / rename existing or change directories to the one with file 28 | * Make sure you didn't omit parens, since otherwise compiler would not be able to parse it 29 | * Make sure you didn't do any typos in the string itself 30 | -------------------------------------------------------------------------------- /i18n/troubleshooting/ja.md: -------------------------------------------------------------------------------- 1 | ---- 2 | # おや、なにか上手くいっていないようです。 しかし、あわててはいけません。 3 | ---- 4 | 5 | ## あなたの解答を確認してみましょう: 6 | 7 | `期待する解答 ===================` 8 | 9 | ``` 10 | %solution% 11 | ``` 12 | 13 | `あなたが試した解答 ===================` 14 | 15 | ``` 16 | %attempt% 17 | ``` 18 | 19 | `違う部分 ===================` 20 | 21 | ``` 22 | %diff% 23 | ``` 24 | 25 | ## 追加のトラブルシューティング: 26 | 27 | * ファイル名は正しくタイプしましたか? `ls %filename%`を実行して確認できます。もし `ls: cannot access %filename%: No such file or directory` と表示されたら、新しいファイルを作るか、既にあるファイルの名前を変えるか、ファイルがあるディレクトリを変更する必要があるかもしれません。 28 | * カッコを省略していませんか?省略すると、コンパイラは正しく JavaScriptのファイルを読むことが出来ません。 29 | * ファイルの中身にタイプミスはありませんか? 30 | -------------------------------------------------------------------------------- /i18n/troubleshooting/uk.md: -------------------------------------------------------------------------------- 1 | ---- 2 | # Ой-ой-ой, щось пішло не так. Але не панікуйте! 3 | ---- 4 | 5 | ## Перевірте ваше рішення: 6 | 7 | `Розв'язок =====================` 8 | 9 | ``` 10 | %solution% 11 | ``` 12 | 13 | `Ваше рішення ===================` 14 | 15 | ``` 16 | %attempt% 17 | ``` 18 | 19 | `Різниця ========================` 20 | 21 | ``` 22 | %diff% 23 | ``` 24 | 25 | ## Додатокові неполадки: 26 | 27 | * Ви використали правильне ім'я файлу? Ви можете перевірити це виконавши `ls %filename%`, і якщо побачите `ls: cannot access %filename%: No such file or directory` тоді вам необхідно створити новий файл / перейменувати існуючий чи перейти в папку з необхідним файлом 28 | * Переконайтеся, що ви не пропустили дужки, інакше компілятор не матиме можливості пропарсити 29 | * Переконайтеся, що ви не робили ніяких помилок 30 | -------------------------------------------------------------------------------- /i18n/troubleshooting/zh-cn.md: -------------------------------------------------------------------------------- 1 | ---- 2 | # 糟糕,有些错误,导致检查不通过。但是不要紧张。 3 | ---- 4 | 5 | ## 请检查你的文档: 6 | 7 | `期望的答案 ===================` 8 | 9 | ``` 10 | %solution% 11 | ``` 12 | 13 | `你的文档 ===================` 14 | 15 | ``` 16 | %attempt% 17 | ``` 18 | 19 | `差异 ===================` 20 | 21 | ``` 22 | %diff% 23 | ``` 24 | 25 | ## 额外可能的错误: 26 | 27 | * 你的文件名是否输入正确?你可以运行`ls %filename%`来检查,如果看到提示信息`ls: cannot access %filename%: No such file or directory`,你应该创建新文件或者重命名文件或者改变文件的路径 28 | * 确保你没有丢失括号,因为编译器可能不能正常解释 29 | * 确保你没有输错文字 30 | -------------------------------------------------------------------------------- /i18n/uk.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "How To Markdown", 3 | "subtitle": "Markdown це неймовірно!", 4 | "exercise": { 5 | "HELLO WORLD": "Привіт, Світ", 6 | "HEADINGS": "Заголовки", 7 | "EMPHASIS": "Виділення", 8 | "LISTS": "Списки", 9 | "LINKS": "Посилання", 10 | "IMAGES": "Зображення", 11 | "BLOCKQUOTES": "Блоки цитат", 12 | "CODE": "Код", 13 | "TABLES": "Таблиці", 14 | "HORIZONTAL RULES": "Горизонтальні лінії", 15 | "GFM": "GFM" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /i18n/zh-cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "如何使用 Markdown", 3 | "subtitle": "Markdown 非常神奇!", 4 | "exercise": { 5 | "HELLO WORLD": "世界你好", 6 | "HEADINGS": "标题", 7 | "EMPHASIS": "强调", 8 | "LISTS": "列表", 9 | "LINKS": "超链接", 10 | "IMAGES": "图片", 11 | "BLOCKQUOTES": "引用", 12 | "CODE": "代码", 13 | "TABLES": "表格", 14 | "HORIZONTAL RULES": "水平分隔线", 15 | "HTML": "超文本", 16 | "GFM": "GFM" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const workshopper = require('workshopper-adventure'); 4 | const path = require('path'); 5 | 6 | const HowToMarkdown = workshopper({ 7 | appDir: __dirname, 8 | languages: ['en', 'zh-cn', 'uk', 'ja'], 9 | header: require('workshopper-adventure/default/header'), 10 | footer: [{ 11 | file: path.join(__dirname, 'i18n', 'footer', '{lang}.md'), 12 | }], 13 | }); 14 | 15 | HowToMarkdown.addAll([ 16 | 'HELLO WORLD', 17 | 'HEADINGS', 18 | 'EMPHASIS', 19 | 'LISTS', 20 | 'LINKS', 21 | 'IMAGES', 22 | 'BLOCKQUOTES', 23 | 'CODE', 24 | 'TABLES', 25 | 'HORIZONTAL RULES', 26 | 'HTML', 27 | 'GFM', 28 | ]); 29 | 30 | module.exports = HowToMarkdown; 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "preferGlobal": true, 3 | "name": "how-to-markdown", 4 | "version": "1.6.0", 5 | "description": "Learn you how to start using Markdown", 6 | "bin": { 7 | "how-to-markdown": "./bin/how-to-markdown" 8 | }, 9 | "scripts": { 10 | "test": "eslint . && workshopper-adventure-test", 11 | "postpublish": "git push --follow-tags" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/workshopper/how-to-markdown.git" 16 | }, 17 | "keywords": [ 18 | "nodeschool", 19 | "workshopper", 20 | "tutorial", 21 | "markdown", 22 | "md" 23 | ], 24 | "author": "Denys Dovhan (http://denysdovhan.com)", 25 | "contributors": [ 26 | "wangding <408542507@qq.com> (https://github.com/wangding)" 27 | ], 28 | "license": "MIT", 29 | "bugs": { 30 | "url": "https://github.com/workshopper/how-to-markdown/issues" 31 | }, 32 | "homepage": "https://github.com/workshopper/how-to-markdown#readme", 33 | "engines": { 34 | "node": ">=4.0.0" 35 | }, 36 | "dependencies": { 37 | "chokidar": "^1.6.1", 38 | "colors": "^1.1.2", 39 | "deep-equal": "^1.0.1", 40 | "diff": "^3.2.0", 41 | "express": "^4.13.4", 42 | "openurl": "^1.1.1", 43 | "remark": "^7.0.0", 44 | "remark-html": "^6.0.0", 45 | "workshopper-adventure": "^6.0.2" 46 | }, 47 | "devDependencies": { 48 | "eslint": "^3.18.0", 49 | "workshopper-adventure-test": "^1.1.0" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/workshopper/how-to-markdown/370d15292d96d06a97f47c9baeed863c12d62854/preview.png -------------------------------------------------------------------------------- /test/blockquotes/valid.md: -------------------------------------------------------------------------------- 1 | # Blockquotes 2 | 3 | > To be, or not to be, that is the question. 4 | > William Shakespeare 5 | -------------------------------------------------------------------------------- /test/code/valid.md: -------------------------------------------------------------------------------- 1 | # Code 2 | 3 | ```js 4 | const add = (a, b) => a + b; 5 | ``` 6 | -------------------------------------------------------------------------------- /test/emphasis/valid.md: -------------------------------------------------------------------------------- 1 | # Emphasis 2 | 3 | It's very easy to use _italic_, **bold** and _**combined**_ emphasis in Markdown! 4 | -------------------------------------------------------------------------------- /test/gfm/valid.md: -------------------------------------------------------------------------------- 1 | # GFM 2 | 3 | - [ ] hey 4 | - [x] ho 5 | - [ ] let's go 6 | -------------------------------------------------------------------------------- /test/headings/valid.md: -------------------------------------------------------------------------------- 1 | # Markdown is awesome! 2 | -------------------------------------------------------------------------------- /test/hello_world/valid.md: -------------------------------------------------------------------------------- 1 | Hello, world! 2 | -------------------------------------------------------------------------------- /test/horizontal_rules/valid.md: -------------------------------------------------------------------------------- 1 | # Horizontal rules 2 | 3 | --- 4 | -------------------------------------------------------------------------------- /test/html/valid.md: -------------------------------------------------------------------------------- 1 | # HTML 2 | 3 |

HTML in Markdown

4 | -------------------------------------------------------------------------------- /test/images/valid.md: -------------------------------------------------------------------------------- 1 | # Images 2 | 3 | ![Markdown logo](http://bit.do/how-to-markdown) 4 | -------------------------------------------------------------------------------- /test/links/valid.md: -------------------------------------------------------------------------------- 1 | # Links 2 | 3 | [how-to-markdown] is a workshopper that teaches you how to write Markdown. 4 | 5 | [how-to-markdown]: //git.io/how-to-markdown 6 | -------------------------------------------------------------------------------- /test/lists/valid.md: -------------------------------------------------------------------------------- 1 | # Lists 2 | 3 | - One 4 | - 1.1 5 | - 1.2 6 | - Two 7 | - 2.1 8 | - 2.2 9 | - Three 10 | - Four 11 | - Five 12 | -------------------------------------------------------------------------------- /test/tables/valid.md: -------------------------------------------------------------------------------- 1 | # Tables 2 | 3 | | Year | World population | 4 | | :--: | ---------------- | 5 | | 1960 | 3 Billion | 6 | | 1980 | 4 Billion | 7 | | 2000 | 6 Billion | 8 | -------------------------------------------------------------------------------- /utils/diff.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('colors'); 4 | const diff = require('diff'); 5 | 6 | module.exports = (attempt, solution) => { 7 | // Compare solution and attempt results 8 | const parts = diff.diffWordsWithSpace(attempt, solution); 9 | // return diff 10 | return parts.map(part => 11 | part.added ? part.value.red.inverse : 12 | part.removed ? part.value.green.inverse : part.value 13 | ).join(''); 14 | }; 15 | -------------------------------------------------------------------------------- /utils/fail.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const troubleshooting = require('./troubleshooting'); 5 | 6 | module.exports = data => [{ 7 | text: troubleshooting(data.troubleshooting, { 8 | filename: data.filename, 9 | solution: data.solution, 10 | attempt: data.attempt, 11 | }), 12 | type: 'md', 13 | }, { 14 | text: '---', 15 | type: 'md', 16 | }, { 17 | file: path.join(__dirname, '..', 'i18n', 'footer', '{lang}.md'), 18 | }]; 19 | -------------------------------------------------------------------------------- /utils/problem.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('fs'); 4 | const path = require('path'); 5 | const remark = require('remark'); 6 | const html = require('remark-html'); 7 | const express = require('express'); 8 | const chokidar = require('chokidar'); 9 | const open = require('openurl').open; 10 | const equal = require('deep-equal'); 11 | 12 | const fail = require('./fail'); 13 | 14 | module.exports = (dirname) => { 15 | const exports = {}; 16 | 17 | exports.init = function init(workshopper) { 18 | // Get lang code 19 | const lang = workshopper.i18n.lang(); 20 | 21 | this.problem = 22 | { file: path.join(dirname, `${lang}.md`) }; 23 | this.solutionPath = 24 | path.resolve(dirname, 'solution', 'solution.md'); 25 | this.solution = [ 26 | { text: fs.readFileSync(this.solutionPath), type: 'plain' }, 27 | { file: path.join(dirname, 'solution', `${lang}.md`) }, 28 | ]; 29 | this.troubleshooting = 30 | path.join(__dirname, '..', 'i18n', 'troubleshooting', `${lang}.md`); 31 | }; 32 | 33 | exports.verify = function verify(args, done) { 34 | const filename = args[0]; 35 | const attempt = fs.readFileSync(filename, 'utf8'); 36 | const solution = fs.readFileSync(this.solutionPath, 'utf8'); 37 | 38 | const parseAST = str => 39 | Promise.resolve(remark().data('settings', { position: false }).parse(str)); 40 | 41 | Promise.all([ 42 | parseAST(attempt), 43 | parseAST(solution), 44 | ]) 45 | .then((AST) => { 46 | const attemptAST = AST[0]; 47 | const solutionAST = AST[1]; 48 | 49 | if (equal(attemptAST, solutionAST)) { 50 | return done(true); 51 | } 52 | 53 | exports.fail = fail({ 54 | filename, 55 | attempt, 56 | solution, 57 | troubleshooting: this.troubleshooting, 58 | }); 59 | 60 | return done(false); 61 | }) 62 | .catch(reason => done(reason, false)); 63 | }; 64 | 65 | exports.run = function run(args, done) { 66 | const filename = args[0]; 67 | 68 | const processor = remark().use(html); 69 | const watcher = chokidar.watch(filename); 70 | const server = express(); 71 | 72 | let result = ''; 73 | 74 | watcher.on('add', (file) => { 75 | console.log(`${file} has been added.`); 76 | result = processor().processSync(fs.readFileSync(filename, 'utf8')); 77 | }); 78 | 79 | watcher.on('change', (file) => { 80 | console.log(`${file} has been changed.`); 81 | result = processor().processSync(fs.readFileSync(filename, 'utf8')); 82 | }); 83 | 84 | watcher.on('unlink', (file) => { 85 | console.warn(`${file} has been unlinked.`); 86 | done(); 87 | }); 88 | 89 | watcher.on('error', (file) => { 90 | console.error(`${file} has been errored.`); 91 | done(); 92 | }); 93 | 94 | server.get('*', (req, res) => { 95 | res.send(result.toString()); 96 | }); 97 | 98 | server.listen(3000, () => { 99 | console.log(` 100 | File is served on http://localhost:3000/ 101 | Hit Ctrl+C to exit. 102 | `); 103 | open('http://localhost:3000/'); 104 | }); 105 | }; 106 | 107 | return exports; 108 | }; 109 | -------------------------------------------------------------------------------- /utils/troubleshooting.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('fs'); 4 | const diff = require('./diff'); 5 | 6 | module.exports = function troubleshooting(path, data) { 7 | return fs.readFileSync(path, 'utf8') 8 | // Replace breaking characters 9 | .replace(/'/g, '\'') 10 | .replace(/"/g, '"') 11 | .replace(/</g, '<') 12 | .replace(/>/g, '>') 13 | // Inject data 14 | .replace(/%solution%/g, data.solution) 15 | .replace(/%attempt%/g, data.attempt) 16 | .replace(/%diff%/g, diff(data.attempt, data.solution)) 17 | .replace(/%filename%/, data.filename); 18 | }; 19 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1: 6 | version "1.1.0" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" 8 | 9 | accepts@~1.3.3: 10 | version "1.3.3" 11 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 12 | dependencies: 13 | mime-types "~2.1.11" 14 | negotiator "0.6.1" 15 | 16 | acorn-jsx@^3.0.0: 17 | version "3.0.1" 18 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 19 | dependencies: 20 | acorn "^3.0.4" 21 | 22 | acorn@^3.0.4: 23 | version "3.3.0" 24 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 25 | 26 | acorn@^5.0.1: 27 | version "5.0.3" 28 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" 29 | 30 | after@^0.8.2: 31 | version "0.8.2" 32 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" 33 | 34 | ajv-keywords@^1.0.0: 35 | version "1.5.1" 36 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 37 | 38 | ajv@^4.7.0, ajv@^4.9.1: 39 | version "4.11.5" 40 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" 41 | dependencies: 42 | co "^4.6.0" 43 | json-stable-stringify "^1.0.1" 44 | 45 | ansi-escapes@^1.1.0: 46 | version "1.4.0" 47 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 48 | 49 | ansi-regex@^2.0.0: 50 | version "2.1.1" 51 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 52 | 53 | ansi-styles@^2.2.1: 54 | version "2.2.1" 55 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 56 | 57 | ansicolors@^0.3.2: 58 | version "0.3.2" 59 | resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" 60 | 61 | ansicolors@~0.2.1: 62 | version "0.2.1" 63 | resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" 64 | 65 | anymatch@^1.3.0: 66 | version "1.3.0" 67 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 68 | dependencies: 69 | arrify "^1.0.0" 70 | micromatch "^2.1.5" 71 | 72 | aproba@^1.0.3: 73 | version "1.1.1" 74 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" 75 | 76 | are-we-there-yet@~1.1.2: 77 | version "1.1.2" 78 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 79 | dependencies: 80 | delegates "^1.0.0" 81 | readable-stream "^2.0.0 || ^1.1.13" 82 | 83 | argparse@^1.0.7: 84 | version "1.0.9" 85 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 86 | dependencies: 87 | sprintf-js "~1.0.2" 88 | 89 | arr-diff@^2.0.0: 90 | version "2.0.0" 91 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 92 | dependencies: 93 | arr-flatten "^1.0.1" 94 | 95 | arr-flatten@^1.0.1: 96 | version "1.0.1" 97 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 98 | 99 | array-flatten@1.1.1: 100 | version "1.1.1" 101 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 102 | 103 | array-iterate@^1.0.0: 104 | version "1.1.0" 105 | resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.0.tgz#4f13148ffffa5f2756b50460e5eac8eed31a14e6" 106 | dependencies: 107 | has "^1.0.1" 108 | 109 | array-union@^1.0.1: 110 | version "1.0.2" 111 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 112 | dependencies: 113 | array-uniq "^1.0.1" 114 | 115 | array-uniq@^1.0.1: 116 | version "1.0.3" 117 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 118 | 119 | array-unique@^0.2.1: 120 | version "0.2.1" 121 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 122 | 123 | arrify@^1.0.0: 124 | version "1.0.1" 125 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 126 | 127 | asn1@~0.2.3: 128 | version "0.2.3" 129 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 130 | 131 | assert-plus@1.0.0, assert-plus@^1.0.0: 132 | version "1.0.0" 133 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 134 | 135 | assert-plus@^0.2.0: 136 | version "0.2.0" 137 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 138 | 139 | async-each@^1.0.0: 140 | version "1.0.1" 141 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 142 | 143 | asynckit@^0.4.0: 144 | version "0.4.0" 145 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 146 | 147 | aws-sign2@~0.6.0: 148 | version "0.6.0" 149 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 150 | 151 | aws4@^1.2.1: 152 | version "1.6.0" 153 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 154 | 155 | babel-code-frame@^6.16.0: 156 | version "6.22.0" 157 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 158 | dependencies: 159 | chalk "^1.1.0" 160 | esutils "^2.0.2" 161 | js-tokens "^3.0.0" 162 | 163 | bail@^1.0.0: 164 | version "1.0.1" 165 | resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.1.tgz#912579de8b391aadf3c5fdf4cd2a0fc225df3bc2" 166 | 167 | balanced-match@^0.4.1: 168 | version "0.4.2" 169 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 170 | 171 | bcrypt-pbkdf@^1.0.0: 172 | version "1.0.1" 173 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 174 | dependencies: 175 | tweetnacl "^0.14.3" 176 | 177 | binary-extensions@^1.0.0: 178 | version "1.8.0" 179 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 180 | 181 | block-stream@*: 182 | version "0.0.9" 183 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 184 | dependencies: 185 | inherits "~2.0.0" 186 | 187 | boom@2.x.x: 188 | version "2.10.1" 189 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 190 | dependencies: 191 | hoek "2.x.x" 192 | 193 | brace-expansion@^1.0.0: 194 | version "1.1.6" 195 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 196 | dependencies: 197 | balanced-match "^0.4.1" 198 | concat-map "0.0.1" 199 | 200 | braces@^1.8.2: 201 | version "1.8.5" 202 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 203 | dependencies: 204 | expand-range "^1.8.1" 205 | preserve "^0.2.0" 206 | repeat-element "^1.1.2" 207 | 208 | buffer-shims@^1.0.0: 209 | version "1.0.0" 210 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 211 | 212 | caller-path@^0.1.0: 213 | version "0.1.0" 214 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 215 | dependencies: 216 | callsites "^0.2.0" 217 | 218 | callsites@^0.2.0: 219 | version "0.2.0" 220 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 221 | 222 | capture-stack-trace@^1.0.0: 223 | version "1.0.0" 224 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 225 | 226 | cardinal@^0.7.1: 227 | version "0.7.1" 228 | resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-0.7.1.tgz#2c270cdc751c86ceaafa08459c2bb38da2a2e297" 229 | dependencies: 230 | ansicolors "~0.2.1" 231 | redeyed "~0.6.0" 232 | 233 | caseless@~0.12.0: 234 | version "0.12.0" 235 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 236 | 237 | ccount@^1.0.0: 238 | version "1.0.1" 239 | resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.1.tgz#665687945168c218ec77ff61a4155ae00227a96c" 240 | 241 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 242 | version "1.1.3" 243 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 244 | dependencies: 245 | ansi-styles "^2.2.1" 246 | escape-string-regexp "^1.0.2" 247 | has-ansi "^2.0.0" 248 | strip-ansi "^3.0.0" 249 | supports-color "^2.0.0" 250 | 251 | character-entities-html4@^1.0.0: 252 | version "1.1.0" 253 | resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.0.tgz#1ab08551d3ce1fa1df08d00fb9ca1defb147a06c" 254 | 255 | character-entities-legacy@^1.0.0: 256 | version "1.1.0" 257 | resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.0.tgz#b18aad98f6b7bcc646c1e4c81f9f1956376a561a" 258 | 259 | character-entities@^1.0.0: 260 | version "1.2.0" 261 | resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.0.tgz#a683e2cf75dbe8b171963531364e58e18a1b155f" 262 | 263 | character-reference-invalid@^1.0.0: 264 | version "1.1.0" 265 | resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.0.tgz#dec9ad1dfb9f8d06b4fcdaa2adc3c4fd97af1e68" 266 | 267 | charm_inheritance-fix@^1.0.1: 268 | version "1.0.1" 269 | resolved "https://registry.yarnpkg.com/charm_inheritance-fix/-/charm_inheritance-fix-1.0.1.tgz#ad981aa05cbec00855f417549496186b82a6f93a" 270 | 271 | chokidar@^1.6.1: 272 | version "1.6.1" 273 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 274 | dependencies: 275 | anymatch "^1.3.0" 276 | async-each "^1.0.0" 277 | glob-parent "^2.0.0" 278 | inherits "^2.0.1" 279 | is-binary-path "^1.0.0" 280 | is-glob "^2.0.0" 281 | path-is-absolute "^1.0.0" 282 | readdirp "^2.0.0" 283 | optionalDependencies: 284 | fsevents "^1.0.0" 285 | 286 | circular-json@^0.3.1: 287 | version "0.3.1" 288 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 289 | 290 | cli-cursor@^1.0.1: 291 | version "1.0.2" 292 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 293 | dependencies: 294 | restore-cursor "^1.0.1" 295 | 296 | cli-width@^2.0.0: 297 | version "2.1.0" 298 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 299 | 300 | co@^4.6.0: 301 | version "4.6.0" 302 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 303 | 304 | code-point-at@^1.0.0: 305 | version "1.1.0" 306 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 307 | 308 | collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: 309 | version "1.0.2" 310 | resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.2.tgz#9c463fb9c6d190d2dcae21a356a01bcae9eeef6d" 311 | 312 | colors-tmpl@~1.0.0: 313 | version "1.0.0" 314 | resolved "https://registry.yarnpkg.com/colors-tmpl/-/colors-tmpl-1.0.0.tgz#b60ac4af816555d9edf1ad247337eb30241b6d2e" 315 | dependencies: 316 | colors "~1.0.2" 317 | 318 | colors@^1.1.2: 319 | version "1.1.2" 320 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 321 | 322 | colors@~1.0.2: 323 | version "1.0.3" 324 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" 325 | 326 | combined-stream-wait-for-it@^1.1.0: 327 | version "1.1.0" 328 | resolved "https://registry.yarnpkg.com/combined-stream-wait-for-it/-/combined-stream-wait-for-it-1.1.0.tgz#e04b4ee884cd65715eac4e58ab17367a2cba4685" 329 | dependencies: 330 | delayed-stream "~1.0.0" 331 | 332 | combined-stream@^1.0.5, combined-stream@~1.0.5: 333 | version "1.0.5" 334 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 335 | dependencies: 336 | delayed-stream "~1.0.0" 337 | 338 | comma-separated-tokens@^1.0.1: 339 | version "1.0.2" 340 | resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.2.tgz#4b64717a2ee363af6dd39878336bd95e42d063e7" 341 | dependencies: 342 | trim "0.0.1" 343 | 344 | commander@0.6.1: 345 | version "0.6.1" 346 | resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" 347 | 348 | commander@2.3.0: 349 | version "2.3.0" 350 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" 351 | 352 | commandico@^2.0.2: 353 | version "2.0.2" 354 | resolved "https://registry.yarnpkg.com/commandico/-/commandico-2.0.2.tgz#b8905c09961f794ac676ee2d607f7c0b1b50ce41" 355 | dependencies: 356 | explicit "^0.1.0" 357 | joi "^6.10.1" 358 | minimist "^1.1.1" 359 | 360 | concat-map@0.0.1: 361 | version "0.0.1" 362 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 363 | 364 | concat-stream@^1.5.2: 365 | version "1.6.0" 366 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 367 | dependencies: 368 | inherits "^2.0.3" 369 | readable-stream "^2.2.2" 370 | typedarray "^0.0.6" 371 | 372 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 373 | version "1.1.0" 374 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 375 | 376 | content-disposition@0.5.2: 377 | version "0.5.2" 378 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 379 | 380 | content-type@~1.0.2: 381 | version "1.0.2" 382 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 383 | 384 | cookie-signature@1.0.6: 385 | version "1.0.6" 386 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 387 | 388 | cookie@0.3.1: 389 | version "0.3.1" 390 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 391 | 392 | core-util-is@~1.0.0: 393 | version "1.0.2" 394 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 395 | 396 | create-error-class@^3.0.0: 397 | version "3.0.2" 398 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 399 | dependencies: 400 | capture-stack-trace "^1.0.0" 401 | 402 | cryptiles@2.x.x: 403 | version "2.0.5" 404 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 405 | dependencies: 406 | boom "2.x.x" 407 | 408 | d@1: 409 | version "1.0.0" 410 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 411 | dependencies: 412 | es5-ext "^0.10.9" 413 | 414 | dashdash@^1.12.0: 415 | version "1.14.1" 416 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 417 | dependencies: 418 | assert-plus "^1.0.0" 419 | 420 | debug@2.2.0: 421 | version "2.2.0" 422 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 423 | dependencies: 424 | ms "0.7.1" 425 | 426 | debug@2.6.1: 427 | version "2.6.1" 428 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" 429 | dependencies: 430 | ms "0.7.2" 431 | 432 | debug@2.6.3, debug@^2.1.1, debug@^2.2.0: 433 | version "2.6.3" 434 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" 435 | dependencies: 436 | ms "0.7.2" 437 | 438 | deep-equal@^1.0.1: 439 | version "1.0.1" 440 | resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" 441 | 442 | deep-extend@~0.4.0: 443 | version "0.4.1" 444 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 445 | 446 | deep-is@~0.1.3: 447 | version "0.1.3" 448 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 449 | 450 | del@^2.0.2: 451 | version "2.2.2" 452 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 453 | dependencies: 454 | globby "^5.0.0" 455 | is-path-cwd "^1.0.0" 456 | is-path-in-cwd "^1.0.0" 457 | object-assign "^4.0.1" 458 | pify "^2.0.0" 459 | pinkie-promise "^2.0.0" 460 | rimraf "^2.2.8" 461 | 462 | delayed-stream@~1.0.0: 463 | version "1.0.0" 464 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 465 | 466 | delegates@^1.0.0: 467 | version "1.0.0" 468 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 469 | 470 | depd@1.1.0, depd@~1.1.0: 471 | version "1.1.0" 472 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 473 | 474 | destroy@~1.0.4: 475 | version "1.0.4" 476 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 477 | 478 | detab@^2.0.0: 479 | version "2.0.0" 480 | resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.0.tgz#485bd7954d2348092e998f7ff1a79fd9869d9b50" 481 | dependencies: 482 | repeat-string "^1.5.4" 483 | 484 | diff@1.4.0: 485 | version "1.4.0" 486 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" 487 | 488 | diff@^3.2.0: 489 | version "3.2.0" 490 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" 491 | 492 | doctrine@^2.0.0: 493 | version "2.0.0" 494 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" 495 | dependencies: 496 | esutils "^2.0.2" 497 | isarray "^1.0.0" 498 | 499 | duplexer2@0.0.2: 500 | version "0.0.2" 501 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" 502 | dependencies: 503 | readable-stream "~1.1.9" 504 | 505 | duplexer3@^0.1.4: 506 | version "0.1.4" 507 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 508 | 509 | ecc-jsbn@~0.1.1: 510 | version "0.1.1" 511 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 512 | dependencies: 513 | jsbn "~0.1.0" 514 | 515 | ee-first@1.1.1: 516 | version "1.1.1" 517 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 518 | 519 | encodeurl@~1.0.1: 520 | version "1.0.1" 521 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 522 | 523 | entities@^1.1.1: 524 | version "1.1.1" 525 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" 526 | 527 | es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: 528 | version "0.10.15" 529 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" 530 | dependencies: 531 | es6-iterator "2" 532 | es6-symbol "~3.1" 533 | 534 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: 535 | version "2.0.1" 536 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" 537 | dependencies: 538 | d "1" 539 | es5-ext "^0.10.14" 540 | es6-symbol "^3.1" 541 | 542 | es6-map@^0.1.3: 543 | version "0.1.5" 544 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 545 | dependencies: 546 | d "1" 547 | es5-ext "~0.10.14" 548 | es6-iterator "~2.0.1" 549 | es6-set "~0.1.5" 550 | es6-symbol "~3.1.1" 551 | event-emitter "~0.3.5" 552 | 553 | es6-set@~0.1.5: 554 | version "0.1.5" 555 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 556 | dependencies: 557 | d "1" 558 | es5-ext "~0.10.14" 559 | es6-iterator "~2.0.1" 560 | es6-symbol "3.1.1" 561 | event-emitter "~0.3.5" 562 | 563 | es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: 564 | version "3.1.1" 565 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 566 | dependencies: 567 | d "1" 568 | es5-ext "~0.10.14" 569 | 570 | es6-weak-map@^2.0.1: 571 | version "2.0.2" 572 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 573 | dependencies: 574 | d "1" 575 | es5-ext "^0.10.14" 576 | es6-iterator "^2.0.1" 577 | es6-symbol "^3.1.1" 578 | 579 | escape-html@~1.0.3: 580 | version "1.0.3" 581 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 582 | 583 | escape-string-regexp@1.0.2: 584 | version "1.0.2" 585 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" 586 | 587 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 588 | version "1.0.5" 589 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 590 | 591 | escope@^3.6.0: 592 | version "3.6.0" 593 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 594 | dependencies: 595 | es6-map "^0.1.3" 596 | es6-weak-map "^2.0.1" 597 | esrecurse "^4.1.0" 598 | estraverse "^4.1.1" 599 | 600 | eslint@^3.18.0: 601 | version "3.19.0" 602 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" 603 | dependencies: 604 | babel-code-frame "^6.16.0" 605 | chalk "^1.1.3" 606 | concat-stream "^1.5.2" 607 | debug "^2.1.1" 608 | doctrine "^2.0.0" 609 | escope "^3.6.0" 610 | espree "^3.4.0" 611 | esquery "^1.0.0" 612 | estraverse "^4.2.0" 613 | esutils "^2.0.2" 614 | file-entry-cache "^2.0.0" 615 | glob "^7.0.3" 616 | globals "^9.14.0" 617 | ignore "^3.2.0" 618 | imurmurhash "^0.1.4" 619 | inquirer "^0.12.0" 620 | is-my-json-valid "^2.10.0" 621 | is-resolvable "^1.0.0" 622 | js-yaml "^3.5.1" 623 | json-stable-stringify "^1.0.0" 624 | levn "^0.3.0" 625 | lodash "^4.0.0" 626 | mkdirp "^0.5.0" 627 | natural-compare "^1.4.0" 628 | optionator "^0.8.2" 629 | path-is-inside "^1.0.1" 630 | pluralize "^1.2.1" 631 | progress "^1.1.8" 632 | require-uncached "^1.0.2" 633 | shelljs "^0.7.5" 634 | strip-bom "^3.0.0" 635 | strip-json-comments "~2.0.1" 636 | table "^3.7.8" 637 | text-table "~0.2.0" 638 | user-home "^2.0.0" 639 | 640 | espree@^3.4.0: 641 | version "3.4.1" 642 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" 643 | dependencies: 644 | acorn "^5.0.1" 645 | acorn-jsx "^3.0.0" 646 | 647 | esprima@^3.1.1: 648 | version "3.1.3" 649 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 650 | 651 | esprima@~2.7.0: 652 | version "2.7.3" 653 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 654 | 655 | esquery@^1.0.0: 656 | version "1.0.0" 657 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 658 | dependencies: 659 | estraverse "^4.0.0" 660 | 661 | esrecurse@^4.1.0: 662 | version "4.1.0" 663 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 664 | dependencies: 665 | estraverse "~4.1.0" 666 | object-assign "^4.0.1" 667 | 668 | estraverse@^4.0.0, estraverse@^4.1.1, estraverse@^4.2.0: 669 | version "4.2.0" 670 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 671 | 672 | estraverse@~4.1.0: 673 | version "4.1.1" 674 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 675 | 676 | esutils@^2.0.2: 677 | version "2.0.2" 678 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 679 | 680 | etag@~1.8.0: 681 | version "1.8.0" 682 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" 683 | 684 | event-emitter@~0.3.5: 685 | version "0.3.5" 686 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 687 | dependencies: 688 | d "1" 689 | es5-ext "~0.10.14" 690 | 691 | exit-hook@^1.0.0: 692 | version "1.1.1" 693 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 694 | 695 | expand-brackets@^0.1.4: 696 | version "0.1.5" 697 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 698 | dependencies: 699 | is-posix-bracket "^0.1.0" 700 | 701 | expand-range@^1.8.1: 702 | version "1.8.2" 703 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 704 | dependencies: 705 | fill-range "^2.1.0" 706 | 707 | explicit@^0.1.0: 708 | version "0.1.1" 709 | resolved "https://registry.yarnpkg.com/explicit/-/explicit-0.1.1.tgz#1ccd56c8a9350da2df37d116c125233d152f8110" 710 | dependencies: 711 | joi "^6.10.1" 712 | 713 | express@^4.13.4: 714 | version "4.15.2" 715 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" 716 | dependencies: 717 | accepts "~1.3.3" 718 | array-flatten "1.1.1" 719 | content-disposition "0.5.2" 720 | content-type "~1.0.2" 721 | cookie "0.3.1" 722 | cookie-signature "1.0.6" 723 | debug "2.6.1" 724 | depd "~1.1.0" 725 | encodeurl "~1.0.1" 726 | escape-html "~1.0.3" 727 | etag "~1.8.0" 728 | finalhandler "~1.0.0" 729 | fresh "0.5.0" 730 | merge-descriptors "1.0.1" 731 | methods "~1.1.2" 732 | on-finished "~2.3.0" 733 | parseurl "~1.3.1" 734 | path-to-regexp "0.1.7" 735 | proxy-addr "~1.1.3" 736 | qs "6.4.0" 737 | range-parser "~1.2.0" 738 | send "0.15.1" 739 | serve-static "1.12.1" 740 | setprototypeof "1.0.3" 741 | statuses "~1.3.1" 742 | type-is "~1.6.14" 743 | utils-merge "1.0.0" 744 | vary "~1.1.0" 745 | 746 | extend@^3.0.0, extend@~3.0.0: 747 | version "3.0.0" 748 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 749 | 750 | extended-terminal-menu@^2.1.2: 751 | version "2.1.4" 752 | resolved "https://registry.yarnpkg.com/extended-terminal-menu/-/extended-terminal-menu-2.1.4.tgz#1a82953a439842f543b154b4631809fda32cde13" 753 | dependencies: 754 | charm_inheritance-fix "^1.0.1" 755 | duplexer2 "0.0.2" 756 | inherits "~2.0.0" 757 | resumer "~0.0.0" 758 | through2 "^0.6.3" 759 | wcstring "^2.1.0" 760 | 761 | extglob@^0.3.1: 762 | version "0.3.2" 763 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 764 | dependencies: 765 | is-extglob "^1.0.0" 766 | 767 | extsprintf@1.0.2: 768 | version "1.0.2" 769 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 770 | 771 | fast-levenshtein@~2.0.4: 772 | version "2.0.6" 773 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 774 | 775 | figures@^1.3.5: 776 | version "1.7.0" 777 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 778 | dependencies: 779 | escape-string-regexp "^1.0.5" 780 | object-assign "^4.1.0" 781 | 782 | file-entry-cache@^2.0.0: 783 | version "2.0.0" 784 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 785 | dependencies: 786 | flat-cache "^1.2.1" 787 | object-assign "^4.0.1" 788 | 789 | filename-regex@^2.0.0: 790 | version "2.0.0" 791 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 792 | 793 | fill-range@^2.1.0: 794 | version "2.2.3" 795 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 796 | dependencies: 797 | is-number "^2.1.0" 798 | isobject "^2.0.0" 799 | randomatic "^1.1.3" 800 | repeat-element "^1.1.2" 801 | repeat-string "^1.5.2" 802 | 803 | finalhandler@~1.0.0: 804 | version "1.0.1" 805 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.1.tgz#bcd15d1689c0e5ed729b6f7f541a6df984117db8" 806 | dependencies: 807 | debug "2.6.3" 808 | encodeurl "~1.0.1" 809 | escape-html "~1.0.3" 810 | on-finished "~2.3.0" 811 | parseurl "~1.3.1" 812 | statuses "~1.3.1" 813 | unpipe "~1.0.0" 814 | 815 | flat-cache@^1.2.1: 816 | version "1.2.2" 817 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 818 | dependencies: 819 | circular-json "^0.3.1" 820 | del "^2.0.2" 821 | graceful-fs "^4.1.2" 822 | write "^0.2.1" 823 | 824 | for-in@^1.0.1: 825 | version "1.0.2" 826 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 827 | 828 | for-own@^0.1.4: 829 | version "0.1.5" 830 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 831 | dependencies: 832 | for-in "^1.0.1" 833 | 834 | forever-agent@~0.6.1: 835 | version "0.6.1" 836 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 837 | 838 | form-data@~2.1.1: 839 | version "2.1.2" 840 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 841 | dependencies: 842 | asynckit "^0.4.0" 843 | combined-stream "^1.0.5" 844 | mime-types "^2.1.12" 845 | 846 | forwarded@~0.1.0: 847 | version "0.1.0" 848 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 849 | 850 | fresh@0.5.0: 851 | version "0.5.0" 852 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" 853 | 854 | fs.realpath@^1.0.0: 855 | version "1.0.0" 856 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 857 | 858 | fsevents@^1.0.0: 859 | version "1.1.1" 860 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" 861 | dependencies: 862 | nan "^2.3.0" 863 | node-pre-gyp "^0.6.29" 864 | 865 | fstream-ignore@^1.0.5: 866 | version "1.0.5" 867 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 868 | dependencies: 869 | fstream "^1.0.0" 870 | inherits "2" 871 | minimatch "^3.0.0" 872 | 873 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: 874 | version "1.0.11" 875 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 876 | dependencies: 877 | graceful-fs "^4.1.2" 878 | inherits "~2.0.0" 879 | mkdirp ">=0.5 0" 880 | rimraf "2" 881 | 882 | function-bind@^1.0.2: 883 | version "1.1.0" 884 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 885 | 886 | gauge@~2.7.1: 887 | version "2.7.3" 888 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" 889 | dependencies: 890 | aproba "^1.0.3" 891 | console-control-strings "^1.0.0" 892 | has-unicode "^2.0.0" 893 | object-assign "^4.1.0" 894 | signal-exit "^3.0.0" 895 | string-width "^1.0.1" 896 | strip-ansi "^3.0.1" 897 | wide-align "^1.1.0" 898 | 899 | generate-function@^2.0.0: 900 | version "2.0.0" 901 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 902 | 903 | generate-object-property@^1.1.0: 904 | version "1.2.0" 905 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 906 | dependencies: 907 | is-property "^1.0.0" 908 | 909 | get-stream@^3.0.0: 910 | version "3.0.0" 911 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 912 | 913 | getpass@^0.1.1: 914 | version "0.1.6" 915 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 916 | dependencies: 917 | assert-plus "^1.0.0" 918 | 919 | glob-base@^0.3.0: 920 | version "0.3.0" 921 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 922 | dependencies: 923 | glob-parent "^2.0.0" 924 | is-glob "^2.0.0" 925 | 926 | glob-parent@^2.0.0: 927 | version "2.0.0" 928 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 929 | dependencies: 930 | is-glob "^2.0.0" 931 | 932 | glob@3.2.11: 933 | version "3.2.11" 934 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" 935 | dependencies: 936 | inherits "2" 937 | minimatch "0.3" 938 | 939 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 940 | version "7.1.1" 941 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 942 | dependencies: 943 | fs.realpath "^1.0.0" 944 | inflight "^1.0.4" 945 | inherits "2" 946 | minimatch "^3.0.2" 947 | once "^1.3.0" 948 | path-is-absolute "^1.0.0" 949 | 950 | globals@^9.14.0: 951 | version "9.17.0" 952 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" 953 | 954 | globby@^5.0.0: 955 | version "5.0.0" 956 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 957 | dependencies: 958 | array-union "^1.0.1" 959 | arrify "^1.0.0" 960 | glob "^7.0.3" 961 | object-assign "^4.0.1" 962 | pify "^2.0.0" 963 | pinkie-promise "^2.0.0" 964 | 965 | got@^6.7.1: 966 | version "6.7.1" 967 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 968 | dependencies: 969 | create-error-class "^3.0.0" 970 | duplexer3 "^0.1.4" 971 | get-stream "^3.0.0" 972 | is-redirect "^1.0.0" 973 | is-retry-allowed "^1.0.0" 974 | is-stream "^1.0.0" 975 | lowercase-keys "^1.0.0" 976 | safe-buffer "^5.0.1" 977 | timed-out "^4.0.0" 978 | unzip-response "^2.0.1" 979 | url-parse-lax "^1.0.0" 980 | 981 | graceful-fs@^4.1.2: 982 | version "4.1.11" 983 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 984 | 985 | growl@1.9.2: 986 | version "1.9.2" 987 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" 988 | 989 | har-schema@^1.0.5: 990 | version "1.0.5" 991 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 992 | 993 | har-validator@~4.2.1: 994 | version "4.2.1" 995 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 996 | dependencies: 997 | ajv "^4.9.1" 998 | har-schema "^1.0.5" 999 | 1000 | has-ansi@^2.0.0: 1001 | version "2.0.0" 1002 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1003 | dependencies: 1004 | ansi-regex "^2.0.0" 1005 | 1006 | has-unicode@^2.0.0: 1007 | version "2.0.1" 1008 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1009 | 1010 | has@^1.0.1: 1011 | version "1.0.1" 1012 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 1013 | dependencies: 1014 | function-bind "^1.0.2" 1015 | 1016 | hast-util-is-element@^1.0.0: 1017 | version "1.0.0" 1018 | resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.0.0.tgz#3f7216978b2ae14d98749878782675f33be3ce00" 1019 | 1020 | hast-util-sanitize@^1.0.0: 1021 | version "1.1.0" 1022 | resolved "https://registry.yarnpkg.com/hast-util-sanitize/-/hast-util-sanitize-1.1.0.tgz#9b4bc3731043fe92e1253a9a4ca7bcc4148d06f2" 1023 | dependencies: 1024 | has "^1.0.1" 1025 | xtend "^4.0.1" 1026 | 1027 | hast-util-to-html@^3.0.0: 1028 | version "3.0.0" 1029 | resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-3.0.0.tgz#19a257cd7af464777c1cccf4d2d53d33147466c1" 1030 | dependencies: 1031 | ccount "^1.0.0" 1032 | comma-separated-tokens "^1.0.1" 1033 | has "^1.0.1" 1034 | hast-util-is-element "^1.0.0" 1035 | hast-util-whitespace "^1.0.0" 1036 | html-void-elements "^1.0.0" 1037 | kebab-case "^1.0.0" 1038 | property-information "^3.1.0" 1039 | space-separated-tokens "^1.0.0" 1040 | stringify-entities "^1.0.1" 1041 | unist-util-is "^2.0.0" 1042 | xtend "^4.0.1" 1043 | 1044 | hast-util-whitespace@^1.0.0: 1045 | version "1.0.0" 1046 | resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.0.tgz#bd096919625d2936e1ff17bc4df7fd727f17ece9" 1047 | 1048 | hawk@~3.1.3: 1049 | version "3.1.3" 1050 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1051 | dependencies: 1052 | boom "2.x.x" 1053 | cryptiles "2.x.x" 1054 | hoek "2.x.x" 1055 | sntp "1.x.x" 1056 | 1057 | hoek@2.x.x: 1058 | version "2.16.3" 1059 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1060 | 1061 | html-void-elements@^1.0.0: 1062 | version "1.0.1" 1063 | resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.1.tgz#f929bea267a19e3535950502ca12c159f1b559af" 1064 | 1065 | http-errors@~1.6.1: 1066 | version "1.6.1" 1067 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" 1068 | dependencies: 1069 | depd "1.1.0" 1070 | inherits "2.0.3" 1071 | setprototypeof "1.0.3" 1072 | statuses ">= 1.3.1 < 2" 1073 | 1074 | http-signature@~1.1.0: 1075 | version "1.1.1" 1076 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1077 | dependencies: 1078 | assert-plus "^0.2.0" 1079 | jsprim "^1.2.2" 1080 | sshpk "^1.7.0" 1081 | 1082 | i18n-core@^3.0.0: 1083 | version "3.0.0" 1084 | resolved "https://registry.yarnpkg.com/i18n-core/-/i18n-core-3.0.0.tgz#23beda4fd7e9dcd0402aafbf6771cd1339ba8f5d" 1085 | 1086 | ignore@^3.2.0: 1087 | version "3.2.6" 1088 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" 1089 | 1090 | imurmurhash@^0.1.4: 1091 | version "0.1.4" 1092 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1093 | 1094 | inflight@^1.0.4: 1095 | version "1.0.6" 1096 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1097 | dependencies: 1098 | once "^1.3.0" 1099 | wrappy "1" 1100 | 1101 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1: 1102 | version "2.0.3" 1103 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1104 | 1105 | ini@~1.3.0: 1106 | version "1.3.4" 1107 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1108 | 1109 | inquirer@^0.12.0: 1110 | version "0.12.0" 1111 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 1112 | dependencies: 1113 | ansi-escapes "^1.1.0" 1114 | ansi-regex "^2.0.0" 1115 | chalk "^1.0.0" 1116 | cli-cursor "^1.0.1" 1117 | cli-width "^2.0.0" 1118 | figures "^1.3.5" 1119 | lodash "^4.3.0" 1120 | readline2 "^1.0.1" 1121 | run-async "^0.1.0" 1122 | rx-lite "^3.1.2" 1123 | string-width "^1.0.1" 1124 | strip-ansi "^3.0.0" 1125 | through "^2.3.6" 1126 | 1127 | interpret@^1.0.0: 1128 | version "1.0.2" 1129 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" 1130 | 1131 | ipaddr.js@1.3.0: 1132 | version "1.3.0" 1133 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec" 1134 | 1135 | is-alphabetical@^1.0.0: 1136 | version "1.0.0" 1137 | resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.0.tgz#e2544c13058255f2144cb757066cd3342a1c8c46" 1138 | 1139 | is-alphanumeric@^1.0.0: 1140 | version "1.0.0" 1141 | resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" 1142 | 1143 | is-alphanumerical@^1.0.0: 1144 | version "1.0.0" 1145 | resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.0.tgz#e06492e719c1bf15dec239e4f1af5f67b4d6e7bf" 1146 | dependencies: 1147 | is-alphabetical "^1.0.0" 1148 | is-decimal "^1.0.0" 1149 | 1150 | is-binary-path@^1.0.0: 1151 | version "1.0.1" 1152 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1153 | dependencies: 1154 | binary-extensions "^1.0.0" 1155 | 1156 | is-buffer@^1.0.2, is-buffer@^1.1.4: 1157 | version "1.1.5" 1158 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1159 | 1160 | is-decimal@^1.0.0: 1161 | version "1.0.0" 1162 | resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.0.tgz#940579b6ea63c628080a69e62bda88c8470b4fe0" 1163 | 1164 | is-dotfile@^1.0.0: 1165 | version "1.0.2" 1166 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1167 | 1168 | is-equal-shallow@^0.1.3: 1169 | version "0.1.3" 1170 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1171 | dependencies: 1172 | is-primitive "^2.0.0" 1173 | 1174 | is-extendable@^0.1.1: 1175 | version "0.1.1" 1176 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1177 | 1178 | is-extglob@^1.0.0: 1179 | version "1.0.0" 1180 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1181 | 1182 | is-fullwidth-code-point@^1.0.0: 1183 | version "1.0.0" 1184 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1185 | dependencies: 1186 | number-is-nan "^1.0.0" 1187 | 1188 | is-fullwidth-code-point@^2.0.0: 1189 | version "2.0.0" 1190 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1191 | 1192 | is-glob@^2.0.0, is-glob@^2.0.1: 1193 | version "2.0.1" 1194 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1195 | dependencies: 1196 | is-extglob "^1.0.0" 1197 | 1198 | is-hexadecimal@^1.0.0: 1199 | version "1.0.0" 1200 | resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.0.tgz#5c459771d2af9a2e3952781fd54fcb1bcfe4113c" 1201 | 1202 | is-my-json-valid@^2.10.0: 1203 | version "2.16.0" 1204 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 1205 | dependencies: 1206 | generate-function "^2.0.0" 1207 | generate-object-property "^1.1.0" 1208 | jsonpointer "^4.0.0" 1209 | xtend "^4.0.0" 1210 | 1211 | is-number@^2.0.2, is-number@^2.1.0: 1212 | version "2.1.0" 1213 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1214 | dependencies: 1215 | kind-of "^3.0.2" 1216 | 1217 | is-path-cwd@^1.0.0: 1218 | version "1.0.0" 1219 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1220 | 1221 | is-path-in-cwd@^1.0.0: 1222 | version "1.0.0" 1223 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1224 | dependencies: 1225 | is-path-inside "^1.0.0" 1226 | 1227 | is-path-inside@^1.0.0: 1228 | version "1.0.0" 1229 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1230 | dependencies: 1231 | path-is-inside "^1.0.1" 1232 | 1233 | is-plain-obj@^1.1.0: 1234 | version "1.1.0" 1235 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1236 | 1237 | is-posix-bracket@^0.1.0: 1238 | version "0.1.1" 1239 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1240 | 1241 | is-primitive@^2.0.0: 1242 | version "2.0.0" 1243 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1244 | 1245 | is-property@^1.0.0: 1246 | version "1.0.2" 1247 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1248 | 1249 | is-redirect@^1.0.0: 1250 | version "1.0.0" 1251 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1252 | 1253 | is-resolvable@^1.0.0: 1254 | version "1.0.0" 1255 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 1256 | dependencies: 1257 | tryit "^1.0.1" 1258 | 1259 | is-retry-allowed@^1.0.0: 1260 | version "1.1.0" 1261 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1262 | 1263 | is-stream@^1.0.0: 1264 | version "1.1.0" 1265 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1266 | 1267 | is-typedarray@~1.0.0: 1268 | version "1.0.0" 1269 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1270 | 1271 | is-whitespace-character@^1.0.0: 1272 | version "1.0.0" 1273 | resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.0.tgz#bbf4a83764ead0d451bec2a55218e91961adc275" 1274 | 1275 | is-word-character@^1.0.0: 1276 | version "1.0.0" 1277 | resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.0.tgz#a3a9e5ddad70c5c2ee36f4a9cfc9a53f44535247" 1278 | 1279 | isarray@0.0.1: 1280 | version "0.0.1" 1281 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1282 | 1283 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 1284 | version "1.0.0" 1285 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1286 | 1287 | isarray@^2.0.1: 1288 | version "2.0.1" 1289 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" 1290 | 1291 | isemail@1.x.x: 1292 | version "1.2.0" 1293 | resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a" 1294 | 1295 | isobject@^2.0.0: 1296 | version "2.1.0" 1297 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1298 | dependencies: 1299 | isarray "1.0.0" 1300 | 1301 | isstream@~0.1.2: 1302 | version "0.1.2" 1303 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1304 | 1305 | jade@0.26.3: 1306 | version "0.26.3" 1307 | resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" 1308 | dependencies: 1309 | commander "0.6.1" 1310 | mkdirp "0.3.0" 1311 | 1312 | jodid25519@^1.0.0: 1313 | version "1.0.2" 1314 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1315 | dependencies: 1316 | jsbn "~0.1.0" 1317 | 1318 | joi@^6.10.1: 1319 | version "6.10.1" 1320 | resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06" 1321 | dependencies: 1322 | hoek "2.x.x" 1323 | isemail "1.x.x" 1324 | moment "2.x.x" 1325 | topo "1.x.x" 1326 | 1327 | js-tokens@^3.0.0: 1328 | version "3.0.1" 1329 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 1330 | 1331 | js-yaml@^3.5.1: 1332 | version "3.8.3" 1333 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" 1334 | dependencies: 1335 | argparse "^1.0.7" 1336 | esprima "^3.1.1" 1337 | 1338 | jsbn@~0.1.0: 1339 | version "0.1.1" 1340 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1341 | 1342 | json-schema@0.2.3: 1343 | version "0.2.3" 1344 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1345 | 1346 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 1347 | version "1.0.1" 1348 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1349 | dependencies: 1350 | jsonify "~0.0.0" 1351 | 1352 | json-stringify-safe@~5.0.1: 1353 | version "5.0.1" 1354 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1355 | 1356 | jsonify@~0.0.0: 1357 | version "0.0.0" 1358 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1359 | 1360 | jsonpointer@^4.0.0: 1361 | version "4.0.1" 1362 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1363 | 1364 | jsprim@^1.2.2: 1365 | version "1.4.0" 1366 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" 1367 | dependencies: 1368 | assert-plus "1.0.0" 1369 | extsprintf "1.0.2" 1370 | json-schema "0.2.3" 1371 | verror "1.3.6" 1372 | 1373 | kebab-case@^1.0.0: 1374 | version "1.0.0" 1375 | resolved "https://registry.yarnpkg.com/kebab-case/-/kebab-case-1.0.0.tgz#3f9e4990adcad0c686c0e701f7645868f75f91eb" 1376 | 1377 | kind-of@^3.0.2: 1378 | version "3.1.0" 1379 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1380 | dependencies: 1381 | is-buffer "^1.0.2" 1382 | 1383 | latest-version@^3.0.0: 1384 | version "3.1.0" 1385 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 1386 | dependencies: 1387 | package-json "^4.0.0" 1388 | 1389 | levn@^0.3.0, levn@~0.3.0: 1390 | version "0.3.0" 1391 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1392 | dependencies: 1393 | prelude-ls "~1.1.2" 1394 | type-check "~0.3.2" 1395 | 1396 | lodash@^4.0.0, lodash@^4.3.0, lodash@^4.6.0: 1397 | version "4.17.4" 1398 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1399 | 1400 | longest-streak@^2.0.1: 1401 | version "2.0.1" 1402 | resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.1.tgz#42d291b5411e40365c00e63193497e2247316e35" 1403 | 1404 | lowercase-keys@^1.0.0: 1405 | version "1.0.0" 1406 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 1407 | 1408 | lru-cache@2: 1409 | version "2.7.3" 1410 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 1411 | 1412 | markdown-escapes@^1.0.0: 1413 | version "1.0.0" 1414 | resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.0.tgz#c8ca19f1d94d682459e0a93c86db27a7ef716b23" 1415 | 1416 | markdown-table@^1.1.0: 1417 | version "1.1.0" 1418 | resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.0.tgz#1f5ae61659ced8808d882554c32e8b3f38dd1143" 1419 | 1420 | marked@^0.3.5: 1421 | version "0.3.6" 1422 | resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" 1423 | 1424 | mdast-util-compact@^1.0.0: 1425 | version "1.0.0" 1426 | resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.0.tgz#4c94dedfe35932d5457f29b650b330fdc73e994a" 1427 | dependencies: 1428 | unist-util-modify-children "^1.0.0" 1429 | unist-util-visit "^1.1.0" 1430 | 1431 | mdast-util-definitions@^1.2.0: 1432 | version "1.2.0" 1433 | resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.0.tgz#00f67b4289ed36bafc0977b558414ac0c5023b24" 1434 | dependencies: 1435 | has "^1.0.1" 1436 | unist-util-visit "^1.0.0" 1437 | 1438 | mdast-util-to-hast@^2.1.1: 1439 | version "2.4.0" 1440 | resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-2.4.0.tgz#63ce8e43c61d8e5728954a3515e0c936a3b26cea" 1441 | dependencies: 1442 | collapse-white-space "^1.0.0" 1443 | detab "^2.0.0" 1444 | has "^1.0.1" 1445 | mdast-util-definitions "^1.2.0" 1446 | normalize-uri "^1.0.0" 1447 | trim "0.0.1" 1448 | trim-lines "^1.0.0" 1449 | unist-builder "^1.0.1" 1450 | unist-util-generated "^1.1.0" 1451 | unist-util-position "^3.0.0" 1452 | unist-util-visit "^1.1.0" 1453 | xtend "^4.0.1" 1454 | 1455 | media-typer@0.3.0: 1456 | version "0.3.0" 1457 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1458 | 1459 | merge-descriptors@1.0.1: 1460 | version "1.0.1" 1461 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1462 | 1463 | methods@~1.1.2: 1464 | version "1.1.2" 1465 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1466 | 1467 | micromatch@^2.1.5: 1468 | version "2.3.11" 1469 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1470 | dependencies: 1471 | arr-diff "^2.0.0" 1472 | array-unique "^0.2.1" 1473 | braces "^1.8.2" 1474 | expand-brackets "^0.1.4" 1475 | extglob "^0.3.1" 1476 | filename-regex "^2.0.0" 1477 | is-extglob "^1.0.0" 1478 | is-glob "^2.0.1" 1479 | kind-of "^3.0.2" 1480 | normalize-path "^2.0.1" 1481 | object.omit "^2.0.0" 1482 | parse-glob "^3.0.4" 1483 | regex-cache "^0.4.2" 1484 | 1485 | mime-db@~1.27.0: 1486 | version "1.27.0" 1487 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" 1488 | 1489 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: 1490 | version "2.1.15" 1491 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" 1492 | dependencies: 1493 | mime-db "~1.27.0" 1494 | 1495 | mime@1.3.4: 1496 | version "1.3.4" 1497 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 1498 | 1499 | minimatch@0.3: 1500 | version "0.3.0" 1501 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" 1502 | dependencies: 1503 | lru-cache "2" 1504 | sigmund "~1.0.0" 1505 | 1506 | minimatch@^3.0.0, minimatch@^3.0.2: 1507 | version "3.0.3" 1508 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1509 | dependencies: 1510 | brace-expansion "^1.0.0" 1511 | 1512 | minimist@0.0.8: 1513 | version "0.0.8" 1514 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1515 | 1516 | minimist@^1.1.1, minimist@^1.2.0: 1517 | version "1.2.0" 1518 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1519 | 1520 | mkdirp@0.3.0: 1521 | version "0.3.0" 1522 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" 1523 | 1524 | mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: 1525 | version "0.5.1" 1526 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1527 | dependencies: 1528 | minimist "0.0.8" 1529 | 1530 | mocha@^2.4.5: 1531 | version "2.5.3" 1532 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-2.5.3.tgz#161be5bdeb496771eb9b35745050b622b5aefc58" 1533 | dependencies: 1534 | commander "2.3.0" 1535 | debug "2.2.0" 1536 | diff "1.4.0" 1537 | escape-string-regexp "1.0.2" 1538 | glob "3.2.11" 1539 | growl "1.9.2" 1540 | jade "0.26.3" 1541 | mkdirp "0.5.1" 1542 | supports-color "1.2.0" 1543 | to-iso-string "0.0.2" 1544 | 1545 | moment@2.x.x: 1546 | version "2.18.1" 1547 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 1548 | 1549 | ms@0.7.1: 1550 | version "0.7.1" 1551 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1552 | 1553 | ms@0.7.2: 1554 | version "0.7.2" 1555 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1556 | 1557 | msee@^0.3.2: 1558 | version "0.3.3" 1559 | resolved "https://registry.yarnpkg.com/msee/-/msee-0.3.3.tgz#be36b6d08eb5e2548a7b1dda7a0d45b6888eeced" 1560 | dependencies: 1561 | ansi-regex "^2.0.0" 1562 | ansicolors "^0.3.2" 1563 | cardinal "^0.7.1" 1564 | chalk "^1.1.1" 1565 | combined-stream-wait-for-it "^1.1.0" 1566 | entities "^1.1.1" 1567 | marked "^0.3.5" 1568 | nopt "^3.0.4" 1569 | table-header "^0.2.2" 1570 | text-table "^0.2.0" 1571 | through2 "^2.0.3" 1572 | wcstring "^2.1.0" 1573 | xtend "^4.0.0" 1574 | 1575 | mute-stream@0.0.5: 1576 | version "0.0.5" 1577 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 1578 | 1579 | nan@^2.3.0: 1580 | version "2.6.1" 1581 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01" 1582 | 1583 | natural-compare@^1.4.0: 1584 | version "1.4.0" 1585 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1586 | 1587 | negotiator@0.6.1: 1588 | version "0.6.1" 1589 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 1590 | 1591 | node-pre-gyp@^0.6.29: 1592 | version "0.6.34" 1593 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" 1594 | dependencies: 1595 | mkdirp "^0.5.1" 1596 | nopt "^4.0.1" 1597 | npmlog "^4.0.2" 1598 | rc "^1.1.7" 1599 | request "^2.81.0" 1600 | rimraf "^2.6.1" 1601 | semver "^5.3.0" 1602 | tar "^2.2.1" 1603 | tar-pack "^3.4.0" 1604 | 1605 | nopt@^3.0.4: 1606 | version "3.0.6" 1607 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1608 | dependencies: 1609 | abbrev "1" 1610 | 1611 | nopt@^4.0.1: 1612 | version "4.0.1" 1613 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1614 | dependencies: 1615 | abbrev "1" 1616 | osenv "^0.1.4" 1617 | 1618 | normalize-path@^2.0.1: 1619 | version "2.1.1" 1620 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1621 | dependencies: 1622 | remove-trailing-separator "^1.0.1" 1623 | 1624 | normalize-uri@^1.0.0: 1625 | version "1.1.0" 1626 | resolved "https://registry.yarnpkg.com/normalize-uri/-/normalize-uri-1.1.0.tgz#01fb440c7fd059b9d9be8645aac14341efd059dd" 1627 | 1628 | npmlog@^4.0.2: 1629 | version "4.0.2" 1630 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 1631 | dependencies: 1632 | are-we-there-yet "~1.1.2" 1633 | console-control-strings "~1.1.0" 1634 | gauge "~2.7.1" 1635 | set-blocking "~2.0.0" 1636 | 1637 | number-is-nan@^1.0.0: 1638 | version "1.0.1" 1639 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1640 | 1641 | oauth-sign@~0.8.1: 1642 | version "0.8.2" 1643 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1644 | 1645 | object-assign@^4.0.1, object-assign@^4.1.0: 1646 | version "4.1.1" 1647 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1648 | 1649 | object.omit@^2.0.0: 1650 | version "2.0.1" 1651 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1652 | dependencies: 1653 | for-own "^0.1.4" 1654 | is-extendable "^0.1.1" 1655 | 1656 | on-finished@~2.3.0: 1657 | version "2.3.0" 1658 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1659 | dependencies: 1660 | ee-first "1.1.1" 1661 | 1662 | once@^1.3.0, once@^1.3.3: 1663 | version "1.4.0" 1664 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1665 | dependencies: 1666 | wrappy "1" 1667 | 1668 | onetime@^1.0.0: 1669 | version "1.1.0" 1670 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 1671 | 1672 | openurl@^1.1.1: 1673 | version "1.1.1" 1674 | resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.1.tgz#3875b4b0ef7a52c156f0db41d4609dbb0f94b387" 1675 | 1676 | optionator@^0.8.2: 1677 | version "0.8.2" 1678 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1679 | dependencies: 1680 | deep-is "~0.1.3" 1681 | fast-levenshtein "~2.0.4" 1682 | levn "~0.3.0" 1683 | prelude-ls "~1.1.2" 1684 | type-check "~0.3.2" 1685 | wordwrap "~1.0.0" 1686 | 1687 | os-homedir@^1.0.0: 1688 | version "1.0.2" 1689 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1690 | 1691 | os-tmpdir@^1.0.0: 1692 | version "1.0.2" 1693 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1694 | 1695 | osenv@^0.1.4: 1696 | version "0.1.4" 1697 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 1698 | dependencies: 1699 | os-homedir "^1.0.0" 1700 | os-tmpdir "^1.0.0" 1701 | 1702 | package-json@^4.0.0: 1703 | version "4.0.0" 1704 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.0.tgz#f3c9dc8738f5b59304d54d2cfb3f91d08fdd7998" 1705 | dependencies: 1706 | got "^6.7.1" 1707 | registry-auth-token "^3.0.1" 1708 | registry-url "^3.0.3" 1709 | semver "^5.1.0" 1710 | 1711 | parse-entities@^1.0.2: 1712 | version "1.1.0" 1713 | resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.0.tgz#4bc58f35fdc8e65dded35a12f2e40223ca24a3f7" 1714 | dependencies: 1715 | character-entities "^1.0.0" 1716 | character-entities-legacy "^1.0.0" 1717 | character-reference-invalid "^1.0.0" 1718 | has "^1.0.1" 1719 | is-alphanumerical "^1.0.0" 1720 | is-decimal "^1.0.0" 1721 | is-hexadecimal "^1.0.0" 1722 | 1723 | parse-glob@^3.0.4: 1724 | version "3.0.4" 1725 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1726 | dependencies: 1727 | glob-base "^0.3.0" 1728 | is-dotfile "^1.0.0" 1729 | is-extglob "^1.0.0" 1730 | is-glob "^2.0.0" 1731 | 1732 | parseurl@~1.3.1: 1733 | version "1.3.1" 1734 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 1735 | 1736 | path-is-absolute@^1.0.0: 1737 | version "1.0.1" 1738 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1739 | 1740 | path-is-inside@^1.0.1: 1741 | version "1.0.2" 1742 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1743 | 1744 | path-parse@^1.0.5: 1745 | version "1.0.5" 1746 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 1747 | 1748 | path-to-regexp@0.1.7: 1749 | version "0.1.7" 1750 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1751 | 1752 | performance-now@^0.2.0: 1753 | version "0.2.0" 1754 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 1755 | 1756 | pify@^2.0.0: 1757 | version "2.3.0" 1758 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1759 | 1760 | pinkie-promise@^2.0.0: 1761 | version "2.0.1" 1762 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1763 | dependencies: 1764 | pinkie "^2.0.0" 1765 | 1766 | pinkie@^2.0.0: 1767 | version "2.0.4" 1768 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1769 | 1770 | pluralize@^1.2.1: 1771 | version "1.2.1" 1772 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 1773 | 1774 | prelude-ls@~1.1.2: 1775 | version "1.1.2" 1776 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1777 | 1778 | prepend-http@^1.0.1: 1779 | version "1.0.4" 1780 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 1781 | 1782 | preserve@^0.2.0: 1783 | version "0.2.0" 1784 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1785 | 1786 | process-nextick-args@~1.0.6: 1787 | version "1.0.7" 1788 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1789 | 1790 | progress@^1.1.8: 1791 | version "1.1.8" 1792 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 1793 | 1794 | property-information@^3.1.0: 1795 | version "3.1.0" 1796 | resolved "https://registry.yarnpkg.com/property-information/-/property-information-3.1.0.tgz#1581bf8a445dfbfef759775a86700e8dda18b4a1" 1797 | 1798 | proxy-addr@~1.1.3: 1799 | version "1.1.4" 1800 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3" 1801 | dependencies: 1802 | forwarded "~0.1.0" 1803 | ipaddr.js "1.3.0" 1804 | 1805 | punycode@^1.4.1: 1806 | version "1.4.1" 1807 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1808 | 1809 | qs@6.4.0, qs@~6.4.0: 1810 | version "6.4.0" 1811 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1812 | 1813 | randomatic@^1.1.3: 1814 | version "1.1.6" 1815 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 1816 | dependencies: 1817 | is-number "^2.0.2" 1818 | kind-of "^3.0.2" 1819 | 1820 | range-parser@~1.2.0: 1821 | version "1.2.0" 1822 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 1823 | 1824 | rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: 1825 | version "1.2.1" 1826 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" 1827 | dependencies: 1828 | deep-extend "~0.4.0" 1829 | ini "~1.3.0" 1830 | minimist "^1.2.0" 1831 | strip-json-comments "~2.0.1" 1832 | 1833 | "readable-stream@>=1.0.33-1 <1.1.0-0": 1834 | version "1.0.34" 1835 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 1836 | dependencies: 1837 | core-util-is "~1.0.0" 1838 | inherits "~2.0.1" 1839 | isarray "0.0.1" 1840 | string_decoder "~0.10.x" 1841 | 1842 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.0, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: 1843 | version "2.2.6" 1844 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.6.tgz#8b43aed76e71483938d12a8d46c6cf1a00b1f816" 1845 | dependencies: 1846 | buffer-shims "^1.0.0" 1847 | core-util-is "~1.0.0" 1848 | inherits "~2.0.1" 1849 | isarray "~1.0.0" 1850 | process-nextick-args "~1.0.6" 1851 | string_decoder "~0.10.x" 1852 | util-deprecate "~1.0.1" 1853 | 1854 | readable-stream@~1.1.9: 1855 | version "1.1.14" 1856 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 1857 | dependencies: 1858 | core-util-is "~1.0.0" 1859 | inherits "~2.0.1" 1860 | isarray "0.0.1" 1861 | string_decoder "~0.10.x" 1862 | 1863 | readdirp@^2.0.0: 1864 | version "2.1.0" 1865 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1866 | dependencies: 1867 | graceful-fs "^4.1.2" 1868 | minimatch "^3.0.2" 1869 | readable-stream "^2.0.2" 1870 | set-immediate-shim "^1.0.1" 1871 | 1872 | readline2@^1.0.1: 1873 | version "1.0.1" 1874 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 1875 | dependencies: 1876 | code-point-at "^1.0.0" 1877 | is-fullwidth-code-point "^1.0.0" 1878 | mute-stream "0.0.5" 1879 | 1880 | rechoir@^0.6.2: 1881 | version "0.6.2" 1882 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1883 | dependencies: 1884 | resolve "^1.1.6" 1885 | 1886 | redeyed@~0.6.0: 1887 | version "0.6.0" 1888 | resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-0.6.0.tgz#692a2f765fecab433549edd439a7684aab67f789" 1889 | dependencies: 1890 | esprima "~2.7.0" 1891 | 1892 | regex-cache@^0.4.2: 1893 | version "0.4.3" 1894 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1895 | dependencies: 1896 | is-equal-shallow "^0.1.3" 1897 | is-primitive "^2.0.0" 1898 | 1899 | registry-auth-token@^3.0.1: 1900 | version "3.1.0" 1901 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.1.0.tgz#997c08256e0c7999837b90e944db39d8a790276b" 1902 | dependencies: 1903 | rc "^1.1.6" 1904 | 1905 | registry-url@^3.0.3: 1906 | version "3.1.0" 1907 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 1908 | dependencies: 1909 | rc "^1.0.1" 1910 | 1911 | remark-html@^6.0.0: 1912 | version "6.0.0" 1913 | resolved "https://registry.yarnpkg.com/remark-html/-/remark-html-6.0.0.tgz#ade7d94b60e452158f28615218450682601dbfc1" 1914 | dependencies: 1915 | hast-util-sanitize "^1.0.0" 1916 | hast-util-to-html "^3.0.0" 1917 | mdast-util-to-hast "^2.1.1" 1918 | xtend "^4.0.1" 1919 | 1920 | remark-parse@^3.0.0: 1921 | version "3.0.0" 1922 | resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-3.0.0.tgz#f078c8c9976efb0f2afd011c79f30708354593b1" 1923 | dependencies: 1924 | collapse-white-space "^1.0.2" 1925 | has "^1.0.1" 1926 | is-alphabetical "^1.0.0" 1927 | is-decimal "^1.0.0" 1928 | is-whitespace-character "^1.0.0" 1929 | is-word-character "^1.0.0" 1930 | markdown-escapes "^1.0.0" 1931 | parse-entities "^1.0.2" 1932 | repeat-string "^1.5.4" 1933 | state-toggle "^1.0.0" 1934 | trim "0.0.1" 1935 | trim-trailing-lines "^1.0.0" 1936 | unherit "^1.0.4" 1937 | unist-util-remove-position "^1.0.0" 1938 | vfile-location "^2.0.0" 1939 | xtend "^4.0.1" 1940 | 1941 | remark-stringify@^3.0.0: 1942 | version "3.0.0" 1943 | resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-3.0.0.tgz#f1720893a3e7c845824d95bb573d628d1346ba2a" 1944 | dependencies: 1945 | ccount "^1.0.0" 1946 | is-alphanumeric "^1.0.0" 1947 | is-decimal "^1.0.0" 1948 | is-whitespace-character "^1.0.0" 1949 | longest-streak "^2.0.1" 1950 | markdown-escapes "^1.0.0" 1951 | markdown-table "^1.1.0" 1952 | mdast-util-compact "^1.0.0" 1953 | parse-entities "^1.0.2" 1954 | repeat-string "^1.5.4" 1955 | state-toggle "^1.0.0" 1956 | stringify-entities "^1.0.1" 1957 | unherit "^1.0.4" 1958 | xtend "^4.0.1" 1959 | 1960 | remark@^7.0.0: 1961 | version "7.0.0" 1962 | resolved "https://registry.yarnpkg.com/remark/-/remark-7.0.0.tgz#ce9c788c390d98d9a67cb7738e98246732e79144" 1963 | dependencies: 1964 | remark-parse "^3.0.0" 1965 | remark-stringify "^3.0.0" 1966 | unified "^6.0.0" 1967 | 1968 | remove-trailing-separator@^1.0.1: 1969 | version "1.0.1" 1970 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" 1971 | 1972 | repeat-element@^1.1.2: 1973 | version "1.1.2" 1974 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1975 | 1976 | repeat-string@^1.5.2, repeat-string@^1.5.4: 1977 | version "1.6.1" 1978 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1979 | 1980 | replace-ext@1.0.0: 1981 | version "1.0.0" 1982 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" 1983 | 1984 | request@^2.81.0: 1985 | version "2.81.0" 1986 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 1987 | dependencies: 1988 | aws-sign2 "~0.6.0" 1989 | aws4 "^1.2.1" 1990 | caseless "~0.12.0" 1991 | combined-stream "~1.0.5" 1992 | extend "~3.0.0" 1993 | forever-agent "~0.6.1" 1994 | form-data "~2.1.1" 1995 | har-validator "~4.2.1" 1996 | hawk "~3.1.3" 1997 | http-signature "~1.1.0" 1998 | is-typedarray "~1.0.0" 1999 | isstream "~0.1.2" 2000 | json-stringify-safe "~5.0.1" 2001 | mime-types "~2.1.7" 2002 | oauth-sign "~0.8.1" 2003 | performance-now "^0.2.0" 2004 | qs "~6.4.0" 2005 | safe-buffer "^5.0.1" 2006 | stringstream "~0.0.4" 2007 | tough-cookie "~2.3.0" 2008 | tunnel-agent "^0.6.0" 2009 | uuid "^3.0.0" 2010 | 2011 | require-uncached@^1.0.2: 2012 | version "1.0.3" 2013 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 2014 | dependencies: 2015 | caller-path "^0.1.0" 2016 | resolve-from "^1.0.0" 2017 | 2018 | resolve-from@^1.0.0: 2019 | version "1.0.1" 2020 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 2021 | 2022 | resolve@^1.1.6: 2023 | version "1.3.2" 2024 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" 2025 | dependencies: 2026 | path-parse "^1.0.5" 2027 | 2028 | restore-cursor@^1.0.1: 2029 | version "1.0.1" 2030 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 2031 | dependencies: 2032 | exit-hook "^1.0.0" 2033 | onetime "^1.0.0" 2034 | 2035 | resumer@~0.0.0: 2036 | version "0.0.0" 2037 | resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" 2038 | dependencies: 2039 | through "~2.3.4" 2040 | 2041 | rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: 2042 | version "2.6.1" 2043 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 2044 | dependencies: 2045 | glob "^7.0.5" 2046 | 2047 | run-async@^0.1.0: 2048 | version "0.1.0" 2049 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 2050 | dependencies: 2051 | once "^1.3.0" 2052 | 2053 | rx-lite@^3.1.2: 2054 | version "3.1.2" 2055 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 2056 | 2057 | safe-buffer@^5.0.1: 2058 | version "5.0.1" 2059 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 2060 | 2061 | semver@^5.1.0, semver@^5.3.0: 2062 | version "5.3.0" 2063 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2064 | 2065 | send@0.15.1: 2066 | version "0.15.1" 2067 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" 2068 | dependencies: 2069 | debug "2.6.1" 2070 | depd "~1.1.0" 2071 | destroy "~1.0.4" 2072 | encodeurl "~1.0.1" 2073 | escape-html "~1.0.3" 2074 | etag "~1.8.0" 2075 | fresh "0.5.0" 2076 | http-errors "~1.6.1" 2077 | mime "1.3.4" 2078 | ms "0.7.2" 2079 | on-finished "~2.3.0" 2080 | range-parser "~1.2.0" 2081 | statuses "~1.3.1" 2082 | 2083 | serve-static@1.12.1: 2084 | version "1.12.1" 2085 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" 2086 | dependencies: 2087 | encodeurl "~1.0.1" 2088 | escape-html "~1.0.3" 2089 | parseurl "~1.3.1" 2090 | send "0.15.1" 2091 | 2092 | set-blocking@~2.0.0: 2093 | version "2.0.0" 2094 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2095 | 2096 | set-immediate-shim@^1.0.1: 2097 | version "1.0.1" 2098 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2099 | 2100 | setprototypeof@1.0.3: 2101 | version "1.0.3" 2102 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 2103 | 2104 | shelljs@^0.7.5: 2105 | version "0.7.7" 2106 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" 2107 | dependencies: 2108 | glob "^7.0.0" 2109 | interpret "^1.0.0" 2110 | rechoir "^0.6.2" 2111 | 2112 | sigmund@~1.0.0: 2113 | version "1.0.1" 2114 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 2115 | 2116 | signal-exit@^3.0.0: 2117 | version "3.0.2" 2118 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2119 | 2120 | simple-terminal-menu@^1.1.3: 2121 | version "1.1.3" 2122 | resolved "https://registry.yarnpkg.com/simple-terminal-menu/-/simple-terminal-menu-1.1.3.tgz#6a9aa6b1c41df53fc0b020780c764dbcdec481ff" 2123 | dependencies: 2124 | chalk "^1.1.1" 2125 | extended-terminal-menu "^2.1.2" 2126 | wcstring "^2.1.0" 2127 | xtend "^4.0.0" 2128 | 2129 | slice-ansi@0.0.4: 2130 | version "0.0.4" 2131 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 2132 | 2133 | sntp@1.x.x: 2134 | version "1.0.9" 2135 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2136 | dependencies: 2137 | hoek "2.x.x" 2138 | 2139 | space-separated-tokens@^1.0.0: 2140 | version "1.1.0" 2141 | resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.0.tgz#9e8c60407aa527742cd9eaee2541dec639f1269b" 2142 | dependencies: 2143 | trim "0.0.1" 2144 | 2145 | split@^1.0.0: 2146 | version "1.0.0" 2147 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.0.tgz#c4395ce683abcd254bc28fe1dabb6e5c27dcffae" 2148 | dependencies: 2149 | through "2" 2150 | 2151 | sprintf-js@~1.0.2: 2152 | version "1.0.3" 2153 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2154 | 2155 | sshpk@^1.7.0: 2156 | version "1.11.0" 2157 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" 2158 | dependencies: 2159 | asn1 "~0.2.3" 2160 | assert-plus "^1.0.0" 2161 | dashdash "^1.12.0" 2162 | getpass "^0.1.1" 2163 | optionalDependencies: 2164 | bcrypt-pbkdf "^1.0.0" 2165 | ecc-jsbn "~0.1.1" 2166 | jodid25519 "^1.0.0" 2167 | jsbn "~0.1.0" 2168 | tweetnacl "~0.14.0" 2169 | 2170 | state-toggle@^1.0.0: 2171 | version "1.0.0" 2172 | resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" 2173 | 2174 | "statuses@>= 1.3.1 < 2", statuses@~1.3.1: 2175 | version "1.3.1" 2176 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 2177 | 2178 | string-to-stream@^1.1.0: 2179 | version "1.1.0" 2180 | resolved "https://registry.yarnpkg.com/string-to-stream/-/string-to-stream-1.1.0.tgz#acf2c9ead1c418e148509a12d2cbb469f333a218" 2181 | dependencies: 2182 | inherits "^2.0.1" 2183 | readable-stream "^2.1.0" 2184 | 2185 | string-width@^1.0.1: 2186 | version "1.0.2" 2187 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2188 | dependencies: 2189 | code-point-at "^1.0.0" 2190 | is-fullwidth-code-point "^1.0.0" 2191 | strip-ansi "^3.0.0" 2192 | 2193 | string-width@^2.0.0: 2194 | version "2.0.0" 2195 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 2196 | dependencies: 2197 | is-fullwidth-code-point "^2.0.0" 2198 | strip-ansi "^3.0.0" 2199 | 2200 | string_decoder@~0.10.x: 2201 | version "0.10.31" 2202 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2203 | 2204 | stringify-entities@^1.0.1: 2205 | version "1.3.0" 2206 | resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.0.tgz#2244a516c4f1e8e01b73dad01023016776abd917" 2207 | dependencies: 2208 | character-entities-html4 "^1.0.0" 2209 | character-entities-legacy "^1.0.0" 2210 | has "^1.0.1" 2211 | is-alphanumerical "^1.0.0" 2212 | is-hexadecimal "^1.0.0" 2213 | 2214 | stringstream@~0.0.4: 2215 | version "0.0.5" 2216 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2217 | 2218 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2219 | version "3.0.1" 2220 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2221 | dependencies: 2222 | ansi-regex "^2.0.0" 2223 | 2224 | strip-bom@^3.0.0: 2225 | version "3.0.0" 2226 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2227 | 2228 | strip-json-comments@~2.0.1: 2229 | version "2.0.1" 2230 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2231 | 2232 | supports-color@1.2.0: 2233 | version "1.2.0" 2234 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" 2235 | 2236 | supports-color@^2.0.0: 2237 | version "2.0.0" 2238 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2239 | 2240 | table-header@^0.2.2: 2241 | version "0.2.2" 2242 | resolved "https://registry.yarnpkg.com/table-header/-/table-header-0.2.2.tgz#7c9adb420ea569fb4717de5d8f5c4514804d2c0a" 2243 | dependencies: 2244 | repeat-string "^1.5.2" 2245 | 2246 | table@^3.7.8: 2247 | version "3.8.3" 2248 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 2249 | dependencies: 2250 | ajv "^4.7.0" 2251 | ajv-keywords "^1.0.0" 2252 | chalk "^1.1.1" 2253 | lodash "^4.0.0" 2254 | slice-ansi "0.0.4" 2255 | string-width "^2.0.0" 2256 | 2257 | tar-pack@^3.4.0: 2258 | version "3.4.0" 2259 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" 2260 | dependencies: 2261 | debug "^2.2.0" 2262 | fstream "^1.0.10" 2263 | fstream-ignore "^1.0.5" 2264 | once "^1.3.3" 2265 | readable-stream "^2.1.4" 2266 | rimraf "^2.5.1" 2267 | tar "^2.2.1" 2268 | uid-number "^0.0.6" 2269 | 2270 | tar@^2.2.1: 2271 | version "2.2.1" 2272 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2273 | dependencies: 2274 | block-stream "*" 2275 | fstream "^1.0.2" 2276 | inherits "2" 2277 | 2278 | text-table@^0.2.0, text-table@~0.2.0: 2279 | version "0.2.0" 2280 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2281 | 2282 | through2@^0.6.3: 2283 | version "0.6.5" 2284 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" 2285 | dependencies: 2286 | readable-stream ">=1.0.33-1 <1.1.0-0" 2287 | xtend ">=4.0.0 <4.1.0-0" 2288 | 2289 | through2@^2.0.3: 2290 | version "2.0.3" 2291 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 2292 | dependencies: 2293 | readable-stream "^2.1.5" 2294 | xtend "~4.0.1" 2295 | 2296 | through@2, through@^2.3.6, through@~2.3.4: 2297 | version "2.3.8" 2298 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2299 | 2300 | timed-out@^4.0.0: 2301 | version "4.0.1" 2302 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 2303 | 2304 | to-iso-string@0.0.2: 2305 | version "0.0.2" 2306 | resolved "https://registry.yarnpkg.com/to-iso-string/-/to-iso-string-0.0.2.tgz#4dc19e664dfccbe25bd8db508b00c6da158255d1" 2307 | 2308 | topo@1.x.x: 2309 | version "1.1.0" 2310 | resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5" 2311 | dependencies: 2312 | hoek "2.x.x" 2313 | 2314 | tough-cookie@~2.3.0: 2315 | version "2.3.2" 2316 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2317 | dependencies: 2318 | punycode "^1.4.1" 2319 | 2320 | trim-lines@^1.0.0: 2321 | version "1.1.0" 2322 | resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.0.tgz#9926d03ede13ba18f7d42222631fb04c79ff26fe" 2323 | 2324 | trim-trailing-lines@^1.0.0: 2325 | version "1.1.0" 2326 | resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz#7aefbb7808df9d669f6da2e438cac8c46ada7684" 2327 | 2328 | trim@0.0.1: 2329 | version "0.0.1" 2330 | resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" 2331 | 2332 | trough@^1.0.0: 2333 | version "1.0.0" 2334 | resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.0.tgz#6bdedfe7f2aa49a6f3c432257687555957f342fd" 2335 | 2336 | tryit@^1.0.1: 2337 | version "1.0.3" 2338 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 2339 | 2340 | tunnel-agent@^0.6.0: 2341 | version "0.6.0" 2342 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2343 | dependencies: 2344 | safe-buffer "^5.0.1" 2345 | 2346 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2347 | version "0.14.5" 2348 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2349 | 2350 | type-check@~0.3.2: 2351 | version "0.3.2" 2352 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2353 | dependencies: 2354 | prelude-ls "~1.1.2" 2355 | 2356 | type-is@~1.6.14: 2357 | version "1.6.15" 2358 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" 2359 | dependencies: 2360 | media-typer "0.3.0" 2361 | mime-types "~2.1.15" 2362 | 2363 | typedarray@^0.0.6: 2364 | version "0.0.6" 2365 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2366 | 2367 | uid-number@^0.0.6: 2368 | version "0.0.6" 2369 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2370 | 2371 | unherit@^1.0.4: 2372 | version "1.1.0" 2373 | resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d" 2374 | dependencies: 2375 | inherits "^2.0.1" 2376 | xtend "^4.0.1" 2377 | 2378 | unified@^6.0.0: 2379 | version "6.1.1" 2380 | resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.1.tgz#0abb4d2ffd8f42c0bc06e4a62ff8eb8fd77f8d11" 2381 | dependencies: 2382 | bail "^1.0.0" 2383 | extend "^3.0.0" 2384 | has "^1.0.1" 2385 | is-plain-obj "^1.1.0" 2386 | isarray "^2.0.1" 2387 | trough "^1.0.0" 2388 | vfile "^2.0.0" 2389 | x-is-function "^1.0.4" 2390 | x-is-string "^0.1.0" 2391 | 2392 | unist-builder@^1.0.1: 2393 | version "1.0.2" 2394 | resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.2.tgz#8c3b9903ef64bcfb117dd7cf6a5d98fc1b3b27b6" 2395 | dependencies: 2396 | object-assign "^4.1.0" 2397 | 2398 | unist-util-generated@^1.1.0: 2399 | version "1.1.0" 2400 | resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.0.tgz#8c95657ff12b32eaffe0731fbb37da6995fae01b" 2401 | 2402 | unist-util-is@^2.0.0: 2403 | version "2.0.0" 2404 | resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.0.0.tgz#e536472c4f78739e164d0859fc3201b97cf46e7c" 2405 | 2406 | unist-util-modify-children@^1.0.0: 2407 | version "1.1.0" 2408 | resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-1.1.0.tgz#559203ae85d7a76283277be1abfbaf595a177ead" 2409 | dependencies: 2410 | array-iterate "^1.0.0" 2411 | 2412 | unist-util-position@^3.0.0: 2413 | version "3.0.0" 2414 | resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.0.tgz#e6e1e03eeeb81c5e1afe553e8d4adfbd7c0d8f82" 2415 | 2416 | unist-util-remove-position@^1.0.0: 2417 | version "1.1.0" 2418 | resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.0.tgz#2444fedc344bc5f540dab6353e013b6d78101dc2" 2419 | dependencies: 2420 | unist-util-visit "^1.1.0" 2421 | 2422 | unist-util-stringify-position@^1.0.0: 2423 | version "1.1.0" 2424 | resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.0.tgz#e8ba9d6b6af891b5f8336b3a31c63a9dc85c2af0" 2425 | dependencies: 2426 | has "^1.0.1" 2427 | 2428 | unist-util-visit@^1.0.0, unist-util-visit@^1.1.0: 2429 | version "1.1.1" 2430 | resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.1.1.tgz#e917a3b137658b335cb4420c7da2e74d928e4e94" 2431 | 2432 | unpipe@~1.0.0: 2433 | version "1.0.0" 2434 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2435 | 2436 | unzip-response@^2.0.1: 2437 | version "2.0.1" 2438 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 2439 | 2440 | url-parse-lax@^1.0.0: 2441 | version "1.0.0" 2442 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 2443 | dependencies: 2444 | prepend-http "^1.0.1" 2445 | 2446 | user-home@^2.0.0: 2447 | version "2.0.0" 2448 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 2449 | dependencies: 2450 | os-homedir "^1.0.0" 2451 | 2452 | util-deprecate@~1.0.1: 2453 | version "1.0.2" 2454 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2455 | 2456 | utils-merge@1.0.0: 2457 | version "1.0.0" 2458 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 2459 | 2460 | uuid@^3.0.0: 2461 | version "3.0.1" 2462 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 2463 | 2464 | varsize-string@^2.2.1: 2465 | version "2.2.2" 2466 | resolved "https://registry.yarnpkg.com/varsize-string/-/varsize-string-2.2.2.tgz#ef1b3b6c72db0835ea2f84cdf91fec30c520688b" 2467 | 2468 | vary@~1.1.0: 2469 | version "1.1.1" 2470 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" 2471 | 2472 | verror@1.3.6: 2473 | version "1.3.6" 2474 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 2475 | dependencies: 2476 | extsprintf "1.0.2" 2477 | 2478 | vfile-location@^2.0.0: 2479 | version "2.0.1" 2480 | resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.1.tgz#0bf8816f732b0f8bd902a56fda4c62c8e935dc52" 2481 | 2482 | vfile@^2.0.0: 2483 | version "2.0.1" 2484 | resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.0.1.tgz#bd48e68e8a2322dff0d162a37f45e70d9bb30466" 2485 | dependencies: 2486 | has "^1.0.1" 2487 | is-buffer "^1.1.4" 2488 | replace-ext "1.0.0" 2489 | unist-util-stringify-position "^1.0.0" 2490 | x-is-string "^0.1.0" 2491 | 2492 | wcsize@^1.0.0: 2493 | version "1.0.0" 2494 | resolved "https://registry.yarnpkg.com/wcsize/-/wcsize-1.0.0.tgz#a8a2e15e6a8a74791dba580f69a57d27e850ea1e" 2495 | 2496 | wcstring@^2.1.0: 2497 | version "2.1.1" 2498 | resolved "https://registry.yarnpkg.com/wcstring/-/wcstring-2.1.1.tgz#ded52d745c9c71e24d0a489d2826d22a365ed067" 2499 | dependencies: 2500 | varsize-string "^2.2.1" 2501 | wcsize "^1.0.0" 2502 | 2503 | wide-align@^1.1.0: 2504 | version "1.1.0" 2505 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 2506 | dependencies: 2507 | string-width "^1.0.1" 2508 | 2509 | wordwrap@~1.0.0: 2510 | version "1.0.0" 2511 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 2512 | 2513 | workshopper-adventure-storage@^3.0.0: 2514 | version "3.0.0" 2515 | resolved "https://registry.yarnpkg.com/workshopper-adventure-storage/-/workshopper-adventure-storage-3.0.0.tgz#0174c5b2f7b80d72c91bc529bfbd07f479c263a0" 2516 | dependencies: 2517 | mkdirp "^0.5.1" 2518 | rimraf "^2.5.4" 2519 | 2520 | workshopper-adventure-test@^1.1.0: 2521 | version "1.1.1" 2522 | resolved "https://registry.yarnpkg.com/workshopper-adventure-test/-/workshopper-adventure-test-1.1.1.tgz#9e2d800bbf95a6937fef14739f24e497632b4c8b" 2523 | dependencies: 2524 | glob "^7.0.0" 2525 | lodash "^4.6.0" 2526 | mkdirp "^0.5.1" 2527 | mocha "^2.4.5" 2528 | rimraf "^2.5.2" 2529 | workshopper-adventure "^6.0.1" 2530 | 2531 | workshopper-adventure@^6.0.1, workshopper-adventure@^6.0.2: 2532 | version "6.0.2" 2533 | resolved "https://registry.yarnpkg.com/workshopper-adventure/-/workshopper-adventure-6.0.2.tgz#4cb5c3236d29fe1ad0d671f1b24ebc9595d12f5f" 2534 | dependencies: 2535 | after "^0.8.2" 2536 | chalk "^1.1.3" 2537 | colors-tmpl "~1.0.0" 2538 | combined-stream-wait-for-it "^1.1.0" 2539 | commandico "^2.0.2" 2540 | i18n-core "^3.0.0" 2541 | latest-version "^3.0.0" 2542 | msee "^0.3.2" 2543 | simple-terminal-menu "^1.1.3" 2544 | split "^1.0.0" 2545 | string-to-stream "^1.1.0" 2546 | through2 "^2.0.3" 2547 | workshopper-adventure-storage "^3.0.0" 2548 | 2549 | wrappy@1: 2550 | version "1.0.2" 2551 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2552 | 2553 | write@^0.2.1: 2554 | version "0.2.1" 2555 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 2556 | dependencies: 2557 | mkdirp "^0.5.1" 2558 | 2559 | x-is-function@^1.0.4: 2560 | version "1.0.4" 2561 | resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e" 2562 | 2563 | x-is-string@^0.1.0: 2564 | version "0.1.0" 2565 | resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" 2566 | 2567 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: 2568 | version "4.0.1" 2569 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2570 | --------------------------------------------------------------------------------