├── .gitignore ├── README.md ├── SUMMARY.md ├── basic ├── basic_concepts.md ├── images │ ├── blob.png │ ├── branch1.png │ ├── branch2.png │ ├── branch3.png │ ├── commit_process1.png │ ├── commit_process2.png │ ├── commits.png │ ├── git_vs_svn.png │ ├── gitflow.png │ ├── index.png │ ├── tag.png │ ├── tree.png │ └── tree2.png └── svn.md ├── branch ├── centralized.md ├── compare.md ├── eim.md ├── feature.md ├── fork.md ├── gitflow.md ├── images │ ├── bare-repo.png │ ├── bug_branch.png │ ├── centralized1.png │ ├── clone.png │ ├── commit1.png │ ├── commit2.png │ ├── commit3.png │ ├── feature_branch.png │ ├── feature_flow.png │ ├── fork.png │ ├── fork2.png │ ├── fork_example1.png │ ├── fork_example2.png │ ├── fork_example3.png │ ├── fork_example4.png │ ├── git_flow.png │ ├── history_branch.png │ ├── pr1.png │ ├── pr2.png │ ├── pr3.png │ ├── pull.png │ ├── pull1.png │ ├── push.png │ ├── push1.png │ ├── release_branch.png │ └── workflow.png └── operation.md ├── charts.key ├── further ├── learn.md └── tools.md ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | _book 4 | _temp -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 佳米科技 Git 指南 2 | 3 | 本指南主要介绍如何利用 git 作为版本管理库,来提高开发协作的效率。 主要涉及的话题有基本使用,分支管理,使用规范以及常见的问题。 4 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | * [介绍](README.md) 4 | 5 | ### 基础 6 | 7 | * [Getting started]() 8 | * [Git 与 SVN](basic/svn.md) 9 | * [Git 基本概念](basic/basic_concepts.md) 10 | * [配置/ssh 认证]() 11 | * 基本命令 12 | * [初始化]() 13 | * [克隆]() 14 | * [提交]() 15 | * [文件忽略]() 16 | * [tag]() 17 | * [拉取和推送]() 18 | * [远程版本库管理]() 19 | * [删除和重命名]() 20 | * [分支切换/创建/合并]() 21 | * [撤销和恢复]() 22 | * [提交记录操作]() 23 | * [解决冲突]() 24 | 25 | ### 分支管理 26 | 27 | * [分支操作](branch/operation.md) 28 | * [工作流](branch/compare.md) 29 | * [集中式的工作流](branch/centralized.md) 30 | * [功能分支工作流](branch/feature.md) 31 | * [GitFlow 工作流](branch/gitflow.md) 32 | * [Fork 工作流](branch/fork.md) 33 | * [EIM 组团队工作流规范](branch/eim.md) 34 | 35 | ### 规范 36 | 37 | * [命名规范]() 38 | * [如何书写提交信息]() 39 | 40 | ### 技巧 41 | 42 | * [保护现场]() 43 | * [子系统集成-gitsubmodule]() 44 | * [提高 Git Clone 速度]() 45 | * [git 钩子与持续集成]() 46 | 47 | ### 常见问题 48 | 49 | ### 扩展 50 | 51 | * [学习资料](further/learn.md) 52 | * [工具/扩展](further/tools.md) 53 | -------------------------------------------------------------------------------- /basic/basic_concepts.md: -------------------------------------------------------------------------------- 1 | # Git 基本概念 2 | 3 | 既然 git 那么优秀, 空说无凭. 下面介绍 Git 的一些基本原理, 这是一块很有价值的地方. 4 | 5 | 通过理解 Git 的基本原理,  我们可以见证 Git 为什么比别的 VCS 要高效和轻量. 这也有利于我们快速上手,更有效地利用这个工具, 提高开发协作的效率 6 | 7 | ## 1. 基本概念 8 | 9 | 在我们调用`git init`后项目的根目录就会出现一个`.git`目录,这个目录包含了所有版本库的信息。 10 | 11 | ```shell 12 | hello 13 | .git 14 | ├─hooks -- 定义钩子 15 | │ ├─pre-commit 16 | │ ├─pre-commit.sample 17 | │ ├─post-commit 18 | │ ├─post-commit.sample 19 | │ └─... 20 | ├─info 21 | │ └─exclude 22 | ├─objects -- 对象库 23 | │ ├─.... 24 | │ ├─info 25 | │ └─pack -- 对象打包压缩文件 26 | │─refs -- 对象引用 27 | │ ├─heads 28 | │ ├─remotes 29 | │ └─tags 30 | ├─HEAD 31 | ├─config 32 | ├─desciption 33 | ├─index -- 索引 34 | └─... 35 | ``` 36 | 37 | Git 主要有两种数据结构:`对象库(Object Store)`和`索引(Index)`。 38 | 39 | 在 Git 中,每个文件、目录、提交以及标签都使用“对象”来进行存储。 40 | 41 | ### 1.1 文件对象 42 | 43 | 文件使用块(blob)进行表示, 块是一个二进制的序列. Git 的一个关键的概念就是`“内容驱动的”`,而不是像 SVN 基于文件和目录的布局, 44 | Git 追踪的是内容而不是文件。块中不会存储任何关于文件的元信息, 这些元信息在`目录对象`中描述。 45 | 46 | 所以, 如果两个文件的内容完全一致,Git 只会使用一个块进行存储。这样可以节省存储空间. 例如: 47 | 48 | ```shell 49 | # 创建两个内容一模一样的文件 50 | $ echo "hello world" > foo.txt 51 | $ echo "hello world" > bar.txt 52 | 53 | # 在没有添加到索引(暂存区)或者版本库之前,Git是不会创建这些对象, 关于工作区/索引版本库 54 | # 的概念, 在下文中描述. 现在将文件添加到索引(索引可以理解为提交到版本库之前的暂存区) 55 | $ git add foo.txt bar.txt 56 | 57 | # 列出索引区中创建的文件对象 58 | # ls-files命令类似于`ls`命令 59 | $ git ls-files --stage 60 | 100644 80993781b54ed1b81e47a31e6427940c1a9deafb 0 bar.txt 61 | 100644 80993781b54ed1b81e47a31e6427940c1a9deafb 0 foo.txt 62 | # 文件权限 SHA1 散列 文件名 63 | 64 | # 可以看出文件块已经添加到git对象库中; 65 | # git使用SHA1的第一个字节作为目录,来避免把很多文件放在同一个目录中(一些文件系统会变卡) 66 | # git 使用zlib压缩存储这些对象 67 | $ tree .git/objects 68 | ├─80 69 | │ └─993781b54ed1b81e47a31e6427940c1a9deafb 70 | ├─info 71 | └─pack 72 | ``` 73 | 74 | 从上面的执行结果可以看出,`foo.txt`和`bar.txt`的散列值是一样的。对于 sha1 编码来说,只要输入的内容一致, 输出的内容也是一致的。所以也说明这两个文件是共享同一个块的。 75 | 76 | ![blob](images/blob.png) 77 | 78 | > 关于 SHA1 散列值:
79 | > 80 | > 上述的 SHA1 散列值可以认为是`对象ID`,通常表示为一个 40 位的 16 进制字符串. Git 会对`对象的内容`应用 SHA1 得到.
81 | > 对于`文件`来说应用的内容是`块`,即文件的二进制表示; 82 | > 对于`目录`来说, 应用的内容是`目录信息`;
83 | > 对于`提交`来说,应用的内容是提交信息、目录对象、作者、提交时间、父提交等元数据;
84 | > 对于`标签`来说, 应用的内容是标签标注和关联的提交.
85 | > 总的来说这个散列值可以唯一地标志一个`对象`. SHA1 值在 git 的命令用的非常广泛, 但是如果要输入完整的 86 | > SHA1 值是非常麻烦的事情,git 支持输入 SHA1 值的前缀。如下面的 `cat-file` 命令所示 87 | 88 | 我们可以使用`cat-file`命令来查看对象的内容。`cat-file`类似于`cat`命令: 89 | 90 | ```shell 91 | # 查看对象类型;输入SHA1值的前缀,只要不冲突即可 92 | $ git cat-file -t 8099378 93 | blob 94 | 95 | # 查看对象的内容 96 | $ git cat-file -p 8099378 97 | hello world 98 | ``` 99 | 100 | 每一个文件的版本都会使用一个块进行表示. 每当文件变动,Git 就会为这个文件(完整文件)计算一个新的 SHA1 值. 并将完整文件的内容保存为块。看到这里, 你可能像我一样会有疑问,为什么 git 不保存差异? 而是保存完整的文件副本,这不是浪费空间吗? 101 | 102 | ```shell 103 | # 追加一行到foo.txt 104 | $ echo "hello gzb" >> foo.txt 105 | $ git add foo.txt 106 | # 我们看到foo.txt的SHA1已经变化了, bar.txt依旧引用80993 107 | $ git ls-files --stage 108 | 100644 80993781b54ed1b81e47a31e6427940c1a9deafb 0 bar.txt 109 | 100644 aa1284b52c5fa5beca04b102d342261d01db289d 0 foo.txt 110 | $ git cat-file -s aa1284 111 | 46 # foo.txt 文件大小 112 | $ git cat-file -s 889937 113 | 28 # bar.txt 文件大小 114 | ``` 115 | 116 | 实际上,Git 会这么做, 只不过不是马上做。上面存储对象格式称为`松散格式(loose)`. 像编程语言的垃圾回收机制一样, Git 117 | 会时不时地将多个对象`打包(pack)`成为一个"`包文件(packfile)`", 以节省空间和提高效率。 118 | 119 | Git 首先会定位内容非常相似的`块`, 为他们之一存储整个内容, 之后再计算相似文件之间的差异,并只存储差异。例如上面的 foo.txt 和 120 | bar.txt 文件,git 可能会存储整个 foo.txt 的内容,然后再单独存储两者之间的差异. 121 | 122 | 相对于 SVN 这类基于文件的 VCS,Git 内容驱动的方式,更能有效地节省空间,因为块是全局的。而 SVN 只能为同一目录的同名文件计算差异. 123 | 124 | > 当版本库中保存了太多`松散对象`, 或者你向远程服务器推送, 以及手动调用`git gc`命令时,git 会进行打包。比如 125 | > 126 | > ```shell 127 | > $ git push origin master 128 | > Counting objects: 20, done. 129 | > Delta compression using up to 4 threads. 130 | > Compressing objects: 100% (20/20), done. 131 | > Writing objects: 100% (20/20), 1.66 KiB | 340.00 KiB/s, done. 132 | > Total 20 (delta 17), reused 0 (delta 0) 133 | > To ssh://code.ejiahe.com:25522/WEB/sms2.0-client.git 134 | > 95c66b1..9c9d863 master -> master 135 | > ``` 136 | 137 | ```shell 138 | # 垃圾回收; 打包 139 | $ git gc 140 | 141 | # 我们发现之前的两个对象文件都不见的。因为他们被压缩打包进了包文件 142 | # .pack 文件包含了所有从文件系统移除的对象 143 | # .idx 包含了这些对象在.pack包文件中的偏移信息. 可以用于快速定位一个指定的对象 144 | $ tree .git/objects 145 | ├─info 146 | └─pack 147 | ├─pack-41941a802863135106a20d7f3663ed393ed33b3a.idx 148 | └─pack-41941a802863135106a20d7f3663ed393ed33b3a.pack 149 | 150 | # 可以通过verify-pack 命令来查看索引文件. 这里举一个其他项目的例子 151 | $ git verify-pack -v .\.git\objects\pack\pack-xxx.idx 152 | 22e70521f125689c969e1e94a9ca3fcb61b579ed blob 20 33 3546 153 | 41ec12446a664f43df51df2d953c5c04b34b265e blob 872 511 3579 154 | 1038dc0ce035045626b2efa60b16883a3507ad5b blob 80 95 4090 1 41ec12446a664f43df51df2d953c5c04b34b265e 155 | 156 | # 1038dc为差异内容,其完整内容是41ec12. 157 | # 在git完整内容一般是最新文件内容。 因为最新文件内容访问的频率较高 158 | ``` 159 | 160 | ### 1.2 目录对象 161 | 162 | 上面大概讲述了一个文件在 git 中的存储方式。文件的元信息就存储在一个称为"`目录树(tree)`"的对象中。估计你已经想到这个对象会包含什么内容: 163 | 164 | * 目录包含的块, 以及块的文件信息 165 | * 子目录树 166 | 167 | > 注意这里没有包含目录的路径信息和目录名。这个道理和文件块对象一样,git 是`内容驱动的`. 关于目录的路径和目录名,在父目录对象描述。
168 | > 这样,像文件块一样,目录不管在项目哪个位置,只要目录包含的内容不变, 目录对象就不变(SHA1 不变). 169 | > 另外如果两个不同路径或名字的目录包含的文件和目录是一样的, 这两个目录共享同一个目录对象 170 | 171 | 那么项目的目录树可以表示为:
172 | 173 | ![结构图](images/tree.png) 174 | 175 | 跟文件对象一样,Git 会为目录树计算一个 SHA1 值, 这个 SHA1 值可以用来高效地比对。 比如比较 foo 目录修改前和修改后的 SHA1 值,如果 SHA1 值相等,就说明 foo 目录内容没有变化,没有必要向下递归比对了。 176 | 177 | 上面, 我们将`foo.txt`和`bar.txt`文件添加到索引(暂存区)中, Git 还没有为他们创建目录对象。Git 会在`用户提交`或者手动调用底层的`write-tree`命令之后创建一个新的目录对象。 178 | 179 | > 这个目录树是从当前索引中捕获的. 而不是工作区 180 | 181 | ```shell 182 | # 立即创建一颗目录树. 这个命令返回这棵树的SHA1值 183 | $ git wirte-tree 184 | 30c06f321a0a9838685e85ad87c330d067b59515 185 | 186 | # 同样可以使用cat-file命令来查看目录树的内容 187 | $ git cat-file -t 30c06 188 | tree 189 | $ git cat-file -p 30c06 190 | 100644 blob 80993781b54ed1b81e47a31e6427940c1a9deafb bar.txt 191 | 100644 blob 707324cde0d21955bb8e7bfdaaa10007dd8d54fe foo.txt 192 | 193 | 194 | 195 | # 现在将foo.txt和bar.txt移到一个新的目录 196 | $ mv *.txt dir/ 197 | 198 | # 添加到索引 199 | $ git add . 200 | 201 | # 可以看到foo.txt, bar.txt的块对象没有变化 202 | $ git ls-files --stage 203 | 100644 80993781b54ed1b81e47a31e6427940c1a9deafb 0 dir/bar.txt 204 | 100644 707324cde0d21955bb8e7bfdaaa10007dd8d54fe 0 dir/foo.txt 205 | 206 | # 再创建目录树对象: 因为目录结构发生了变化,所以重新创建一个新的对象 207 | $ git wirte-tree 208 | 0c1564cd525d98a691c29779569348b3bdc0a8ce 209 | 210 | # 在这里你可以看到dir目录对象的SHA1和上面的根目录的SHA1是一样的! 211 | # 因为dir和之前的根目录内容是一样的,所以git复用了这个目录对象 212 | $ git cat-file -p 0c1564 213 | 040000 tree 30c06f321a0a9838685e85ad87c330d067b59515 dir 214 | ``` 215 | 216 | ![目录树复用](images/tree2.png) 217 | 218 | ### 1.3 提交对象 219 | 220 | 看到这里, 估计你对 git 的工作原理已经有点眉目了。上述的`目录树`可以理解为`项目文件结构的一个快照`. 而我们的`提交记录`就是就是关于`目录树`的时间轴列表。 如图: 221 | ![提交时间轴列表](images/commits.png) 222 | 223 | 提交记录就是项目的`变更记录`. Git 同样会为每个提交生成一个`提交对象`. 提交对象包含的内容有: 224 | 225 | * 提交时的项目快照, 也就是目录树对象 226 | * 提交的元数据,如作者,时间,提交信息等等 227 | * 父提交对象。除了`根提交`, 其他提交都有父提交。提交之间是一种`图`的关系(一个提交可能有多个子提交, 也有可能有多个父提交) 228 | 229 | ```shell 230 | # 现在将'索引'中的目录对象提交到版本库 231 | $ git commit -m "第一个提交" 232 | [master (root-commit) 985b842] 第一个提交 233 | 2 files changed, 0 insertions(+), 0 deletions(-) 234 | create mode 100644 dir/bar.txt 235 | create mode 100644 dir/foo.txt 236 | 237 | # 上面git创建了一个提交对象. 通过cat-file命令可以看到这个提交对象的内容 238 | # 这个提交对象关联到了上面创建的目录树对象 239 | $ git rev-parse 985b84 240 | 985b84227a97f0b09ffe86ea16c27cf8ce4dfb6e 241 | 242 | $ git cat-file -p 985b84 243 | tree 0c1564cd525d98a691c29779569348b3bdc0a8ce 244 | author gq-li 1518001414 +0800 245 | committer gq-li 1518001414 +0800 246 | 247 | 第一个提交 248 | ``` 249 | 250 | 提交对象之间构成的图结构就是项目的整个历史周期. 下面是一个典型`Git flow`驱动下的提交记录图: 251 | ![git flow](images/gitflow.png) 252 | 253 | ### 1.4 标签 254 | 255 | 支持我们已经大概了解了 Git 的基本原理. 现在介绍最后一个对象, 即标签对象.标前对象是最简单的对象, 你可以将`标签`视作为`提交`的别名, 256 | 或者说标签是提交对象的引用/指针. 257 | 标签可以给你的`提交对象`取一个相对`SHA1值`更好记忆的名字, 比如版本号, 如 v1.0.0. 258 | 所以一个标签对象是和提交对象绑定在一起的, 标签对象的内容有: 259 | 260 | * 引用的提交对象 261 | * 标签的标注 262 | 263 | ![tags](images/tag.png) 264 | 265 | ```shell 266 | # 使用git tag命令创建标签 267 | $ git tag -a -m "第一个标签信息" v0.0.1 985b84 268 | 269 | $ git rev-parse v0.0.1 270 | 303e1bc3317f8b771dfce6c9faf4a319583eaa52 271 | # 或者通过.git/refs/tags/v0.0.1查看标签名引用的对象SHA1; 结果同上 272 | $ cat .git/refs/tags/v0.0.1 273 | 274 | # 同样使用cat-file来查看标签对象内容 275 | $ git cat-file -p 303e1bc 276 | object 0c1564cd525d98a691c29779569348b3bdc0a8ce 277 | type commit 278 | tag v0.0.1 279 | tagger gq-li 1518010590 +0800 280 | 281 | 第一个标签信息 282 | ``` 283 | 284 | ### 1.5 那分支是什么? 285 | 286 | Git 中并没有所谓的"分支对象", 分支只不多是提交记录的引用, 换句话说, 分支是不同提交记录的开发线的`最新提交`的引用. 287 | 关于提交对象的引用, 都保存在查看`.git/refs`目录 288 | 289 | ```shell 290 | $ tree .git/refs 291 | .git/refs 292 | ├── heads -- 这里放置的是本地 293 | │ └── master 294 | ├── remotes -- 这里放置的是远程版本库的分支 295 | │ └── origin 296 | │ ├── HEAD 297 | │ └── master 298 | └── tags -- 这里放置标签 299 | ``` 300 | 301 | 假设现在创建一个新的分支: 302 | 303 | ```shell 304 | # 最新的提交对象为 305 | (master)$ git rev-parse master 306 | 0c1564cd525d98a691c29779569348b3bdc0a8ce 307 | # 创建并切换到dev分支 308 | (master)$ git checkout -b dev 309 | 310 | # 和master一样, 指向同一个分支. 即在同一个节点 311 | (dev)$ git rev-parse dev 312 | 0c1564cd525d98a691c29779569348b3bdc0a8ce 313 | ``` 314 | 315 | ![配图](images/branch1.png) 316 | 317 | 现在在 dev 创建一些内容, 并提交 318 | 319 | ```shell 320 | (dev)$ echo "dev here i am" > baz.txt 321 | (dev)$ git add . 322 | (dev)$ git commit -m "我在dev分支创建了baz文件" 323 | [dev 558fc73] 我在dev分支创建了baz文件 324 | 1 file changed, 1 insertion(+) 325 | create mode 100644 baz.txt 326 | 327 | # 查看dev引用的: dev已更新到最新的提交对象 328 | (dev)$ git rev-parse dev 329 | 558fc733e37a0a8ffa8b874ec3bafd418d08fb9a 330 | ``` 331 | 332 | ![配图](images/branch2.png) 333 | 334 | 尽管和标签一样都是提交对象的引用, 但是切换到标签后是不能提交新内容的, 而分支则允许继续提交延展. 335 | 336 | ![配图](images/branch3.png) 337 | 338 | 由上可以看到, Git 的分支非常轻量, 而 SVN 的分支则需要拷贝文件结构. 当 Git 进行分支切换时, 会将当前工作区的文件系统, 还原到分支引用的`提交对象`所绑定的`目录对象`. 339 | 340 | ### 1.6 索引 341 | 342 | 上面有提到`工作区`, `索引`和`版本库`的概念。 一个`变更`需要经过索引才能提交到版本库: 343 | 344 | ![索引](images/index.png) 345 | 346 | `工作区`就是当前`文件系统`的文件结构; `索引`可以视作一个提交的`暂存区`(stage), 好处就是将`工作区`和`版本库`隔离开来,你可以筛选需要提交到版本库的变更,避免将工作区的所有内容都提交了。这个概念在 SVN 也是有的。 347 | 348 | 从上面的`提交对象`来看。 索引其实就是存储了一个临时的、动态的`目录树`. 一旦提交触发, Git 就会捕获并绑定索引存储的目录树, 生成`提交对象`. 349 | 350 | ```shell 351 | # 可以通过git status来查看索引的状态 352 | $ git status 353 | ``` 354 | 355 | 因为索引的存在, 我们可以将 Git 的文件内容划分为 3 类: 356 | 357 | * 已跟踪的(Tracked): 即已经添加到版本库或索引的文件 358 | * 被忽略的(Ignore): 被声明为忽略的文件,可以通过.gitignore 进行声明;比如临时文件,编译文件,这些我们不希望添加到版本库的,但是又懒得每次添加索引时要过滤掉它们的文件. 被忽略的文件被 git status, git add 等命令自动忽略 359 | * 未跟踪的(Untracked): 即在工作区中已经变更,但未提交到索引的文件 360 | 361 | ## 2. 总结一个文件的提交过程 362 | 363 | 现在来回顾一下, 一个文件是如何提交到 git 版本库的. 364 | 365 | ![git提交过程1](images/commit_process1.png) 366 | 367 | 1. 首先创建两个文件 foo.txt 和 bar.txt, 它们的内容都是"hello world" 368 | 2. 使用`git add`命令添加到`索引`, 准备进行提交 369 | 3. 提交到索引后, git 会为文件生成`块对象`, 因为 foo.txt 和 bar 的内容一样, 所以他们共用一个块对象 370 | 4. 使用`git commit`提交到`版本库`, Git 会捕获`索引`状态, 并生成一个`目录树对象` 371 | 5. 创建一个`提交对象`, 绑定到`目录树对象` 372 | 6. `master分支引用`到最新的`提交对象` 373 | 374 | ![git提交过程2](images/commit_process2.png) 375 | 376 | 1. 现在创建一个新的文件 baz.txt, 并将 foo.txt 和 bar.txt 移动到 dir 目录 377 | 2. 添加到索引并进行提交 378 | 3. 由于 dir 保存的内容(foo.txt, bar.txt)并没有发生变化, 所以可以复用`目录树对象`(30c06f3) 379 | 4. 新建一个新的`块对象`来存储 baz.txt 的内容; 新建`目录树对象`(67f1x1)表示当前的文件系统`快照` 380 | 5. 新建一个`提交对象`, 关联到`目录树对象`(67f1x1).新提交对象的`父提交对象`是 12912sx 381 | 6. 更新 master 引用 382 | -------------------------------------------------------------------------------- /basic/images/blob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/blob.png -------------------------------------------------------------------------------- /basic/images/branch1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/branch1.png -------------------------------------------------------------------------------- /basic/images/branch2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/branch2.png -------------------------------------------------------------------------------- /basic/images/branch3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/branch3.png -------------------------------------------------------------------------------- /basic/images/commit_process1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/commit_process1.png -------------------------------------------------------------------------------- /basic/images/commit_process2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/commit_process2.png -------------------------------------------------------------------------------- /basic/images/commits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/commits.png -------------------------------------------------------------------------------- /basic/images/git_vs_svn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/git_vs_svn.png -------------------------------------------------------------------------------- /basic/images/gitflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/gitflow.png -------------------------------------------------------------------------------- /basic/images/index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/index.png -------------------------------------------------------------------------------- /basic/images/tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/tag.png -------------------------------------------------------------------------------- /basic/images/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/tree.png -------------------------------------------------------------------------------- /basic/images/tree2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/basic/images/tree2.png -------------------------------------------------------------------------------- /basic/svn.md: -------------------------------------------------------------------------------- 1 | # 对比 SVN 2 | 3 | 我们公司是从 SVN 迁移过来的,SVN 和 git 之间有什么区别呢? 下面是我能深刻体会  4 | 到的一些区别: 5 | 6 | ## 集中式 VS 分布式 7 | 8 | ![git vs svn](images/git_vs_svn.png) 9 | 这是 Git 和 SVN 最明显的区别之一。SVN 是集中式的, 依赖于一台 SVN 服务器,每一个本地版本库只是一个文件副本,不是一个完整的版本库,如果 SVN 服务器这个节点挂了, 所有子节点都无法工作。而 Git 是分布式, 每一个 clone 的项目都是一个完整的版本库,这些版本库是对等的。然而我们也会使用 Gitlab 这样的,集中 10 | git 服务器, 来进行代码的交换和维护。 11 | 12 | ## 分支更加轻量 13 | 14 | 使用 Git 一段时间之后, 会明显感觉到 Git 的分支,不管是创建、合并、删除、切换都非常的快和方便。这得益于 Git 的底层设计,所以在 Git 项目中, 我们可以大胆的使用分支来解决我们的问题。 15 | SVN 的分支则是一个完整的目录拷贝, 切换分支实际上就是切换到其他目录。而 Git 是在同一个工作区中切换. 16 | 17 | > 举个例子:SMS 项目需要安装前端依赖,在使用 SVN 时,每次新建一个分支,切换到这个分支开始之前都要重新安装依赖。由于网络原因, 下载依赖可能会很慢。而使用 Git 切换分支则直接在当前的工作区中完成 18 | 19 | ## 更加快速 20 | 21 | 得益于 Git 的架构设计, 相比 SVN,Git 的版本库更小,克隆和操作的速度更快。 22 | 23 | ## 自动化 24 | 25 | Git 支持各种客户端和服务端的自动化脚本。比如代码格式化,可以使用客户端的“precommit”钩子,实现在提交前对代码进行格式化。这样可以实现团队的代码规范,如果成员的代码不符合规范,将无法提交到版本库。通过服务端钩子可以实现持续集成, 持续部署等等。 26 | 27 | ## 更丰富的团队协作方式 28 | 29 | 更丰富的工作流选择, 或者说相比 SVN, 实现一个  工作流更加方便 30 | 31 | ## 更丰富的生态和工具 32 | 33 | 比如 Vscode, Xcode 这些编辑器或 IDE 都能很好地集成了 Git. 34 | 另外外部还有类似于`Github`, `Gitlab`, `码云`这些服务支持. 35 | -------------------------------------------------------------------------------- /branch/centralized.md: -------------------------------------------------------------------------------- 1 | # 集中式工作流 2 | 3 | 集中式工作流, 或者称为`SVN工作流`, 如果你是从 SVN 迁移过来的,那么你已经熟知集中式工作流了。和 SVN 一样, 集中式工作流以一个`中央仓库`, 所有成员的本地版本库的修改都提交到这个分支。这种工作流的特点有: 4 | 5 | * 使用`中央仓库`作为本地版本库同步的唯一入口。 6 | * 只有一个`master`分支 7 | 8 | ![集中式工作流配图](images/centralized1.png) 9 | 10 | 尽管和 SVN 类似,但和 SVN 相比,Git 还有以下优势: 11 | 12 | * 每个本地项目都是一个完整的版本库, 有一定的独立性, 不需要依赖于中央仓库, 我们可以自己选择合适的时间点进行同步。而 SVN 可能仅仅是一个目录的副本, 中央仓库挂了,将无法提交 13 | * Git 有更强大的分支和合并模型 14 | 15 | ## 1. 适用场景 16 | 17 | * 如果刚从 SVN 迁移过来,使用集中式工作流,让团队无需去适应一个全新的开发流程;或者可以作为`过渡方案` 18 | * 工作流简单自然。学习成本低,适合小型项目 19 | 20 | ## 2. 示例 21 | 22 | ### 2.1 创建中央仓库 23 | 24 | 我们可以从 `gitlab` 中创建一个项目, 或者直接通过 ssh 登录到服务器进行创建: 25 | 26 | ```shell 27 | $ ssh user@myhost 28 | # 创建一个裸仓库 29 | 30 | # 裸仓库是指没有工作目录的仓库,也就是说只有一个`.git`文件夹。 31 | # 裸仓库一般在服务端使用, 因为我们不会在服务端进行实际的开发 32 | $ git init --bare /path/to/myrepo.git 33 | ``` 34 | 35 | ![裸仓库](images/bare-repo.png) 36 | 37 | 创建完仓库之后, 团队成员就可以将其克隆到本地进行开发: 38 | 39 | ```shell 40 | $ git clone ssh://user@myhost/path/to/myrepo.git 41 | ``` 42 | 43 | ![克隆](images/clone.png) 44 | 45 | ### 2.2 开发和提交 46 | 47 | 现在就可以在工作区中添加和编辑文件了. 每一个提交都需要经过暂存和提交 48 | 49 | ```shell 50 | # 新建一个文件 51 | $ echo "hello world" > "hello.txt" 52 | 53 | # 添加到索引 54 | $ git add "hello.txt" 55 | 56 | # 提交到版本库 57 | $ git commit -m "初始化项目, 新建hello.txt" 58 | ``` 59 | 60 | ### 2.3 推送和拉取 61 | 62 | 到目前为止,变更还在本地版本库,我们需要通过 `push` 命令,将变更推送到远程版本库: 63 | 64 | ![推送配图](images/push.png) 65 | 66 | ```shell 67 | # 查看远程版本库 68 | # 在git clone一个远程版本库时,git已经将远程版本库设置好了,默认命名为origin 69 | $ git remote 70 | origin 71 | 72 | 73 | # 目前远程分支为空 74 | $ git remote show origin 75 | * remote origin 76 | Fetch URL: ssh://user@myhost/path/to/myrepo.git 77 | Push URL: ssh://user@myhost/path/to/myrepo.git 78 | HEAD branch: (unknown) 79 | Local branch configured for 'git pull': 80 | master merges with remote master 81 | 82 | # 推送到远程版本库的master分支 83 | $ git push origin master 84 | ``` 85 | 86 | 目前的分支状态, 可以看到 master 和远程分支都指向了同一个提交对象: 87 | 88 | ![after push](images/push1.png) 89 | 90 | 现在,其他成员也要将你的提交拉取下来, 拉取使用`pull`命令 91 | 92 | ![拉取配图](images/pull.png) 93 | 94 | ```shell 95 | (Jim)$ git pull origin master 96 | ``` 97 | 98 | ### 2.4 冲突解决 99 | 100 | 假设你和另外一个同事 Jim 正在同时开发这个项目. 你修改了多次 hello.txt, 提交了多次代码到远程库,而 Jim 在创建另一个文件开发完新功能准备提交. 现在的提交图为: 101 | 102 | ![提交图](images/commit1.png) 103 | 104 | ```shell 105 | # Jim很有成就感地准备提交到远程版本库 106 | (Jim)$ git push origin master 107 | error: failed to push some refs to '/path/to/myrepo.git' 108 | hint: Updates were rejected because the tip of your current branch is behind 109 | hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 110 | hint: before pushing again. 111 | hint: See the 'Note about fast-forwards' in 'git push --help' for details 112 | ``` 113 | 114 | 什么鬼。远程版本库拒绝了,原因根据上图可以得知,因为远程版本库比 Jim 的本地版本库的提交记录要新。以前我们使用 SVN,在提交之前我们都习惯"`svn update`"一下, 保证版本库处于最新的状态,并在本地解决好冲突再提交。 115 | git 也是如此。Git 推荐在提交前使用`git pull`拉取最新的版本库。 116 | 117 | > 你也可以将远程版本库和你的版本库视作两个独立分支, 那么`git pull`和`git push`的过程就是分支合并的过程. 实际上也是如此. 关于分支合并的细节,见[分支操作](operation.md)一节 118 | 119 | ```shell 120 | # 拉取最新远程分支, 合并之后会生成一条新的“合并提交”记录 121 | (Jim)$ git pull 122 | (Jim)$ git status 123 | On branch master 124 | Your branch and 'origin/master' have diverged, 125 | and have 2 and 2 different commits each, respectively. 126 | (use "git pull" to merge the remote branch into yours) 127 | 128 | All conflicts fixed but you are still merging. 129 | (use "git commit" to conclude merge) 130 | 131 | Changes to be committed: 132 | 133 | modified: hello.txt 134 | 135 | (Jim)$ git commit -m "合并远程分支" 136 | # 如果有冲突,修复了冲突之后就可以重新提交了 137 | (Jim)$ git push 138 | ``` 139 | 140 | 现在的提交图为: 141 | 142 | ![合并后提交图](images/commit2.png) 143 | 144 | ### 2.5 冲突解决 2 145 | 146 | 一般情况下, 分支合并都会产生一个`合并提交记录`,  如果你要获得线性的历史记录的话, 可以使用`rebase` 147 | 策略来处理合并两个分支. 148 | 149 | `rebase`中文  翻译过来就是`变基`, 更通俗的将就是 "改变分支的基础". 根据上图,我们可以知道 150 | Jim 的本地分支是基于`初始化项目, 新建hello.txt`这个提交为基础的. 通过 git 的`rebase`命令,  是可以篡改分支的基础的: 151 | 152 | ```shell 153 | # 打翻从来, 使用rebase命令进行合并 154 | (Jim)$ git pull --rebase 155 | (Jim)$ git push 156 | ``` 157 | 158 |  159 | 我们使用 rebase 命令, 让 Jim 的`本地分支`的`基础`基于`远程版本库最新提交`,  那么现在的提交图, 看起来就是这样: 160 | 161 | ![合并后提交图](images/commit3.png) 162 | 163 | 使用 rebase 的优点就是不会产生多余的提交记录; 但是会丢失分支的轨迹, 也就是你在 GUI 上看到的分支只有一条分支, 不会有普通合并那样的分支分叉和合并记录. 164 | 165 | > rebase 模式解决冲突:
166 | > 如果在 rebase 的过程中出现冲突, git 会暂停下来, 让你解决冲突. 167 | > 解决完冲突之后, 再添加到索引: 168 | > 169 | > ```shell 170 | > # 解决完冲突 171 | > $ git add 冲突的文件 172 | > $ git rebase --continue 173 | > ``` 174 | > 175 | > 如果要中断 rebase, 可以执行: 176 | > 177 | > ```shell 178 | > # 中断rebase 179 | > $ git rebase --abort 180 | > ``` 181 | -------------------------------------------------------------------------------- /branch/compare.md: -------------------------------------------------------------------------------- 1 | # 常见工作流比较与选择 2 | 3 | Git 有很多工作流方式,这些工作流的选择可能依赖于`项目的规模`,`项目的类型`以及`团队成员的结构`. 4 | 比如一个简单的个人项目可能不需要复杂的分支划分,我们的变更都是直接提交到 master 分支。再比如开源项目,除了核心团队成员,其他贡献者是没有提交的权限的,而且我们也需要手段来验证和讨论贡献的代码是否合理。 所以对于开源项目 5 | fork 工作流更为适合. 6 | 了解常见的工作流有利于组织或创建适合自己团队的工作流, 提交团队协作的效率;常见的工作流有: 7 | 8 | * [集中式的工作流](centralized.md) 9 | * [基于功能分支的工作流](feature.md) 10 | * [Gitflow](gitflow.md) 11 | * [Fork/Pull Request 工作流](fork.md) 12 | 13 | 通过下面的介绍,你会发现上面列表后者一般是前者的扩展和优化: 14 | 15 | ![工作流比较](images/workflow.png) 16 | -------------------------------------------------------------------------------- /branch/eim.md: -------------------------------------------------------------------------------- 1 | # EIM 工作流规范 2 | -------------------------------------------------------------------------------- /branch/feature.md: -------------------------------------------------------------------------------- 1 | # 功能分支工作流 2 | 3 | 随着项目规模变大, 和成员分工的细化,集中式工作流的弊端就会显现出来, 比如不同的成员开发不同的功能,所有代码都往 master 分支上丢,不管是完成还是没完成,稳定还是没有稳定。这样导致我们无法随时构建和发布一个稳定的版本出来。 4 | 5 | `功能分支工作流`是以`集中式工作流`为基础的。它提倡为各个新功能分配一个专门的分支来开发, 当功能分支稳定,或者说经过完备的测试之后才合并到 master 分支。 6 | 7 | ![功能分支工作流配图](images/feature_flow.png) 8 | 9 | `功能分支工作流`相较`集中式`工作流的有点: 10 | 11 | * 保持主干的干净。隔离了多个开发者在各自功能上的开发不会扰乱主干代码 12 | * 提供了`代码review`的空间。功能分支在合并到主干之前,触发集成测试,或者开启`Pull Request`, 启动一个围绕分支的讨论。发挥群众的力量 13 | 14 | ## 1. 适用场景 15 | 16 | 适合分工明确,版本关系简单的项目. 17 | 18 | ## 2. 示例 19 | 20 | ### 2.1 创建分支 21 | 22 | 基于上文集中式工作流的项目,现在 Jim 负责开发一个 very cool 功能: 23 | 24 | ```shell 25 | # 创建分支并马上切换 26 | (Jim)$ git checkout -b feature/very-cool 27 | 28 | # 上面的命令相当于 29 | (Jim)$ git branch feature/very-cool 30 | (Jim)$ git checkout feature/very-cool 31 | 32 | # 查看当前分支 33 | (Jim)$ git branch 34 | * feature/very-cool 35 | master 36 | ``` 37 | 38 | > 分支命名规范:
39 | > 在这里推荐适用有带层次的分支命名方式,比如功能分支为 feature/xxx, bug 分支为 bug/B121231, 40 | > 发布分支为 release/v1.0.1. 因为 git 的一些命令支持使用通配符的形式。另外在有很多分支时,可以较快地区分不同类型的分支
41 | > 如: `git show-branch 'bug/*'` 42 | 43 | ### 2.2 推送到远程分支 44 | 45 | ok, 假设 Jim 已经将 very cool 功能开发完毕了,现在要推送到远程版本库,给首长和群众检阅: 46 | 47 | ```shell 48 | # 提交到远程库的feature/very-cool分支 49 | (Jim)$ git push -u origin feature/very-cool 50 | ``` 51 | 52 | `-u`是`--set-upstream-to`的简写,它的意思是将当前本地分支的上游绑定为远程分支。换句话说,就是本地分支和远程分支对应起来。这个选项只需要在第一次推送时设置。设置了上游之后,以后推送和拉取就不需要添加参数了: 53 | 54 | ```shell 55 | # 设置了上游之后,下次拉取和推送就不需要指定远程库和分支了 56 | (Jim)$ git pull 57 | (Jim)$ git push 58 | ``` 59 | 60 | ### 2.3 发起 Pull Request 61 | 62 | `github`和`gitlab`都支持`Pull Request`, 将功能分支提交到远程版本库之后, 项目首页就会出现 Pull Request 的按钮: 63 | 64 | ![pull request](images/pr1.png) 65 | 66 | 这个类似于我们在工作宝群上发一个通告,通知团队成员完成了什么事情: 67 | 68 | ![pull request](images/pr2.png) 69 | 70 | 项目成员可以对这个分支的提交进行讨论和 代码 review, 最后由`项目负责人`合并到`master` 71 | 72 | ![pull request](images/pr3.png) 73 | 74 | ### 2.4 合并 Pull Request 75 | 76 | Pull Request 可以在`gitlab`或`github`的页面上进行, 如果你要使用自定义的策略进行合并。负责人也可以将分支拉取到本地进行合并. 77 | 78 | ```shell 79 | $ git checkout master 80 | # 保持master为最新版本 81 | $ git pull 82 | 83 | # 合并远程分支到master分支 等价于: `git merge feature/very-cool` 84 | $ git pull origin feature/very-cool 85 | 86 | # 推送最新版本到远程版本库 87 | $ git push 88 | ``` 89 | 90 | 如果你不需要保留分支了,可以使用下列命令删除分支 91 | 92 | ```shell 93 | # 删除分支: 94 | $ git branch -d feature/very-cool 95 | # 删除远程分支 96 | $ git push -d origin feature/very-cool 97 | ``` 98 | -------------------------------------------------------------------------------- /branch/fork.md: -------------------------------------------------------------------------------- 1 | # Fork 工作流 2 | 3 | `Fork 工作流`是一种`分布式工作流`,充分利用了 Git 在分支和克隆上的优势。可以安全可靠地管理大团队的开发者,并能接受不信任贡献者的提交。像`github`和`gitlab` 线上服务就是使用这个工作流模式 4 | 5 | ![fork工作流](images/fork.png) 6 | 7 | 每个成员都可以 fork 项目到自己的目录, 甚至还可以继续衍生出更多项目, 项目之间的通过 pull request 进行代码合并. 8 | 一个项目可以有多个`上游项目`, 也可以由于多个`下游项目`, 它们指向形成一种`图`关系. 9 | 10 | ## 1. Fork 的原理 11 | 12 | Fork 其实不是一个新东西, 当我们在`github`上点击`fork`的时候, `github`只是将项目克隆(git clone)到你的个人目录 13 | 14 | ## 2. 适用场景 15 | 16 | * 适合开源项目. 开源项目需要接受任何开发者的代码共享, 无需给他们正式的代码库的写权限 17 | * 适合大型的, 自发性的团队. fork 工作流可以提供灵活的方式来安全协作 18 | 19 | ## 3. 工作方式 20 | 21 | ![fork工作流](images/fork2.png) 22 | 23 | 1. fork: 一般通过服务器页面进行 fork, 创建一个拥有所有权的拷贝 24 | 2. 克隆项目到本地, 新建`功能分支`, 提交自己的代码, 然后推送到远程版本库 25 | 3. 现在可以发起将`功能分支` 合并到上游(upstream)项目的`Pull Request`请求; 26 | 4. 上游项目的所有者决定是否合并你的代码 27 | 28 | ## 4. 示例 29 | 30 | ### 4.1 fork 项目 31 | 32 | 首先 fork 上游项目: 33 | ![fork](images/fork_example1.png) 34 | 35 | ### 4.2 开发新功能 36 | 37 | 将项目克隆到本地,并在功能分支上开发新功能: 38 | 39 | ```shell 40 | # 克隆 41 | $ git clone git@github.com:me/test-fork.git 42 | # 新建功能分支 43 | $ git checkout -b feature/awesome 44 | # ... 新增功能, 提交到远程 45 | $ git push -u origin feature/awesome 46 | ``` 47 | 48 | ### 4.3 提交 Pull Request 49 | 50 | 现在打开项目主页, 就可以开始提交 Pull Request 了 51 | 52 | ![pull request](images/fork_example2.png) 53 | 54 | 假设清茂跟我一样 fork 了`test-fork`项目,我不仅可以将 PR 提交给`上游项目`, 也可以提交给`同源项目`: 55 | 56 | ![pull request](images/fork_example3.png) 57 | 58 | ### 4.4 合并 59 | 60 | 一般开源项目都会严格审验每个 PR,`GitHub`支持在每个 PR 提交后,对他跑一些集成测试,进行一些讨论和 Review。下面是`React`项目的一个 PR 页面, 这里显示 PR 是否经过了测试、分支代码是否冲突, 项目管理员还可以要求变更: 61 | 62 | ![pull request](images/fork_example4.png) 63 | -------------------------------------------------------------------------------- /branch/gitflow.md: -------------------------------------------------------------------------------- 1 | # Git Flow 2 | 3 | `功能分支工作流`只定义了`功能分支`的职责, 但是现实中的项目往往复杂得多。我们可能要同时维护多个版本,我们可能要修复多个版本上的 bugs。所以就有了 Git Flow 工作流。 4 | 5 | `Git Flow 工作流`继承了`功能分支工作流`, 定义了更为严格的分支模型。定义了各种分支的`职责`和`使用场景`以及`生命周期`: 6 | 7 | ![git flow配图](images/git_flow.png) 8 | 9 | ## 1. 分支定义 10 | 11 | ### 1.1 历史分支 12 | 13 | ![历史分支配图](images/history_branch.png) 14 | 15 | GitFlow 使用两个分支来记录项目的历史记录,即`master`分支和`develop`分支. 所谓`历史分支`是相对于`临时分支`: `临时分支`有`功能分支`和`修复分支`以及`发布分支`, 这些分支完成自己的使命后就会被删除。而`发布分支`则一个没有'未来'的分支,它的历史可能停留在发布的那一刻。 16 | 17 | * `master` 这是一个稳定的分支, 又称为保护分支, 表示正式发布的历史, 所有对外正式版本发布都会合并到这里, 并打上版本标签。 18 | * `develop` 开发分支用来整合功能分支, 表示最新的开发状态。等价于`功能分支工作流`的`master`分支. 19 | 20 | > 注意每次合并到 master 都要打上 tag, 方便定位 21 | 22 | ### 1.2 功能分支 23 | 24 | `功能分支`的职责无须赘述。这里和`功能分支工作流`不一样的是,`功能分支` 从`开发分支`中分叉出来,当新功能完成后,在合并回`开发分支` 25 | 26 | ![功能分支配图](images/feature_branch.png) 27 | 28 | ### 1.3 发布分支 29 | 30 | 一旦到了发布时机,比如`开发分支`积累了足够的功能或者到了既定的发布日期。 就从`开发分支`上分叉出一个`发布分支`. 然后开始`发布循环`, 从此刻开始新的功能不会加到这个分支,这个分支只应该做 bug 修复, 文档生成和其他面向发布的任务。 31 | 32 | ![发布分支配图](images/release_branch.png) 33 | 34 | 当`发布分支`稳定到足以合并到`master`的时候, `发布分支`的生命周期可以结束了。这时候我们将稳定的发布分支合并到`master`分支,然后打上 tag 版本号;接着还需要将`发布分支`合并回开发分支。 35 | 36 | > 该不该保留发布分支?
37 | > 你可以删掉它,因为在 master 上打了 tag,即使你删掉了发布分支,你也可以很方便的重新创建一个: 38 | > 39 | > ```shell 40 | > # 基于tag v1.0. 0创建一个分支 41 | > $ git checkout -b release/v1.0.0 v1.0.0 42 | > ``` 43 | 44 | 从上可以看到发布分支的好处有: 45 | 46 | * `发布分支`是`开发分支`和`master分支`之间的缓冲区, 对于一个发布,会在发布分支中停留一段时间,等待稳定后才合并到 master 47 | * `发布分支`使得团队可以在完善当前发布版本的同时,不阻拦新功能的开发 48 | 49 | ### 1.4 bug 修复分支 50 | 51 | 或者称为`补丁分支`, 补丁分支的职责是快速给`生产版本`打补丁,这些 bug 可能比较*紧急*,而且*跨越多个分支*, 所以我们通过新建一个`补丁分支`, 快速修复`master`上面的 bug,并合并到`master`和`开发分支`, 并打上 tag 52 | 53 | ![补丁分支配图](images/bug_branch.png) 54 | 55 | 这是**唯一**一个可以从`master`分叉出来的分支类型。 56 | 57 | ### 1.5 小结 58 | 59 | 综上,可以看出 GitFlow 定义的这些分支类型都要较高的实用价值。试想一下除了`修复分支`,还有那些方式可以优雅地处理生产版本或跨越多个分支的 bug?但是现实项目可能复杂很多,对分支的应用也可以更加灵活。这有待我们去实践和总结 60 | 61 | ## 2. 示例 62 | 63 | 这里以 SMS 项目为例, 来展示如何应用 Git Flow 工作流. 64 | 65 | ### 2.1 初始化项目 66 | 67 | 首先创建项目, 并创建一个 develop 分支, 以后更多操作是在 develop 分支上进行的: 68 | 69 | ```shell 70 | $ mkdir sms && cd sms 71 | # 初始化git版本库 72 | $ git init 73 | # 添加远程版本库 74 | $ git remote add origin git@myhost.com:web/sms.git 75 | # 新建develop分支并切换 76 | $ git checkout -b develop 77 | 78 | # 初始化项目 79 | $ echo '# SMS项目' > README.md 80 | # 创建.gitignore文件, 用于忽略一些临时文件或自动编译生成文件 81 | $ touch .gitignore 82 | # ... 83 | $ git add . 84 | $ git commit -m "初始化SMS 项目框架" 85 | # 推送到远程开发分支 86 | $ git push -u origin develop 87 | ``` 88 | 89 | ### 2.2 功能开发 90 | 91 | 现在我和清茂开始独立开始自己的功能, 比如, 我开发`计费`, 清茂开发`统计`. 我们都新建自己的功能分支, 独立开发,独立测试, 互不干扰. 92 | 93 | ```shell 94 | # 克隆版本库 95 | (我)$ git clone origin git@myhost.com:web/sms.git 96 | 97 | # 切换到develop分支 98 | (我)$ git checkout develop 99 | 100 | # 创建功能分支, 功能分支是从开发分支分叉出去的 101 | (我)$ git checkout -b feature/charging 102 | 103 | # 现在可以愉快地开发新功能了 104 | .... 105 | # 将分支推送到远程版本库 106 | (我)$ git push origin feature/charging 107 | ``` 108 | 109 | ### 2.3 代码 Review 和合并 110 | 111 | ok, 我已经完成计费的功能, 而且基本功能也通过了测试, 是时候合并到`开发分支`了. 我发起了 Pull Request 了, 接受群众 Review. 112 | 项目负责人可以接收 Pull Request 并将分支合并到`开发分支`. 113 | 114 | 当然 Pull Request 只是一个可选的步骤, 你可以直接将分支合并到`开发分支`. 115 | 116 | ### 2.4 发布分支 117 | 118 | 现在统计和计费都开发完毕了, 项目负责人景烽掐指一算, 发布新版本吉时已到, 假设是 v0.1.0, 从`开发分支`中拉取出一个发布分支: 119 | 120 | ```shell 121 | # 保持最新 122 | $ git pull 123 | $ git checkout develop 124 | $ git checkout -b release/v0.1.0 125 | $ git push -u origin release/v0.1.0 126 | ``` 127 | 128 | 我们已经开始新的功能了, 突然间测试报了个 bug, 我得优先处理这个 bug: 129 | 130 | ```shell 131 | # 但是在切换分支报了个错: 132 | (我)$ git checkout release/v0.1.0 133 | error: Your local changes to the following files would be overwritten by checkout: 134 | xxx.js 135 | Please commit your changes or stash them before you switch branches. 136 | Aborting 137 | ``` 138 | 139 | 意思是, 你的本地已经修改了一些文件, 如果就这样 checkout 过去, 将会被覆盖你可以提交你的变更, 或者储藏(stash)起来. 140 | 因为我的代码写到一半, 不能将没有意义的代码提交到版本库. 所以只能使用后者 141 | 142 | ```shell 143 | # 保存现场 144 | (我)$ git stash 145 | (我)$ git checkout release/v0.1.0 146 | 147 | # 修复完bug回到原来的功能分支 148 | # 恢复现场 149 | (我)$ git stash pop 150 | ``` 151 | 152 | ### 2.5 合并发布分支 153 | 154 | 发布分支在经过几次迭代之后, 稳定性已经足以合并到`master`了: 155 | 156 | ```shell 157 | # 切换到master分支 158 | $ git checkout master 159 | 160 | # 合并分支 161 | $ git merge release/v0.1.0 162 | # 打个tag 163 | $ git tag -a v0.1.0 -m "v0.1.0: 包含了计费和统计等功能更新" 164 | # 推送版本库 165 | $ git push 166 | # 推送tags 167 | $ git push --tags 168 | 169 | # 切换到开发分支 170 | $ git checkout develop 171 | $ git merge release/v0.1.0 172 | $ git push 173 | 174 | # 删除发布分支 175 | $ git branch -d release/v0.1.0 176 | # 删除远程发布分支 177 | $ git push -d release/v0.1.0 178 | ``` 179 | 180 | ### 2.6 修复 bug 181 | 182 | 客户报了一个生产版本的 bug, 这 bug 较为影响使用, 我们必须马上修复这个 bug 并发个版 183 | 184 | ```shell 185 | # 切换到master分支 186 | $ git checkout master 187 | # 创建buf修复分支 188 | $ git checkout -b bug/B20180212 189 | # 修复bug并提交 190 | $ git commit -m "紧急修复xxxbug" 191 | 192 | # 合并到master 193 | $ git checkout master 194 | $ git merge bug/B20180212 195 | $ git tag -a v0.1.1 -m "紧急修复xxxbug" 196 | $ git push 197 | 198 | # 合并到开发分支, 因为开发分支同样有这个bug 199 | $ git checkout develop 200 | $ git merge bug/B20180212 201 | $ git push 202 | 203 | # 删除bug分支 204 | $ git branch -d bug/B20180212 205 | ``` 206 | -------------------------------------------------------------------------------- /branch/images/bare-repo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/bare-repo.png -------------------------------------------------------------------------------- /branch/images/bug_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/bug_branch.png -------------------------------------------------------------------------------- /branch/images/centralized1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/centralized1.png -------------------------------------------------------------------------------- /branch/images/clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/clone.png -------------------------------------------------------------------------------- /branch/images/commit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/commit1.png -------------------------------------------------------------------------------- /branch/images/commit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/commit2.png -------------------------------------------------------------------------------- /branch/images/commit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/commit3.png -------------------------------------------------------------------------------- /branch/images/feature_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/feature_branch.png -------------------------------------------------------------------------------- /branch/images/feature_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/feature_flow.png -------------------------------------------------------------------------------- /branch/images/fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork.png -------------------------------------------------------------------------------- /branch/images/fork2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork2.png -------------------------------------------------------------------------------- /branch/images/fork_example1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork_example1.png -------------------------------------------------------------------------------- /branch/images/fork_example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork_example2.png -------------------------------------------------------------------------------- /branch/images/fork_example3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork_example3.png -------------------------------------------------------------------------------- /branch/images/fork_example4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/fork_example4.png -------------------------------------------------------------------------------- /branch/images/git_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/git_flow.png -------------------------------------------------------------------------------- /branch/images/history_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/history_branch.png -------------------------------------------------------------------------------- /branch/images/pr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/pr1.png -------------------------------------------------------------------------------- /branch/images/pr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/pr2.png -------------------------------------------------------------------------------- /branch/images/pr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/pr3.png -------------------------------------------------------------------------------- /branch/images/pull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/pull.png -------------------------------------------------------------------------------- /branch/images/pull1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/pull1.png -------------------------------------------------------------------------------- /branch/images/push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/push.png -------------------------------------------------------------------------------- /branch/images/push1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/push1.png -------------------------------------------------------------------------------- /branch/images/release_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/release_branch.png -------------------------------------------------------------------------------- /branch/images/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/branch/images/workflow.png -------------------------------------------------------------------------------- /branch/operation.md: -------------------------------------------------------------------------------- 1 | # 分支操作 2 | -------------------------------------------------------------------------------- /charts.key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivan-94/git-guide/ae3ea9048796c0d071076fbd9dde7acca794f01f/charts.key -------------------------------------------------------------------------------- /further/learn.md: -------------------------------------------------------------------------------- 1 | # 学习资料 2 | 3 | ## 图书 4 | 5 | * 《Git 版本控制管理 第 2 版》 6 | * [《Git Pro》](https://git-scm.com/book/zh/v2) 7 | * [《Git Internals》](https://github.com/pluralsight/git-internals-pdf) 8 | 9 | ## 文章 10 | 11 | * [git Flight Rules](https://github.com/k88hudson/git-flight-rules/blob/master/README_zh-CN.md#%E5%85%B6%E5%AE%83%E8%B5%84%E6%BA%90other-resources) git 飞行规则 12 | * [git-recipes](https://github.com/geeeeeeeeek/git-recipes)高质量的 Git 中文教程 13 | -------------------------------------------------------------------------------- /further/tools.md: -------------------------------------------------------------------------------- 1 | # 工具/扩展 2 | 3 | ## Cheat-sheet 4 | 5 | * [git-cheat-sheet](https://github.com/arslanbilal/git-cheat-sheet) 6 | * [git-flow-cheatsheet](https://github.com/danielkummer/git-flow-cheatsheet) 7 | 8 | ## 脚本和工具(Scripts and Tools) 9 | 10 | * [firstaidgit.io](http://firstaidgit.io/) 一个可搜索的最常被问到的 Git 的问题 11 | * [git-extra-commands](https://github.com/unixorn/git-extra-commands) - 一堆有用的额外的 Git 脚本 12 | * [git-extras](https://github.com/tj/git-extras) - GIT 工具集 -- repo summary, repl, changelog population, author commit percentages and more 13 | * [git-fire](https://github.com/qw3rtman/git-fire) - git-fire 是一个 Git 插件,用于帮助在紧急情况下添加所有当前文件, 做提交(committing), 和推(push)到一个新分支(阻止合并冲突)。 14 | * [git-tips](https://github.com/git-tips/tips) - Git 小提示 15 | * [git-town](https://github.com/Originate/git-town) - 通用,高级 Git 工作流支持! http://www.git-town.com 16 | 17 | ## GUI 客户端(GUI Clients) 18 | 19 | * [GitKraken](https://www.gitkraken.com/) - 豪华的 Git 客户端 Windows, Mac & Linux 20 | * [git-cola](https://git-cola.github.io/) - 另外一个 Git 客户端 Windows & OS X 21 | * [GitUp](https://github.com/git-up/GitUp) - 一个新的 Git 客户端,在处理 Git 的复杂性上有自己的特点 22 | * [gitx-dev](https://rowanj.github.io/gitx/) - 图形化的 Git 客户端 OS X 23 | * [Source Tree](https://www.sourcetreeapp.com/) - 免费的图形化 Git 客户端 Windows & OS X 24 | * [Tower](http://www.git-tower.com/) - 图形化 Git 客户端 OS X(付费) 25 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "git-guide", 3 | "version": "1.0.0", 4 | "description": "git 版本控制指南", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "gitbook": "gitbook", 9 | "serve": "gitbook serve", 10 | "build": "gitbook build" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/carney520/git-guide.git" 15 | }, 16 | "author": "", 17 | "license": "MITk", 18 | "bugs": { 19 | "url": "https://github.com/carney520/git-guide/issues" 20 | }, 21 | "homepage": "https://github.com/carney520/git-guide#readme", 22 | "devDependencies": { 23 | "gitbook-cli": "^2.3.2" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | JSONStream@~1.3.1: 6 | version "1.3.2" 7 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" 8 | dependencies: 9 | jsonparse "^1.2.0" 10 | through ">=2.2.7 <3" 11 | 12 | abbrev@1, abbrev@~1.1.0: 13 | version "1.1.1" 14 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 15 | 16 | abbrev@~1.0.9: 17 | version "1.0.9" 18 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 19 | 20 | agent-base@4, agent-base@^4.1.0: 21 | version "4.2.0" 22 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" 23 | dependencies: 24 | es6-promisify "^5.0.0" 25 | 26 | agentkeepalive@^3.3.0: 27 | version "3.3.0" 28 | resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.3.0.tgz#6d5de5829afd3be2712201a39275fd11c651857c" 29 | dependencies: 30 | humanize-ms "^1.2.1" 31 | 32 | ajv@^4.9.1: 33 | version "4.11.8" 34 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" 35 | dependencies: 36 | co "^4.6.0" 37 | json-stable-stringify "^1.0.1" 38 | 39 | ajv@^5.1.0: 40 | version "5.5.2" 41 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 42 | dependencies: 43 | co "^4.6.0" 44 | fast-deep-equal "^1.0.0" 45 | fast-json-stable-stringify "^2.0.0" 46 | json-schema-traverse "^0.3.0" 47 | 48 | ansi-align@^2.0.0: 49 | version "2.0.0" 50 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" 51 | dependencies: 52 | string-width "^2.0.0" 53 | 54 | ansi-regex@^2.0.0: 55 | version "2.1.1" 56 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 57 | 58 | ansi-regex@^3.0.0, ansi-regex@~3.0.0: 59 | version "3.0.0" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 61 | 62 | ansi-styles@^2.2.1: 63 | version "2.2.1" 64 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 65 | 66 | ansi-styles@^3.1.0: 67 | version "3.2.0" 68 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 69 | dependencies: 70 | color-convert "^1.9.0" 71 | 72 | ansi@^0.3.0, ansi@~0.3.1: 73 | version "0.3.1" 74 | resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" 75 | 76 | ansicolors@~0.3.2: 77 | version "0.3.2" 78 | resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" 79 | 80 | ansistyles@~0.1.3: 81 | version "0.1.3" 82 | resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" 83 | 84 | aproba@^1.0.3, aproba@^1.1.1: 85 | version "1.2.0" 86 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 87 | 88 | aproba@~1.1.2: 89 | version "1.1.2" 90 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" 91 | 92 | archy@~1.0.0: 93 | version "1.0.0" 94 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 95 | 96 | are-we-there-yet@~1.1.2: 97 | version "1.1.4" 98 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" 99 | dependencies: 100 | delegates "^1.0.0" 101 | readable-stream "^2.0.6" 102 | 103 | asap@^2.0.0: 104 | version "2.0.6" 105 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 106 | 107 | asn1@~0.2.3: 108 | version "0.2.3" 109 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 110 | 111 | assert-plus@1.0.0, assert-plus@^1.0.0: 112 | version "1.0.0" 113 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 114 | 115 | assert-plus@^0.2.0: 116 | version "0.2.0" 117 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 118 | 119 | async-some@~1.0.2: 120 | version "1.0.2" 121 | resolved "https://registry.yarnpkg.com/async-some/-/async-some-1.0.2.tgz#4d8a81620d5958791b5b98f802d3207776e95509" 122 | dependencies: 123 | dezalgo "^1.0.2" 124 | 125 | async@^2.0.1: 126 | version "2.6.0" 127 | resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 128 | dependencies: 129 | lodash "^4.14.0" 130 | 131 | asynckit@^0.4.0: 132 | version "0.4.0" 133 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 134 | 135 | aws-sign2@~0.6.0: 136 | version "0.6.0" 137 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 138 | 139 | aws-sign2@~0.7.0: 140 | version "0.7.0" 141 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 142 | 143 | aws4@^1.2.1, aws4@^1.6.0: 144 | version "1.6.0" 145 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 146 | 147 | balanced-match@^1.0.0: 148 | version "1.0.0" 149 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 150 | 151 | bash-color@0.0.4: 152 | version "0.0.4" 153 | resolved "https://registry.yarnpkg.com/bash-color/-/bash-color-0.0.4.tgz#e9be8ce33540cada4881768c59bd63865736e913" 154 | 155 | bcrypt-pbkdf@^1.0.0: 156 | version "1.0.1" 157 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 158 | dependencies: 159 | tweetnacl "^0.14.3" 160 | 161 | bl@^1.0.0: 162 | version "1.2.1" 163 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" 164 | dependencies: 165 | readable-stream "^2.0.5" 166 | 167 | bl@~1.1.2: 168 | version "1.1.2" 169 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" 170 | dependencies: 171 | readable-stream "~2.0.5" 172 | 173 | block-stream@*, block-stream@0.0.9: 174 | version "0.0.9" 175 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 176 | dependencies: 177 | inherits "~2.0.0" 178 | 179 | bluebird@^3.5.0, bluebird@~3.5.0: 180 | version "3.5.1" 181 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" 182 | 183 | boom@2.x.x: 184 | version "2.10.1" 185 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 186 | dependencies: 187 | hoek "2.x.x" 188 | 189 | boom@4.x.x: 190 | version "4.3.1" 191 | resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" 192 | dependencies: 193 | hoek "4.x.x" 194 | 195 | boom@5.x.x: 196 | version "5.2.0" 197 | resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 198 | dependencies: 199 | hoek "4.x.x" 200 | 201 | boxen@^1.0.0: 202 | version "1.3.0" 203 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" 204 | dependencies: 205 | ansi-align "^2.0.0" 206 | camelcase "^4.0.0" 207 | chalk "^2.0.1" 208 | cli-boxes "^1.0.0" 209 | string-width "^2.0.0" 210 | term-size "^1.2.0" 211 | widest-line "^2.0.0" 212 | 213 | brace-expansion@^1.1.7: 214 | version "1.1.8" 215 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 216 | dependencies: 217 | balanced-match "^1.0.0" 218 | concat-map "0.0.1" 219 | 220 | buffer-shims@^1.0.0: 221 | version "1.0.0" 222 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 223 | 224 | builtin-modules@^1.0.0: 225 | version "1.1.1" 226 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 227 | 228 | builtins@0.0.7: 229 | version "0.0.7" 230 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-0.0.7.tgz#355219cd6cf18dbe7c01cc7fd2dce765cfdc549a" 231 | 232 | builtins@^1.0.3: 233 | version "1.0.3" 234 | resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" 235 | 236 | cacache@^10.0.0: 237 | version "10.0.2" 238 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.2.tgz#105a93a162bbedf3a25da42e1939ed99ffb145f8" 239 | dependencies: 240 | bluebird "^3.5.0" 241 | chownr "^1.0.1" 242 | glob "^7.1.2" 243 | graceful-fs "^4.1.11" 244 | lru-cache "^4.1.1" 245 | mississippi "^1.3.0" 246 | mkdirp "^0.5.1" 247 | move-concurrently "^1.0.1" 248 | promise-inflight "^1.0.1" 249 | rimraf "^2.6.1" 250 | ssri "^5.0.0" 251 | unique-filename "^1.1.0" 252 | y18n "^3.2.1" 253 | 254 | cacache@^9.2.9: 255 | version "9.3.0" 256 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.3.0.tgz#9cd58f2dd0b8c8cacf685b7067b416d6d3cf9db1" 257 | dependencies: 258 | bluebird "^3.5.0" 259 | chownr "^1.0.1" 260 | glob "^7.1.2" 261 | graceful-fs "^4.1.11" 262 | lru-cache "^4.1.1" 263 | mississippi "^1.3.0" 264 | mkdirp "^0.5.1" 265 | move-concurrently "^1.0.1" 266 | promise-inflight "^1.0.1" 267 | rimraf "^2.6.1" 268 | ssri "^4.1.6" 269 | unique-filename "^1.1.0" 270 | y18n "^3.2.1" 271 | 272 | cacache@~9.2.9: 273 | version "9.2.9" 274 | resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.2.9.tgz#f9d7ffe039851ec94c28290662afa4dd4bb9e8dd" 275 | dependencies: 276 | bluebird "^3.5.0" 277 | chownr "^1.0.1" 278 | glob "^7.1.2" 279 | graceful-fs "^4.1.11" 280 | lru-cache "^4.1.1" 281 | mississippi "^1.3.0" 282 | mkdirp "^0.5.1" 283 | move-concurrently "^1.0.1" 284 | promise-inflight "^1.0.1" 285 | rimraf "^2.6.1" 286 | ssri "^4.1.6" 287 | unique-filename "^1.1.0" 288 | y18n "^3.2.1" 289 | 290 | call-limit@~1.1.0: 291 | version "1.1.0" 292 | resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" 293 | 294 | camelcase@^4.0.0: 295 | version "4.1.0" 296 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 297 | 298 | capture-stack-trace@^1.0.0: 299 | version "1.0.0" 300 | resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" 301 | 302 | caseless@~0.11.0: 303 | version "0.11.0" 304 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 305 | 306 | caseless@~0.12.0: 307 | version "0.12.0" 308 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 309 | 310 | chalk@^1.0.0, chalk@^1.1.1: 311 | version "1.1.3" 312 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 313 | dependencies: 314 | ansi-styles "^2.2.1" 315 | escape-string-regexp "^1.0.2" 316 | has-ansi "^2.0.0" 317 | strip-ansi "^3.0.0" 318 | supports-color "^2.0.0" 319 | 320 | chalk@^2.0.1: 321 | version "2.3.0" 322 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" 323 | dependencies: 324 | ansi-styles "^3.1.0" 325 | escape-string-regexp "^1.0.5" 326 | supports-color "^4.0.0" 327 | 328 | char-spinner@~1.0.1: 329 | version "1.0.1" 330 | resolved "https://registry.yarnpkg.com/char-spinner/-/char-spinner-1.0.1.tgz#e6ea67bd247e107112983b7ab0479ed362800081" 331 | 332 | chmodr@~1.0.2: 333 | version "1.0.2" 334 | resolved "https://registry.yarnpkg.com/chmodr/-/chmodr-1.0.2.tgz#04662b932d0f02ec66deaa2b0ea42811968e3eb9" 335 | 336 | chownr@^1.0.1, chownr@~1.0.1: 337 | version "1.0.1" 338 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" 339 | 340 | cli-boxes@^1.0.0: 341 | version "1.0.0" 342 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" 343 | 344 | clone@^1.0.2: 345 | version "1.0.3" 346 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" 347 | 348 | cmd-shim@~2.0.2: 349 | version "2.0.2" 350 | resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" 351 | dependencies: 352 | graceful-fs "^4.1.2" 353 | mkdirp "~0.5.0" 354 | 355 | co@^4.6.0: 356 | version "4.6.0" 357 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 358 | 359 | code-point-at@^1.0.0: 360 | version "1.1.0" 361 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 362 | 363 | color-convert@^1.9.0: 364 | version "1.9.1" 365 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" 366 | dependencies: 367 | color-name "^1.1.1" 368 | 369 | color-name@^1.1.1: 370 | version "1.1.3" 371 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 372 | 373 | columnify@~1.5.4: 374 | version "1.5.4" 375 | resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" 376 | dependencies: 377 | strip-ansi "^3.0.0" 378 | wcwidth "^1.0.0" 379 | 380 | combined-stream@^1.0.5, combined-stream@~1.0.5: 381 | version "1.0.5" 382 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 383 | dependencies: 384 | delayed-stream "~1.0.0" 385 | 386 | commander@2.11.0: 387 | version "2.11.0" 388 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" 389 | 390 | commander@^2.9.0: 391 | version "2.14.0" 392 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.0.tgz#7b25325963e6aace20d3a9285b09379b0c2208b5" 393 | 394 | concat-map@0.0.1: 395 | version "0.0.1" 396 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 397 | 398 | concat-stream@^1.5.0, concat-stream@^1.5.2: 399 | version "1.6.0" 400 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 401 | dependencies: 402 | inherits "^2.0.3" 403 | readable-stream "^2.2.2" 404 | typedarray "^0.0.6" 405 | 406 | config-chain@~1.1.10, config-chain@~1.1.11: 407 | version "1.1.11" 408 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" 409 | dependencies: 410 | ini "^1.3.4" 411 | proto-list "~1.2.1" 412 | 413 | configstore@^3.0.0: 414 | version "3.1.1" 415 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90" 416 | dependencies: 417 | dot-prop "^4.1.0" 418 | graceful-fs "^4.1.2" 419 | make-dir "^1.0.0" 420 | unique-string "^1.0.0" 421 | write-file-atomic "^2.0.0" 422 | xdg-basedir "^3.0.0" 423 | 424 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 425 | version "1.1.0" 426 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 427 | 428 | copy-concurrently@^1.0.0: 429 | version "1.0.5" 430 | resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" 431 | dependencies: 432 | aproba "^1.1.1" 433 | fs-write-stream-atomic "^1.0.8" 434 | iferr "^0.1.5" 435 | mkdirp "^0.5.1" 436 | rimraf "^2.5.4" 437 | run-queue "^1.0.0" 438 | 439 | core-util-is@1.0.2, core-util-is@~1.0.0: 440 | version "1.0.2" 441 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 442 | 443 | create-error-class@^3.0.0: 444 | version "3.0.2" 445 | resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 446 | dependencies: 447 | capture-stack-trace "^1.0.0" 448 | 449 | cross-spawn@^5.0.1: 450 | version "5.1.0" 451 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 452 | dependencies: 453 | lru-cache "^4.0.1" 454 | shebang-command "^1.2.0" 455 | which "^1.2.9" 456 | 457 | cryptiles@2.x.x: 458 | version "2.0.5" 459 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 460 | dependencies: 461 | boom "2.x.x" 462 | 463 | cryptiles@3.x.x: 464 | version "3.1.2" 465 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 466 | dependencies: 467 | boom "5.x.x" 468 | 469 | crypto-random-string@^1.0.0: 470 | version "1.0.0" 471 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" 472 | 473 | cyclist@~0.2.2: 474 | version "0.2.2" 475 | resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" 476 | 477 | dashdash@^1.12.0: 478 | version "1.14.1" 479 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 480 | dependencies: 481 | assert-plus "^1.0.0" 482 | 483 | debug@2: 484 | version "2.6.9" 485 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 486 | dependencies: 487 | ms "2.0.0" 488 | 489 | debug@^3.1.0: 490 | version "3.1.0" 491 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 492 | dependencies: 493 | ms "2.0.0" 494 | 495 | debuglog@^1.0.1: 496 | version "1.0.1" 497 | resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" 498 | 499 | deep-extend@~0.4.0: 500 | version "0.4.2" 501 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" 502 | 503 | defaults@^1.0.3: 504 | version "1.0.3" 505 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 506 | dependencies: 507 | clone "^1.0.2" 508 | 509 | delayed-stream@~1.0.0: 510 | version "1.0.0" 511 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 512 | 513 | delegates@^1.0.0: 514 | version "1.0.0" 515 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 516 | 517 | detect-indent@~5.0.0: 518 | version "5.0.0" 519 | resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" 520 | 521 | dezalgo@^1.0.0, dezalgo@^1.0.1, dezalgo@^1.0.2, dezalgo@~1.0.3: 522 | version "1.0.3" 523 | resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" 524 | dependencies: 525 | asap "^2.0.0" 526 | wrappy "1" 527 | 528 | dot-prop@^4.1.0: 529 | version "4.2.0" 530 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" 531 | dependencies: 532 | is-obj "^1.0.0" 533 | 534 | duplexer3@^0.1.4: 535 | version "0.1.4" 536 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 537 | 538 | duplexify@^3.4.2, duplexify@^3.5.3: 539 | version "3.5.3" 540 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e" 541 | dependencies: 542 | end-of-stream "^1.0.0" 543 | inherits "^2.0.1" 544 | readable-stream "^2.0.0" 545 | stream-shift "^1.0.0" 546 | 547 | ecc-jsbn@~0.1.1: 548 | version "0.1.1" 549 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 550 | dependencies: 551 | jsbn "~0.1.0" 552 | 553 | editor@~1.0.0: 554 | version "1.0.0" 555 | resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" 556 | 557 | encoding@^0.1.11: 558 | version "0.1.12" 559 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 560 | dependencies: 561 | iconv-lite "~0.4.13" 562 | 563 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 564 | version "1.4.1" 565 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 566 | dependencies: 567 | once "^1.4.0" 568 | 569 | err-code@^1.0.0: 570 | version "1.1.2" 571 | resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" 572 | 573 | "errno@>=0.1.1 <0.2.0-0": 574 | version "0.1.6" 575 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026" 576 | dependencies: 577 | prr "~1.0.1" 578 | 579 | es6-promise@^4.0.3: 580 | version "4.2.4" 581 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" 582 | 583 | es6-promisify@^5.0.0: 584 | version "5.0.0" 585 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 586 | dependencies: 587 | es6-promise "^4.0.3" 588 | 589 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 590 | version "1.0.5" 591 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 592 | 593 | execa@^0.7.0: 594 | version "0.7.0" 595 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 596 | dependencies: 597 | cross-spawn "^5.0.1" 598 | get-stream "^3.0.0" 599 | is-stream "^1.1.0" 600 | npm-run-path "^2.0.0" 601 | p-finally "^1.0.0" 602 | signal-exit "^3.0.0" 603 | strip-eof "^1.0.0" 604 | 605 | extend@~3.0.0, extend@~3.0.1: 606 | version "3.0.1" 607 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 608 | 609 | extsprintf@1.3.0: 610 | version "1.3.0" 611 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 612 | 613 | extsprintf@^1.2.0: 614 | version "1.4.0" 615 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 616 | 617 | fast-deep-equal@^1.0.0: 618 | version "1.0.0" 619 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 620 | 621 | fast-json-stable-stringify@^2.0.0: 622 | version "2.0.0" 623 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 624 | 625 | flush-write-stream@^1.0.0: 626 | version "1.0.2" 627 | resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.2.tgz#c81b90d8746766f1a609a46809946c45dd8ae417" 628 | dependencies: 629 | inherits "^2.0.1" 630 | readable-stream "^2.0.4" 631 | 632 | forever-agent@~0.6.1: 633 | version "0.6.1" 634 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 635 | 636 | form-data@~1.0.0-rc4: 637 | version "1.0.1" 638 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-1.0.1.tgz#ae315db9a4907fa065502304a66d7733475ee37c" 639 | dependencies: 640 | async "^2.0.1" 641 | combined-stream "^1.0.5" 642 | mime-types "^2.1.11" 643 | 644 | form-data@~2.1.1: 645 | version "2.1.4" 646 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" 647 | dependencies: 648 | asynckit "^0.4.0" 649 | combined-stream "^1.0.5" 650 | mime-types "^2.1.12" 651 | 652 | form-data@~2.3.1: 653 | version "2.3.1" 654 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" 655 | dependencies: 656 | asynckit "^0.4.0" 657 | combined-stream "^1.0.5" 658 | mime-types "^2.1.12" 659 | 660 | from2@^1.3.0: 661 | version "1.3.0" 662 | resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" 663 | dependencies: 664 | inherits "~2.0.1" 665 | readable-stream "~1.1.10" 666 | 667 | from2@^2.1.0: 668 | version "2.3.0" 669 | resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 670 | dependencies: 671 | inherits "^2.0.1" 672 | readable-stream "^2.0.0" 673 | 674 | fs-extra@3.0.1: 675 | version "3.0.1" 676 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" 677 | dependencies: 678 | graceful-fs "^4.1.2" 679 | jsonfile "^3.0.0" 680 | universalify "^0.1.0" 681 | 682 | fs-vacuum@~1.2.10, fs-vacuum@~1.2.9: 683 | version "1.2.10" 684 | resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" 685 | dependencies: 686 | graceful-fs "^4.1.2" 687 | path-is-inside "^1.0.1" 688 | rimraf "^2.5.2" 689 | 690 | fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10, fs-write-stream-atomic@~1.0.8: 691 | version "1.0.10" 692 | resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" 693 | dependencies: 694 | graceful-fs "^4.1.2" 695 | iferr "^0.1.5" 696 | imurmurhash "^0.1.4" 697 | readable-stream "1 || 2" 698 | 699 | fs.realpath@^1.0.0: 700 | version "1.0.0" 701 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 702 | 703 | fstream-ignore@^1.0.0: 704 | version "1.0.5" 705 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 706 | dependencies: 707 | fstream "^1.0.0" 708 | inherits "2" 709 | minimatch "^3.0.0" 710 | 711 | fstream-npm@~1.1.1: 712 | version "1.1.1" 713 | resolved "https://registry.yarnpkg.com/fstream-npm/-/fstream-npm-1.1.1.tgz#6b9175db6239a83d8209e232426c494dbb29690c" 714 | dependencies: 715 | fstream-ignore "^1.0.0" 716 | inherits "2" 717 | 718 | fstream-npm@~1.2.1: 719 | version "1.2.1" 720 | resolved "https://registry.yarnpkg.com/fstream-npm/-/fstream-npm-1.2.1.tgz#08c4a452f789dcbac4c89a4563c902b2c862fd5b" 721 | dependencies: 722 | fstream-ignore "^1.0.0" 723 | inherits "2" 724 | 725 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10, fstream@~1.0.11: 726 | version "1.0.11" 727 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 728 | dependencies: 729 | graceful-fs "^4.1.2" 730 | inherits "~2.0.0" 731 | mkdirp ">=0.5 0" 732 | rimraf "2" 733 | 734 | gauge@~1.2.5: 735 | version "1.2.7" 736 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" 737 | dependencies: 738 | ansi "^0.3.0" 739 | has-unicode "^2.0.0" 740 | lodash.pad "^4.1.0" 741 | lodash.padend "^4.1.0" 742 | lodash.padstart "^4.1.0" 743 | 744 | gauge@~2.6.0: 745 | version "2.6.0" 746 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46" 747 | dependencies: 748 | aproba "^1.0.3" 749 | console-control-strings "^1.0.0" 750 | has-color "^0.1.7" 751 | has-unicode "^2.0.0" 752 | object-assign "^4.1.0" 753 | signal-exit "^3.0.0" 754 | string-width "^1.0.1" 755 | strip-ansi "^3.0.1" 756 | wide-align "^1.1.0" 757 | 758 | gauge@~2.7.3: 759 | version "2.7.4" 760 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 761 | dependencies: 762 | aproba "^1.0.3" 763 | console-control-strings "^1.0.0" 764 | has-unicode "^2.0.0" 765 | object-assign "^4.1.0" 766 | signal-exit "^3.0.0" 767 | string-width "^1.0.1" 768 | strip-ansi "^3.0.1" 769 | wide-align "^1.1.0" 770 | 771 | generate-function@^2.0.0: 772 | version "2.0.0" 773 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 774 | 775 | generate-object-property@^1.1.0: 776 | version "1.2.0" 777 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 778 | dependencies: 779 | is-property "^1.0.0" 780 | 781 | genfun@^4.0.1: 782 | version "4.0.1" 783 | resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" 784 | 785 | get-stream@^3.0.0: 786 | version "3.0.0" 787 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 788 | 789 | getpass@^0.1.1: 790 | version "0.1.7" 791 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 792 | dependencies: 793 | assert-plus "^1.0.0" 794 | 795 | gitbook-cli@^2.3.2: 796 | version "2.3.2" 797 | resolved "https://registry.yarnpkg.com/gitbook-cli/-/gitbook-cli-2.3.2.tgz#5e893582e1f743f6fa920c3c3eb36b62ea4a31a0" 798 | dependencies: 799 | bash-color "0.0.4" 800 | commander "2.11.0" 801 | fs-extra "3.0.1" 802 | lodash "4.17.4" 803 | npm "5.1.0" 804 | npmi "1.0.1" 805 | optimist "0.6.1" 806 | q "1.5.0" 807 | semver "5.3.0" 808 | tmp "0.0.31" 809 | user-home "2.0.0" 810 | 811 | github-url-from-git@~1.4.0: 812 | version "1.4.0" 813 | resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.4.0.tgz#285e6b520819001bde128674704379e4ff03e0de" 814 | 815 | github-url-from-username-repo@~1.0.2: 816 | version "1.0.2" 817 | resolved "https://registry.yarnpkg.com/github-url-from-username-repo/-/github-url-from-username-repo-1.0.2.tgz#7dd79330d2abe69c10c2cef79714c97215791dfa" 818 | 819 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: 820 | version "7.1.2" 821 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 822 | dependencies: 823 | fs.realpath "^1.0.0" 824 | inflight "^1.0.4" 825 | inherits "2" 826 | minimatch "^3.0.4" 827 | once "^1.3.0" 828 | path-is-absolute "^1.0.0" 829 | 830 | glob@~7.0.6: 831 | version "7.0.6" 832 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" 833 | dependencies: 834 | fs.realpath "^1.0.0" 835 | inflight "^1.0.4" 836 | inherits "2" 837 | minimatch "^3.0.2" 838 | once "^1.3.0" 839 | path-is-absolute "^1.0.0" 840 | 841 | got@^6.7.1: 842 | version "6.7.1" 843 | resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" 844 | dependencies: 845 | create-error-class "^3.0.0" 846 | duplexer3 "^0.1.4" 847 | get-stream "^3.0.0" 848 | is-redirect "^1.0.0" 849 | is-retry-allowed "^1.0.0" 850 | is-stream "^1.0.0" 851 | lowercase-keys "^1.0.0" 852 | safe-buffer "^5.0.1" 853 | timed-out "^4.0.0" 854 | unzip-response "^2.0.1" 855 | url-parse-lax "^1.0.0" 856 | 857 | graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@~4.1.11, graceful-fs@~4.1.6: 858 | version "4.1.11" 859 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 860 | 861 | har-schema@^1.0.5: 862 | version "1.0.5" 863 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 864 | 865 | har-schema@^2.0.0: 866 | version "2.0.0" 867 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 868 | 869 | har-validator@~2.0.6: 870 | version "2.0.6" 871 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 872 | dependencies: 873 | chalk "^1.1.1" 874 | commander "^2.9.0" 875 | is-my-json-valid "^2.12.4" 876 | pinkie-promise "^2.0.0" 877 | 878 | har-validator@~4.2.1: 879 | version "4.2.1" 880 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 881 | dependencies: 882 | ajv "^4.9.1" 883 | har-schema "^1.0.5" 884 | 885 | har-validator@~5.0.3: 886 | version "5.0.3" 887 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" 888 | dependencies: 889 | ajv "^5.1.0" 890 | har-schema "^2.0.0" 891 | 892 | has-ansi@^2.0.0: 893 | version "2.0.0" 894 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 895 | dependencies: 896 | ansi-regex "^2.0.0" 897 | 898 | has-color@^0.1.7: 899 | version "0.1.7" 900 | resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" 901 | 902 | has-flag@^2.0.0: 903 | version "2.0.0" 904 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 905 | 906 | has-unicode@^2.0.0, has-unicode@~2.0.1: 907 | version "2.0.1" 908 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 909 | 910 | hawk@~3.1.3: 911 | version "3.1.3" 912 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 913 | dependencies: 914 | boom "2.x.x" 915 | cryptiles "2.x.x" 916 | hoek "2.x.x" 917 | sntp "1.x.x" 918 | 919 | hawk@~6.0.2: 920 | version "6.0.2" 921 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" 922 | dependencies: 923 | boom "4.x.x" 924 | cryptiles "3.x.x" 925 | hoek "4.x.x" 926 | sntp "2.x.x" 927 | 928 | hoek@2.x.x: 929 | version "2.16.3" 930 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 931 | 932 | hoek@4.x.x: 933 | version "4.2.0" 934 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" 935 | 936 | hosted-git-info@^2.1.4, hosted-git-info@^2.1.5, hosted-git-info@^2.4.2, hosted-git-info@~2.5.0: 937 | version "2.5.0" 938 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 939 | 940 | hosted-git-info@~2.1.5: 941 | version "2.1.5" 942 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b" 943 | 944 | http-cache-semantics@^3.8.0: 945 | version "3.8.1" 946 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" 947 | 948 | http-proxy-agent@^2.0.0: 949 | version "2.0.0" 950 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.0.0.tgz#46482a2f0523a4d6082551709f469cb3e4a85ff4" 951 | dependencies: 952 | agent-base "4" 953 | debug "2" 954 | 955 | http-signature@~1.1.0: 956 | version "1.1.1" 957 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 958 | dependencies: 959 | assert-plus "^0.2.0" 960 | jsprim "^1.2.2" 961 | sshpk "^1.7.0" 962 | 963 | http-signature@~1.2.0: 964 | version "1.2.0" 965 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 966 | dependencies: 967 | assert-plus "^1.0.0" 968 | jsprim "^1.2.2" 969 | sshpk "^1.7.0" 970 | 971 | https-proxy-agent@^2.1.0: 972 | version "2.1.1" 973 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz#a7ce4382a1ba8266ee848578778122d491260fd9" 974 | dependencies: 975 | agent-base "^4.1.0" 976 | debug "^3.1.0" 977 | 978 | humanize-ms@^1.2.1: 979 | version "1.2.1" 980 | resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" 981 | dependencies: 982 | ms "^2.0.0" 983 | 984 | iconv-lite@~0.4.13: 985 | version "0.4.19" 986 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 987 | 988 | iferr@^0.1.5, iferr@~0.1.5: 989 | version "0.1.5" 990 | resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" 991 | 992 | import-lazy@^2.1.0: 993 | version "2.1.0" 994 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 995 | 996 | imurmurhash@^0.1.4: 997 | version "0.1.4" 998 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 999 | 1000 | inflight@^1.0.4, inflight@~1.0.4, inflight@~1.0.6: 1001 | version "1.0.6" 1002 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1003 | dependencies: 1004 | once "^1.3.0" 1005 | wrappy "1" 1006 | 1007 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: 1008 | version "2.0.3" 1009 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1010 | 1011 | ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: 1012 | version "1.3.5" 1013 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 1014 | 1015 | init-package-json@~1.10.1: 1016 | version "1.10.1" 1017 | resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.1.tgz#cd873a167796befb99612b28762a0b6393fd8f6a" 1018 | dependencies: 1019 | glob "^7.1.1" 1020 | npm-package-arg "^4.0.0 || ^5.0.0" 1021 | promzard "^0.3.0" 1022 | read "~1.0.1" 1023 | read-package-json "1 || 2" 1024 | semver "2.x || 3.x || 4 || 5" 1025 | validate-npm-package-license "^3.0.1" 1026 | validate-npm-package-name "^3.0.0" 1027 | 1028 | init-package-json@~1.9.4: 1029 | version "1.9.6" 1030 | resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.9.6.tgz#789fc2b74466a4952b9ea77c0575bc78ebd60a61" 1031 | dependencies: 1032 | glob "^7.1.1" 1033 | npm-package-arg "^4.0.0 || ^5.0.0" 1034 | promzard "^0.3.0" 1035 | read "~1.0.1" 1036 | read-package-json "1 || 2" 1037 | semver "2.x || 3.x || 4 || 5" 1038 | validate-npm-package-license "^3.0.1" 1039 | validate-npm-package-name "^3.0.0" 1040 | 1041 | ip@^1.1.4: 1042 | version "1.1.5" 1043 | resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" 1044 | 1045 | is-builtin-module@^1.0.0: 1046 | version "1.0.0" 1047 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1048 | dependencies: 1049 | builtin-modules "^1.0.0" 1050 | 1051 | is-fullwidth-code-point@^1.0.0: 1052 | version "1.0.0" 1053 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1054 | dependencies: 1055 | number-is-nan "^1.0.0" 1056 | 1057 | is-fullwidth-code-point@^2.0.0: 1058 | version "2.0.0" 1059 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1060 | 1061 | is-my-json-valid@^2.12.4: 1062 | version "2.17.1" 1063 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" 1064 | dependencies: 1065 | generate-function "^2.0.0" 1066 | generate-object-property "^1.1.0" 1067 | jsonpointer "^4.0.0" 1068 | xtend "^4.0.0" 1069 | 1070 | is-npm@^1.0.0: 1071 | version "1.0.0" 1072 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" 1073 | 1074 | is-obj@^1.0.0: 1075 | version "1.0.1" 1076 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1077 | 1078 | is-property@^1.0.0: 1079 | version "1.0.2" 1080 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1081 | 1082 | is-redirect@^1.0.0: 1083 | version "1.0.0" 1084 | resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" 1085 | 1086 | is-retry-allowed@^1.0.0: 1087 | version "1.1.0" 1088 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" 1089 | 1090 | is-stream@^1.0.0, is-stream@^1.1.0: 1091 | version "1.1.0" 1092 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1093 | 1094 | is-typedarray@~1.0.0: 1095 | version "1.0.0" 1096 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1097 | 1098 | isarray@0.0.1: 1099 | version "0.0.1" 1100 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1101 | 1102 | isarray@~1.0.0: 1103 | version "1.0.0" 1104 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1105 | 1106 | isexe@^2.0.0: 1107 | version "2.0.0" 1108 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1109 | 1110 | isstream@~0.1.2: 1111 | version "0.1.2" 1112 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1113 | 1114 | jsbn@~0.1.0: 1115 | version "0.1.1" 1116 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1117 | 1118 | json-parse-better-errors@^1.0.0: 1119 | version "1.0.1" 1120 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" 1121 | 1122 | json-schema-traverse@^0.3.0: 1123 | version "0.3.1" 1124 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1125 | 1126 | json-schema@0.2.3: 1127 | version "0.2.3" 1128 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1129 | 1130 | json-stable-stringify@^1.0.1: 1131 | version "1.0.1" 1132 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1133 | dependencies: 1134 | jsonify "~0.0.0" 1135 | 1136 | json-stringify-safe@~5.0.1: 1137 | version "5.0.1" 1138 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1139 | 1140 | jsonfile@^3.0.0: 1141 | version "3.0.1" 1142 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" 1143 | optionalDependencies: 1144 | graceful-fs "^4.1.6" 1145 | 1146 | jsonify@~0.0.0: 1147 | version "0.0.0" 1148 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1149 | 1150 | jsonparse@^1.2.0: 1151 | version "1.3.1" 1152 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 1153 | 1154 | jsonpointer@^4.0.0: 1155 | version "4.0.1" 1156 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1157 | 1158 | jsprim@^1.2.2: 1159 | version "1.4.1" 1160 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 1161 | dependencies: 1162 | assert-plus "1.0.0" 1163 | extsprintf "1.3.0" 1164 | json-schema "0.2.3" 1165 | verror "1.10.0" 1166 | 1167 | latest-version@^3.0.0: 1168 | version "3.1.0" 1169 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" 1170 | dependencies: 1171 | package-json "^4.0.0" 1172 | 1173 | lazy-property@~1.0.0: 1174 | version "1.0.0" 1175 | resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" 1176 | 1177 | lockfile@~1.0.1, lockfile@~1.0.3: 1178 | version "1.0.3" 1179 | resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.3.tgz#2638fc39a0331e9cac1a04b71799931c9c50df79" 1180 | 1181 | lodash._baseuniq@~4.6.0: 1182 | version "4.6.0" 1183 | resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" 1184 | dependencies: 1185 | lodash._createset "~4.0.0" 1186 | lodash._root "~3.0.0" 1187 | 1188 | lodash._createset@~4.0.0: 1189 | version "4.0.3" 1190 | resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" 1191 | 1192 | lodash._root@~3.0.0: 1193 | version "3.0.1" 1194 | resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" 1195 | 1196 | lodash.clonedeep@~4.5.0: 1197 | version "4.5.0" 1198 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" 1199 | 1200 | lodash.pad@^4.1.0: 1201 | version "4.5.1" 1202 | resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" 1203 | 1204 | lodash.padend@^4.1.0: 1205 | version "4.6.1" 1206 | resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" 1207 | 1208 | lodash.padstart@^4.1.0: 1209 | version "4.6.1" 1210 | resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" 1211 | 1212 | lodash.union@~4.6.0: 1213 | version "4.6.0" 1214 | resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" 1215 | 1216 | lodash.uniq@~4.5.0: 1217 | version "4.5.0" 1218 | resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" 1219 | 1220 | lodash.without@~4.4.0: 1221 | version "4.4.0" 1222 | resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" 1223 | 1224 | lodash@4.17.4: 1225 | version "4.17.4" 1226 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1227 | 1228 | lodash@^4.14.0: 1229 | version "4.17.5" 1230 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" 1231 | 1232 | lowercase-keys@^1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 1235 | 1236 | lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@~4.1.1: 1237 | version "4.1.1" 1238 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 1239 | dependencies: 1240 | pseudomap "^1.0.2" 1241 | yallist "^2.1.2" 1242 | 1243 | lru-cache@~4.0.1: 1244 | version "4.0.2" 1245 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" 1246 | dependencies: 1247 | pseudomap "^1.0.1" 1248 | yallist "^2.0.0" 1249 | 1250 | make-dir@^1.0.0: 1251 | version "1.1.0" 1252 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" 1253 | dependencies: 1254 | pify "^3.0.0" 1255 | 1256 | make-fetch-happen@^2.4.13: 1257 | version "2.6.0" 1258 | resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-2.6.0.tgz#8474aa52198f6b1ae4f3094c04e8370d35ea8a38" 1259 | dependencies: 1260 | agentkeepalive "^3.3.0" 1261 | cacache "^10.0.0" 1262 | http-cache-semantics "^3.8.0" 1263 | http-proxy-agent "^2.0.0" 1264 | https-proxy-agent "^2.1.0" 1265 | lru-cache "^4.1.1" 1266 | mississippi "^1.2.0" 1267 | node-fetch-npm "^2.0.2" 1268 | promise-retry "^1.1.1" 1269 | socks-proxy-agent "^3.0.1" 1270 | ssri "^5.0.0" 1271 | 1272 | mime-db@~1.30.0: 1273 | version "1.30.0" 1274 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 1275 | 1276 | mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: 1277 | version "2.1.17" 1278 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 1279 | dependencies: 1280 | mime-db "~1.30.0" 1281 | 1282 | minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.3: 1283 | version "3.0.4" 1284 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1285 | dependencies: 1286 | brace-expansion "^1.1.7" 1287 | 1288 | minimist@0.0.8: 1289 | version "0.0.8" 1290 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1291 | 1292 | minimist@^1.2.0: 1293 | version "1.2.0" 1294 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1295 | 1296 | minimist@~0.0.1: 1297 | version "0.0.10" 1298 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1299 | 1300 | mississippi@^1.2.0, mississippi@^1.3.0, mississippi@~1.3.0: 1301 | version "1.3.1" 1302 | resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-1.3.1.tgz#2a8bb465e86550ac8b36a7b6f45599171d78671e" 1303 | dependencies: 1304 | concat-stream "^1.5.0" 1305 | duplexify "^3.4.2" 1306 | end-of-stream "^1.1.0" 1307 | flush-write-stream "^1.0.0" 1308 | from2 "^2.1.0" 1309 | parallel-transform "^1.1.0" 1310 | pump "^1.0.0" 1311 | pumpify "^1.3.3" 1312 | stream-each "^1.1.0" 1313 | through2 "^2.0.0" 1314 | 1315 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: 1316 | version "0.5.1" 1317 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1318 | dependencies: 1319 | minimist "0.0.8" 1320 | 1321 | move-concurrently@^1.0.1, move-concurrently@~1.0.1: 1322 | version "1.0.1" 1323 | resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" 1324 | dependencies: 1325 | aproba "^1.1.1" 1326 | copy-concurrently "^1.0.0" 1327 | fs-write-stream-atomic "^1.0.8" 1328 | mkdirp "^0.5.1" 1329 | rimraf "^2.5.4" 1330 | run-queue "^1.0.3" 1331 | 1332 | ms@2.0.0: 1333 | version "2.0.0" 1334 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1335 | 1336 | ms@^2.0.0: 1337 | version "2.1.1" 1338 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1339 | 1340 | mute-stream@~0.0.4: 1341 | version "0.0.7" 1342 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1343 | 1344 | node-fetch-npm@^2.0.2: 1345 | version "2.0.2" 1346 | resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" 1347 | dependencies: 1348 | encoding "^0.1.11" 1349 | json-parse-better-errors "^1.0.0" 1350 | safe-buffer "^5.1.1" 1351 | 1352 | node-gyp@~3.6.0, node-gyp@~3.6.2: 1353 | version "3.6.2" 1354 | resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" 1355 | dependencies: 1356 | fstream "^1.0.0" 1357 | glob "^7.0.3" 1358 | graceful-fs "^4.1.2" 1359 | minimatch "^3.0.2" 1360 | mkdirp "^0.5.0" 1361 | nopt "2 || 3" 1362 | npmlog "0 || 1 || 2 || 3 || 4" 1363 | osenv "0" 1364 | request "2" 1365 | rimraf "2" 1366 | semver "~5.3.0" 1367 | tar "^2.0.0" 1368 | which "1" 1369 | 1370 | node-uuid@~1.4.7: 1371 | version "1.4.8" 1372 | resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" 1373 | 1374 | "nopt@2 || 3", nopt@~3.0.6: 1375 | version "3.0.6" 1376 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1377 | dependencies: 1378 | abbrev "1" 1379 | 1380 | nopt@~4.0.1: 1381 | version "4.0.1" 1382 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" 1383 | dependencies: 1384 | abbrev "1" 1385 | osenv "^0.1.4" 1386 | 1387 | normalize-git-url@~3.0.2: 1388 | version "3.0.2" 1389 | resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" 1390 | 1391 | normalize-package-data@^2.0.0, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: 1392 | version "2.4.0" 1393 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1394 | dependencies: 1395 | hosted-git-info "^2.1.4" 1396 | is-builtin-module "^1.0.0" 1397 | semver "2 || 3 || 4 || 5" 1398 | validate-npm-package-license "^3.0.1" 1399 | 1400 | normalize-package-data@~2.3.5: 1401 | version "2.3.8" 1402 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb" 1403 | dependencies: 1404 | hosted-git-info "^2.1.4" 1405 | is-builtin-module "^1.0.0" 1406 | semver "2 || 3 || 4 || 5" 1407 | validate-npm-package-license "^3.0.1" 1408 | 1409 | npm-cache-filename@~1.0.2: 1410 | version "1.0.2" 1411 | resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" 1412 | 1413 | npm-install-checks@~1.0.7: 1414 | version "1.0.7" 1415 | resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-1.0.7.tgz#6d91aeda0ac96801f1ed7aadee116a6c0a086a57" 1416 | dependencies: 1417 | npmlog "0.1 || 1 || 2" 1418 | semver "^2.3.0 || 3.x || 4 || 5" 1419 | 1420 | npm-install-checks@~3.0.0: 1421 | version "3.0.0" 1422 | resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" 1423 | dependencies: 1424 | semver "^2.3.0 || 3.x || 4 || 5" 1425 | 1426 | "npm-package-arg@^3.0.0 || ^4.0.0", npm-package-arg@^4.1.1: 1427 | version "4.2.1" 1428 | resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.2.1.tgz#593303fdea85f7c422775f17f9eb7670f680e3ec" 1429 | dependencies: 1430 | hosted-git-info "^2.1.5" 1431 | semver "^5.1.0" 1432 | 1433 | "npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0", "npm-package-arg@^4.0.0 || ^5.0.0", npm-package-arg@^5.1.2, npm-package-arg@~5.1.2: 1434 | version "5.1.2" 1435 | resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-5.1.2.tgz#fb18d17bb61e60900d6312619919bd753755ab37" 1436 | dependencies: 1437 | hosted-git-info "^2.4.2" 1438 | osenv "^0.1.4" 1439 | semver "^5.1.0" 1440 | validate-npm-package-name "^3.0.0" 1441 | 1442 | npm-package-arg@~4.1.0: 1443 | version "4.1.1" 1444 | resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-4.1.1.tgz#86d9dca985b4c5e5d59772dfd5de6919998a495a" 1445 | dependencies: 1446 | hosted-git-info "^2.1.4" 1447 | semver "4 || 5" 1448 | 1449 | npm-pick-manifest@^1.0.4: 1450 | version "1.0.4" 1451 | resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-1.0.4.tgz#a5ee6510c1fe7221c0bc0414e70924c14045f7e8" 1452 | dependencies: 1453 | npm-package-arg "^5.1.2" 1454 | semver "^5.3.0" 1455 | 1456 | npm-registry-client@~7.2.1: 1457 | version "7.2.1" 1458 | resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-7.2.1.tgz#c792266b088cc313f8525e7e35248626c723db75" 1459 | dependencies: 1460 | concat-stream "^1.5.2" 1461 | graceful-fs "^4.1.6" 1462 | normalize-package-data "~1.0.1 || ^2.0.0" 1463 | npm-package-arg "^3.0.0 || ^4.0.0" 1464 | once "^1.3.3" 1465 | request "^2.74.0" 1466 | retry "^0.10.0" 1467 | semver "2 >=2.2.1 || 3.x || 4 || 5" 1468 | slide "^1.1.3" 1469 | optionalDependencies: 1470 | npmlog "~2.0.0 || ~3.1.0" 1471 | 1472 | npm-registry-client@~8.4.0: 1473 | version "8.4.0" 1474 | resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.4.0.tgz#d52b901685647fc62a4c03eafecb6ceaa5018d4c" 1475 | dependencies: 1476 | concat-stream "^1.5.2" 1477 | graceful-fs "^4.1.6" 1478 | normalize-package-data "~1.0.1 || ^2.0.0" 1479 | npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0" 1480 | once "^1.3.3" 1481 | request "^2.74.0" 1482 | retry "^0.10.0" 1483 | semver "2 >=2.2.1 || 3.x || 4 || 5" 1484 | slide "^1.1.3" 1485 | ssri "^4.1.2" 1486 | optionalDependencies: 1487 | npmlog "2 || ^3.1.0 || ^4.0.0" 1488 | 1489 | npm-run-path@^2.0.0: 1490 | version "2.0.2" 1491 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1492 | dependencies: 1493 | path-key "^2.0.0" 1494 | 1495 | npm-user-validate@~0.1.5: 1496 | version "0.1.5" 1497 | resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-0.1.5.tgz#52465d50c2d20294a57125b996baedbf56c5004b" 1498 | 1499 | npm-user-validate@~1.0.0: 1500 | version "1.0.0" 1501 | resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" 1502 | 1503 | npm@5.1.0: 1504 | version "5.1.0" 1505 | resolved "https://registry.yarnpkg.com/npm/-/npm-5.1.0.tgz#cf8201e044018e9c89532041c90094541982b2c0" 1506 | dependencies: 1507 | JSONStream "~1.3.1" 1508 | abbrev "~1.1.0" 1509 | ansi-regex "~3.0.0" 1510 | ansicolors "~0.3.2" 1511 | ansistyles "~0.1.3" 1512 | aproba "~1.1.2" 1513 | archy "~1.0.0" 1514 | bluebird "~3.5.0" 1515 | cacache "~9.2.9" 1516 | call-limit "~1.1.0" 1517 | chownr "~1.0.1" 1518 | cmd-shim "~2.0.2" 1519 | columnify "~1.5.4" 1520 | config-chain "~1.1.11" 1521 | detect-indent "~5.0.0" 1522 | dezalgo "~1.0.3" 1523 | editor "~1.0.0" 1524 | fs-vacuum "~1.2.10" 1525 | fs-write-stream-atomic "~1.0.10" 1526 | fstream "~1.0.11" 1527 | fstream-npm "~1.2.1" 1528 | glob "~7.1.2" 1529 | graceful-fs "~4.1.11" 1530 | has-unicode "~2.0.1" 1531 | hosted-git-info "~2.5.0" 1532 | iferr "~0.1.5" 1533 | inflight "~1.0.6" 1534 | inherits "~2.0.3" 1535 | ini "~1.3.4" 1536 | init-package-json "~1.10.1" 1537 | lazy-property "~1.0.0" 1538 | lockfile "~1.0.3" 1539 | lodash._baseuniq "~4.6.0" 1540 | lodash.clonedeep "~4.5.0" 1541 | lodash.union "~4.6.0" 1542 | lodash.uniq "~4.5.0" 1543 | lodash.without "~4.4.0" 1544 | lru-cache "~4.1.1" 1545 | mississippi "~1.3.0" 1546 | mkdirp "~0.5.1" 1547 | move-concurrently "~1.0.1" 1548 | node-gyp "~3.6.2" 1549 | nopt "~4.0.1" 1550 | normalize-package-data "~2.4.0" 1551 | npm-cache-filename "~1.0.2" 1552 | npm-install-checks "~3.0.0" 1553 | npm-package-arg "~5.1.2" 1554 | npm-registry-client "~8.4.0" 1555 | npm-user-validate "~1.0.0" 1556 | npmlog "~4.1.2" 1557 | once "~1.4.0" 1558 | opener "~1.4.3" 1559 | osenv "~0.1.4" 1560 | pacote "~2.7.38" 1561 | path-is-inside "~1.0.2" 1562 | promise-inflight "~1.0.1" 1563 | read "~1.0.7" 1564 | read-cmd-shim "~1.0.1" 1565 | read-installed "~4.0.3" 1566 | read-package-json "~2.0.9" 1567 | read-package-tree "~5.1.6" 1568 | readable-stream "~2.3.2" 1569 | request "~2.81.0" 1570 | retry "~0.10.1" 1571 | rimraf "~2.6.1" 1572 | safe-buffer "~5.1.1" 1573 | semver "~5.3.0" 1574 | sha "~2.0.1" 1575 | slide "~1.1.6" 1576 | sorted-object "~2.0.1" 1577 | sorted-union-stream "~2.1.3" 1578 | ssri "~4.1.6" 1579 | strip-ansi "~4.0.0" 1580 | tar "~2.2.1" 1581 | text-table "~0.2.0" 1582 | uid-number "0.0.6" 1583 | umask "~1.1.0" 1584 | unique-filename "~1.1.0" 1585 | unpipe "~1.0.0" 1586 | update-notifier "~2.2.0" 1587 | uuid "~3.1.0" 1588 | validate-npm-package-name "~3.0.0" 1589 | which "~1.2.14" 1590 | worker-farm "~1.3.1" 1591 | wrappy "~1.0.2" 1592 | write-file-atomic "~2.1.0" 1593 | 1594 | npm@^2.1.12: 1595 | version "2.15.12" 1596 | resolved "https://registry.yarnpkg.com/npm/-/npm-2.15.12.tgz#df7c3ed5a277c3f9d4b5d819b05311d10a200ae6" 1597 | dependencies: 1598 | abbrev "~1.0.9" 1599 | ansi "~0.3.1" 1600 | ansicolors "~0.3.2" 1601 | ansistyles "~0.1.3" 1602 | archy "~1.0.0" 1603 | async-some "~1.0.2" 1604 | block-stream "0.0.9" 1605 | char-spinner "~1.0.1" 1606 | chmodr "~1.0.2" 1607 | chownr "~1.0.1" 1608 | cmd-shim "~2.0.2" 1609 | columnify "~1.5.4" 1610 | config-chain "~1.1.10" 1611 | dezalgo "~1.0.3" 1612 | editor "~1.0.0" 1613 | fs-vacuum "~1.2.9" 1614 | fs-write-stream-atomic "~1.0.8" 1615 | fstream "~1.0.10" 1616 | fstream-npm "~1.1.1" 1617 | github-url-from-git "~1.4.0" 1618 | github-url-from-username-repo "~1.0.2" 1619 | glob "~7.0.6" 1620 | graceful-fs "~4.1.6" 1621 | hosted-git-info "~2.1.5" 1622 | inflight "~1.0.4" 1623 | inherits "~2.0.3" 1624 | ini "~1.3.4" 1625 | init-package-json "~1.9.4" 1626 | lockfile "~1.0.1" 1627 | lru-cache "~4.0.1" 1628 | minimatch "~3.0.3" 1629 | mkdirp "~0.5.1" 1630 | node-gyp "~3.6.0" 1631 | nopt "~3.0.6" 1632 | normalize-git-url "~3.0.2" 1633 | normalize-package-data "~2.3.5" 1634 | npm-cache-filename "~1.0.2" 1635 | npm-install-checks "~1.0.7" 1636 | npm-package-arg "~4.1.0" 1637 | npm-registry-client "~7.2.1" 1638 | npm-user-validate "~0.1.5" 1639 | npmlog "~2.0.4" 1640 | once "~1.4.0" 1641 | opener "~1.4.1" 1642 | osenv "~0.1.3" 1643 | path-is-inside "~1.0.0" 1644 | read "~1.0.7" 1645 | read-installed "~4.0.3" 1646 | read-package-json "~2.0.4" 1647 | readable-stream "~2.1.5" 1648 | realize-package-specifier "~3.0.1" 1649 | request "~2.74.0" 1650 | retry "~0.10.0" 1651 | rimraf "~2.5.4" 1652 | semver "~5.1.0" 1653 | sha "~2.0.1" 1654 | slide "~1.1.6" 1655 | sorted-object "~2.0.0" 1656 | spdx-license-ids "~1.2.2" 1657 | strip-ansi "~3.0.1" 1658 | tar "~2.2.1" 1659 | text-table "~0.2.0" 1660 | uid-number "0.0.6" 1661 | umask "~1.1.0" 1662 | validate-npm-package-license "~3.0.1" 1663 | validate-npm-package-name "~2.2.2" 1664 | which "~1.2.11" 1665 | wrappy "~1.0.2" 1666 | write-file-atomic "~1.1.4" 1667 | 1668 | npmi@1.0.1: 1669 | version "1.0.1" 1670 | resolved "https://registry.yarnpkg.com/npmi/-/npmi-1.0.1.tgz#15d769273547545e6809dcf0ce18aed48b0290e2" 1671 | dependencies: 1672 | npm "^2.1.12" 1673 | semver "^4.1.0" 1674 | 1675 | "npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@~4.1.2: 1676 | version "4.1.2" 1677 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1678 | dependencies: 1679 | are-we-there-yet "~1.1.2" 1680 | console-control-strings "~1.1.0" 1681 | gauge "~2.7.3" 1682 | set-blocking "~2.0.0" 1683 | 1684 | "npmlog@0.1 || 1 || 2", npmlog@~2.0.4: 1685 | version "2.0.4" 1686 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" 1687 | dependencies: 1688 | ansi "~0.3.1" 1689 | are-we-there-yet "~1.1.2" 1690 | gauge "~1.2.5" 1691 | 1692 | "npmlog@~2.0.0 || ~3.1.0": 1693 | version "3.1.2" 1694 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-3.1.2.tgz#2d46fa874337af9498a2f12bb43d8d0be4a36873" 1695 | dependencies: 1696 | are-we-there-yet "~1.1.2" 1697 | console-control-strings "~1.1.0" 1698 | gauge "~2.6.0" 1699 | set-blocking "~2.0.0" 1700 | 1701 | number-is-nan@^1.0.0: 1702 | version "1.0.1" 1703 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1704 | 1705 | oauth-sign@~0.8.1, oauth-sign@~0.8.2: 1706 | version "0.8.2" 1707 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1708 | 1709 | object-assign@^4.1.0: 1710 | version "4.1.1" 1711 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1712 | 1713 | once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: 1714 | version "1.4.0" 1715 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1716 | dependencies: 1717 | wrappy "1" 1718 | 1719 | opener@~1.4.1, opener@~1.4.3: 1720 | version "1.4.3" 1721 | resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" 1722 | 1723 | optimist@0.6.1: 1724 | version "0.6.1" 1725 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1726 | dependencies: 1727 | minimist "~0.0.1" 1728 | wordwrap "~0.0.2" 1729 | 1730 | os-homedir@^1.0.0: 1731 | version "1.0.2" 1732 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1733 | 1734 | os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: 1735 | version "1.0.2" 1736 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1737 | 1738 | osenv@0, osenv@^0.1.4, osenv@~0.1.3, osenv@~0.1.4: 1739 | version "0.1.4" 1740 | resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" 1741 | dependencies: 1742 | os-homedir "^1.0.0" 1743 | os-tmpdir "^1.0.0" 1744 | 1745 | p-finally@^1.0.0: 1746 | version "1.0.0" 1747 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1748 | 1749 | package-json@^4.0.0: 1750 | version "4.0.1" 1751 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" 1752 | dependencies: 1753 | got "^6.7.1" 1754 | registry-auth-token "^3.0.1" 1755 | registry-url "^3.0.3" 1756 | semver "^5.1.0" 1757 | 1758 | pacote@~2.7.38: 1759 | version "2.7.38" 1760 | resolved "https://registry.yarnpkg.com/pacote/-/pacote-2.7.38.tgz#5091f8774298c26c3eca24606037f1bb73db74c1" 1761 | dependencies: 1762 | bluebird "^3.5.0" 1763 | cacache "^9.2.9" 1764 | glob "^7.1.2" 1765 | lru-cache "^4.1.1" 1766 | make-fetch-happen "^2.4.13" 1767 | minimatch "^3.0.4" 1768 | mississippi "^1.2.0" 1769 | normalize-package-data "^2.4.0" 1770 | npm-package-arg "^5.1.2" 1771 | npm-pick-manifest "^1.0.4" 1772 | osenv "^0.1.4" 1773 | promise-inflight "^1.0.1" 1774 | promise-retry "^1.1.1" 1775 | protoduck "^4.0.0" 1776 | safe-buffer "^5.1.1" 1777 | semver "^5.3.0" 1778 | ssri "^4.1.6" 1779 | tar-fs "^1.15.3" 1780 | tar-stream "^1.5.4" 1781 | unique-filename "^1.1.0" 1782 | which "^1.2.12" 1783 | 1784 | parallel-transform@^1.1.0: 1785 | version "1.1.0" 1786 | resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" 1787 | dependencies: 1788 | cyclist "~0.2.2" 1789 | inherits "^2.0.3" 1790 | readable-stream "^2.1.5" 1791 | 1792 | path-is-absolute@^1.0.0: 1793 | version "1.0.1" 1794 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1795 | 1796 | path-is-inside@^1.0.1, path-is-inside@~1.0.0, path-is-inside@~1.0.2: 1797 | version "1.0.2" 1798 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1799 | 1800 | path-key@^2.0.0: 1801 | version "2.0.1" 1802 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1803 | 1804 | performance-now@^0.2.0: 1805 | version "0.2.0" 1806 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 1807 | 1808 | performance-now@^2.1.0: 1809 | version "2.1.0" 1810 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 1811 | 1812 | pify@^3.0.0: 1813 | version "3.0.0" 1814 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1815 | 1816 | pinkie-promise@^2.0.0: 1817 | version "2.0.1" 1818 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1819 | dependencies: 1820 | pinkie "^2.0.0" 1821 | 1822 | pinkie@^2.0.0: 1823 | version "2.0.4" 1824 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1825 | 1826 | prepend-http@^1.0.1: 1827 | version "1.0.4" 1828 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 1829 | 1830 | process-nextick-args@~1.0.6: 1831 | version "1.0.7" 1832 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1833 | 1834 | promise-inflight@^1.0.1, promise-inflight@~1.0.1: 1835 | version "1.0.1" 1836 | resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" 1837 | 1838 | promise-retry@^1.1.1: 1839 | version "1.1.1" 1840 | resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" 1841 | dependencies: 1842 | err-code "^1.0.0" 1843 | retry "^0.10.0" 1844 | 1845 | promzard@^0.3.0: 1846 | version "0.3.0" 1847 | resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" 1848 | dependencies: 1849 | read "1" 1850 | 1851 | proto-list@~1.2.1: 1852 | version "1.2.4" 1853 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 1854 | 1855 | protoduck@^4.0.0: 1856 | version "4.0.0" 1857 | resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-4.0.0.tgz#fe4874d8c7913366cfd9ead12453a22cd3657f8e" 1858 | dependencies: 1859 | genfun "^4.0.1" 1860 | 1861 | prr@~1.0.1: 1862 | version "1.0.1" 1863 | resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" 1864 | 1865 | pseudomap@^1.0.1, pseudomap@^1.0.2: 1866 | version "1.0.2" 1867 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1868 | 1869 | pump@^1.0.0: 1870 | version "1.0.3" 1871 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" 1872 | dependencies: 1873 | end-of-stream "^1.1.0" 1874 | once "^1.3.1" 1875 | 1876 | pump@^2.0.0: 1877 | version "2.0.1" 1878 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 1879 | dependencies: 1880 | end-of-stream "^1.1.0" 1881 | once "^1.3.1" 1882 | 1883 | pumpify@^1.3.3: 1884 | version "1.4.0" 1885 | resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" 1886 | dependencies: 1887 | duplexify "^3.5.3" 1888 | inherits "^2.0.3" 1889 | pump "^2.0.0" 1890 | 1891 | punycode@^1.4.1: 1892 | version "1.4.1" 1893 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1894 | 1895 | q@1.5.0: 1896 | version "1.5.0" 1897 | resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" 1898 | 1899 | qs@~6.2.0: 1900 | version "6.2.3" 1901 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" 1902 | 1903 | qs@~6.4.0: 1904 | version "6.4.0" 1905 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 1906 | 1907 | qs@~6.5.1: 1908 | version "6.5.1" 1909 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 1910 | 1911 | rc@^1.0.1, rc@^1.1.6: 1912 | version "1.2.5" 1913 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" 1914 | dependencies: 1915 | deep-extend "~0.4.0" 1916 | ini "~1.3.0" 1917 | minimist "^1.2.0" 1918 | strip-json-comments "~2.0.1" 1919 | 1920 | read-cmd-shim@~1.0.1: 1921 | version "1.0.1" 1922 | resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" 1923 | dependencies: 1924 | graceful-fs "^4.1.2" 1925 | 1926 | read-installed@~4.0.3: 1927 | version "4.0.3" 1928 | resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" 1929 | dependencies: 1930 | debuglog "^1.0.1" 1931 | read-package-json "^2.0.0" 1932 | readdir-scoped-modules "^1.0.0" 1933 | semver "2 || 3 || 4 || 5" 1934 | slide "~1.1.3" 1935 | util-extend "^1.0.1" 1936 | optionalDependencies: 1937 | graceful-fs "^4.1.2" 1938 | 1939 | "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@~2.0.4, read-package-json@~2.0.9: 1940 | version "2.0.12" 1941 | resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.12.tgz#68ea45f98b3741cb6e10ae3bbd42a605026a6951" 1942 | dependencies: 1943 | glob "^7.1.1" 1944 | json-parse-better-errors "^1.0.0" 1945 | normalize-package-data "^2.0.0" 1946 | slash "^1.0.0" 1947 | optionalDependencies: 1948 | graceful-fs "^4.1.2" 1949 | 1950 | read-package-tree@~5.1.6: 1951 | version "5.1.6" 1952 | resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.1.6.tgz#4f03e83d0486856fb60d97c94882841c2a7b1b7a" 1953 | dependencies: 1954 | debuglog "^1.0.1" 1955 | dezalgo "^1.0.0" 1956 | once "^1.3.0" 1957 | read-package-json "^2.0.0" 1958 | readdir-scoped-modules "^1.0.0" 1959 | 1960 | read@1, read@~1.0.1, read@~1.0.7: 1961 | version "1.0.7" 1962 | resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" 1963 | dependencies: 1964 | mute-stream "~0.0.4" 1965 | 1966 | "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@~2.3.2: 1967 | version "2.3.3" 1968 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 1969 | dependencies: 1970 | core-util-is "~1.0.0" 1971 | inherits "~2.0.3" 1972 | isarray "~1.0.0" 1973 | process-nextick-args "~1.0.6" 1974 | safe-buffer "~5.1.1" 1975 | string_decoder "~1.0.3" 1976 | util-deprecate "~1.0.1" 1977 | 1978 | readable-stream@~1.1.10: 1979 | version "1.1.14" 1980 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 1981 | dependencies: 1982 | core-util-is "~1.0.0" 1983 | inherits "~2.0.1" 1984 | isarray "0.0.1" 1985 | string_decoder "~0.10.x" 1986 | 1987 | readable-stream@~2.0.5: 1988 | version "2.0.6" 1989 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" 1990 | dependencies: 1991 | core-util-is "~1.0.0" 1992 | inherits "~2.0.1" 1993 | isarray "~1.0.0" 1994 | process-nextick-args "~1.0.6" 1995 | string_decoder "~0.10.x" 1996 | util-deprecate "~1.0.1" 1997 | 1998 | readable-stream@~2.1.5: 1999 | version "2.1.5" 2000 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 2001 | dependencies: 2002 | buffer-shims "^1.0.0" 2003 | core-util-is "~1.0.0" 2004 | inherits "~2.0.1" 2005 | isarray "~1.0.0" 2006 | process-nextick-args "~1.0.6" 2007 | string_decoder "~0.10.x" 2008 | util-deprecate "~1.0.1" 2009 | 2010 | readdir-scoped-modules@^1.0.0: 2011 | version "1.0.2" 2012 | resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" 2013 | dependencies: 2014 | debuglog "^1.0.1" 2015 | dezalgo "^1.0.0" 2016 | graceful-fs "^4.1.2" 2017 | once "^1.3.0" 2018 | 2019 | realize-package-specifier@~3.0.1: 2020 | version "3.0.3" 2021 | resolved "https://registry.yarnpkg.com/realize-package-specifier/-/realize-package-specifier-3.0.3.tgz#d0def882952b8de3f67eba5e91199661271f41f4" 2022 | dependencies: 2023 | dezalgo "^1.0.1" 2024 | npm-package-arg "^4.1.1" 2025 | 2026 | registry-auth-token@^3.0.1: 2027 | version "3.3.2" 2028 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" 2029 | dependencies: 2030 | rc "^1.1.6" 2031 | safe-buffer "^5.0.1" 2032 | 2033 | registry-url@^3.0.3: 2034 | version "3.1.0" 2035 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" 2036 | dependencies: 2037 | rc "^1.0.1" 2038 | 2039 | request@2, request@^2.74.0: 2040 | version "2.83.0" 2041 | resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" 2042 | dependencies: 2043 | aws-sign2 "~0.7.0" 2044 | aws4 "^1.6.0" 2045 | caseless "~0.12.0" 2046 | combined-stream "~1.0.5" 2047 | extend "~3.0.1" 2048 | forever-agent "~0.6.1" 2049 | form-data "~2.3.1" 2050 | har-validator "~5.0.3" 2051 | hawk "~6.0.2" 2052 | http-signature "~1.2.0" 2053 | is-typedarray "~1.0.0" 2054 | isstream "~0.1.2" 2055 | json-stringify-safe "~5.0.1" 2056 | mime-types "~2.1.17" 2057 | oauth-sign "~0.8.2" 2058 | performance-now "^2.1.0" 2059 | qs "~6.5.1" 2060 | safe-buffer "^5.1.1" 2061 | stringstream "~0.0.5" 2062 | tough-cookie "~2.3.3" 2063 | tunnel-agent "^0.6.0" 2064 | uuid "^3.1.0" 2065 | 2066 | request@~2.74.0: 2067 | version "2.74.0" 2068 | resolved "https://registry.yarnpkg.com/request/-/request-2.74.0.tgz#7693ca768bbb0ea5c8ce08c084a45efa05b892ab" 2069 | dependencies: 2070 | aws-sign2 "~0.6.0" 2071 | aws4 "^1.2.1" 2072 | bl "~1.1.2" 2073 | caseless "~0.11.0" 2074 | combined-stream "~1.0.5" 2075 | extend "~3.0.0" 2076 | forever-agent "~0.6.1" 2077 | form-data "~1.0.0-rc4" 2078 | har-validator "~2.0.6" 2079 | hawk "~3.1.3" 2080 | http-signature "~1.1.0" 2081 | is-typedarray "~1.0.0" 2082 | isstream "~0.1.2" 2083 | json-stringify-safe "~5.0.1" 2084 | mime-types "~2.1.7" 2085 | node-uuid "~1.4.7" 2086 | oauth-sign "~0.8.1" 2087 | qs "~6.2.0" 2088 | stringstream "~0.0.4" 2089 | tough-cookie "~2.3.0" 2090 | tunnel-agent "~0.4.1" 2091 | 2092 | request@~2.81.0: 2093 | version "2.81.0" 2094 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 2095 | dependencies: 2096 | aws-sign2 "~0.6.0" 2097 | aws4 "^1.2.1" 2098 | caseless "~0.12.0" 2099 | combined-stream "~1.0.5" 2100 | extend "~3.0.0" 2101 | forever-agent "~0.6.1" 2102 | form-data "~2.1.1" 2103 | har-validator "~4.2.1" 2104 | hawk "~3.1.3" 2105 | http-signature "~1.1.0" 2106 | is-typedarray "~1.0.0" 2107 | isstream "~0.1.2" 2108 | json-stringify-safe "~5.0.1" 2109 | mime-types "~2.1.7" 2110 | oauth-sign "~0.8.1" 2111 | performance-now "^0.2.0" 2112 | qs "~6.4.0" 2113 | safe-buffer "^5.0.1" 2114 | stringstream "~0.0.4" 2115 | tough-cookie "~2.3.0" 2116 | tunnel-agent "^0.6.0" 2117 | uuid "^3.0.0" 2118 | 2119 | retry@^0.10.0, retry@~0.10.0, retry@~0.10.1: 2120 | version "0.10.1" 2121 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" 2122 | 2123 | rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.1: 2124 | version "2.6.2" 2125 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 2126 | dependencies: 2127 | glob "^7.0.5" 2128 | 2129 | rimraf@~2.5.4: 2130 | version "2.5.4" 2131 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 2132 | dependencies: 2133 | glob "^7.0.5" 2134 | 2135 | run-queue@^1.0.0, run-queue@^1.0.3: 2136 | version "1.0.3" 2137 | resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" 2138 | dependencies: 2139 | aproba "^1.1.1" 2140 | 2141 | safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2142 | version "5.1.1" 2143 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 2144 | 2145 | semver-diff@^2.0.0: 2146 | version "2.1.0" 2147 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" 2148 | dependencies: 2149 | semver "^5.0.3" 2150 | 2151 | "semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: 2152 | version "5.5.0" 2153 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 2154 | 2155 | semver@5.3.0, semver@~5.3.0: 2156 | version "5.3.0" 2157 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2158 | 2159 | semver@^4.1.0: 2160 | version "4.3.6" 2161 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" 2162 | 2163 | semver@~5.1.0: 2164 | version "5.1.1" 2165 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" 2166 | 2167 | set-blocking@~2.0.0: 2168 | version "2.0.0" 2169 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2170 | 2171 | sha@~2.0.1: 2172 | version "2.0.1" 2173 | resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" 2174 | dependencies: 2175 | graceful-fs "^4.1.2" 2176 | readable-stream "^2.0.2" 2177 | 2178 | shebang-command@^1.2.0: 2179 | version "1.2.0" 2180 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2181 | dependencies: 2182 | shebang-regex "^1.0.0" 2183 | 2184 | shebang-regex@^1.0.0: 2185 | version "1.0.0" 2186 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2187 | 2188 | signal-exit@^3.0.0, signal-exit@^3.0.2: 2189 | version "3.0.2" 2190 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2191 | 2192 | slash@^1.0.0: 2193 | version "1.0.0" 2194 | resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" 2195 | 2196 | slide@^1.1.3, slide@^1.1.5, slide@~1.1.3, slide@~1.1.6: 2197 | version "1.1.6" 2198 | resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" 2199 | 2200 | smart-buffer@^1.0.13: 2201 | version "1.1.15" 2202 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" 2203 | 2204 | sntp@1.x.x: 2205 | version "1.0.9" 2206 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2207 | dependencies: 2208 | hoek "2.x.x" 2209 | 2210 | sntp@2.x.x: 2211 | version "2.1.0" 2212 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" 2213 | dependencies: 2214 | hoek "4.x.x" 2215 | 2216 | socks-proxy-agent@^3.0.1: 2217 | version "3.0.1" 2218 | resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" 2219 | dependencies: 2220 | agent-base "^4.1.0" 2221 | socks "^1.1.10" 2222 | 2223 | socks@^1.1.10: 2224 | version "1.1.10" 2225 | resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" 2226 | dependencies: 2227 | ip "^1.1.4" 2228 | smart-buffer "^1.0.13" 2229 | 2230 | sorted-object@~2.0.0, sorted-object@~2.0.1: 2231 | version "2.0.1" 2232 | resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" 2233 | 2234 | sorted-union-stream@~2.1.3: 2235 | version "2.1.3" 2236 | resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" 2237 | dependencies: 2238 | from2 "^1.3.0" 2239 | stream-iterate "^1.1.0" 2240 | 2241 | spdx-correct@~1.0.0: 2242 | version "1.0.2" 2243 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2244 | dependencies: 2245 | spdx-license-ids "^1.0.2" 2246 | 2247 | spdx-expression-parse@~1.0.0: 2248 | version "1.0.4" 2249 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2250 | 2251 | spdx-license-ids@^1.0.2, spdx-license-ids@~1.2.2: 2252 | version "1.2.2" 2253 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2254 | 2255 | sshpk@^1.7.0: 2256 | version "1.13.1" 2257 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 2258 | dependencies: 2259 | asn1 "~0.2.3" 2260 | assert-plus "^1.0.0" 2261 | dashdash "^1.12.0" 2262 | getpass "^0.1.1" 2263 | optionalDependencies: 2264 | bcrypt-pbkdf "^1.0.0" 2265 | ecc-jsbn "~0.1.1" 2266 | jsbn "~0.1.0" 2267 | tweetnacl "~0.14.0" 2268 | 2269 | ssri@^4.1.2, ssri@^4.1.6, ssri@~4.1.6: 2270 | version "4.1.6" 2271 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-4.1.6.tgz#0cb49b6ac84457e7bdd466cb730c3cb623e9a25b" 2272 | dependencies: 2273 | safe-buffer "^5.1.0" 2274 | 2275 | ssri@^5.0.0: 2276 | version "5.1.0" 2277 | resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.1.0.tgz#2cbf1df36b74d0fc91fcf89640a4b3e1d10b1899" 2278 | dependencies: 2279 | safe-buffer "^5.1.0" 2280 | 2281 | stream-each@^1.1.0: 2282 | version "1.2.2" 2283 | resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" 2284 | dependencies: 2285 | end-of-stream "^1.1.0" 2286 | stream-shift "^1.0.0" 2287 | 2288 | stream-iterate@^1.1.0: 2289 | version "1.2.0" 2290 | resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" 2291 | dependencies: 2292 | readable-stream "^2.1.5" 2293 | stream-shift "^1.0.0" 2294 | 2295 | stream-shift@^1.0.0: 2296 | version "1.0.0" 2297 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" 2298 | 2299 | string-width@^1.0.1, string-width@^1.0.2: 2300 | version "1.0.2" 2301 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2302 | dependencies: 2303 | code-point-at "^1.0.0" 2304 | is-fullwidth-code-point "^1.0.0" 2305 | strip-ansi "^3.0.0" 2306 | 2307 | string-width@^2.0.0, string-width@^2.1.1: 2308 | version "2.1.1" 2309 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 2310 | dependencies: 2311 | is-fullwidth-code-point "^2.0.0" 2312 | strip-ansi "^4.0.0" 2313 | 2314 | string_decoder@~0.10.x: 2315 | version "0.10.31" 2316 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2317 | 2318 | string_decoder@~1.0.3: 2319 | version "1.0.3" 2320 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 2321 | dependencies: 2322 | safe-buffer "~5.1.0" 2323 | 2324 | stringstream@~0.0.4, stringstream@~0.0.5: 2325 | version "0.0.5" 2326 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2327 | 2328 | strip-ansi@^3.0.0, strip-ansi@^3.0.1, strip-ansi@~3.0.1: 2329 | version "3.0.1" 2330 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2331 | dependencies: 2332 | ansi-regex "^2.0.0" 2333 | 2334 | strip-ansi@^4.0.0, strip-ansi@~4.0.0: 2335 | version "4.0.0" 2336 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 2337 | dependencies: 2338 | ansi-regex "^3.0.0" 2339 | 2340 | strip-eof@^1.0.0: 2341 | version "1.0.0" 2342 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2343 | 2344 | strip-json-comments@~2.0.1: 2345 | version "2.0.1" 2346 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2347 | 2348 | supports-color@^2.0.0: 2349 | version "2.0.0" 2350 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2351 | 2352 | supports-color@^4.0.0: 2353 | version "4.5.0" 2354 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" 2355 | dependencies: 2356 | has-flag "^2.0.0" 2357 | 2358 | tar-fs@^1.15.3: 2359 | version "1.16.0" 2360 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" 2361 | dependencies: 2362 | chownr "^1.0.1" 2363 | mkdirp "^0.5.1" 2364 | pump "^1.0.0" 2365 | tar-stream "^1.1.2" 2366 | 2367 | tar-stream@^1.1.2, tar-stream@^1.5.4: 2368 | version "1.5.5" 2369 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" 2370 | dependencies: 2371 | bl "^1.0.0" 2372 | end-of-stream "^1.0.0" 2373 | readable-stream "^2.0.0" 2374 | xtend "^4.0.0" 2375 | 2376 | tar@^2.0.0, tar@~2.2.1: 2377 | version "2.2.1" 2378 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2379 | dependencies: 2380 | block-stream "*" 2381 | fstream "^1.0.2" 2382 | inherits "2" 2383 | 2384 | term-size@^1.2.0: 2385 | version "1.2.0" 2386 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" 2387 | dependencies: 2388 | execa "^0.7.0" 2389 | 2390 | text-table@~0.2.0: 2391 | version "0.2.0" 2392 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 2393 | 2394 | through2@^2.0.0: 2395 | version "2.0.3" 2396 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 2397 | dependencies: 2398 | readable-stream "^2.1.5" 2399 | xtend "~4.0.1" 2400 | 2401 | "through@>=2.2.7 <3": 2402 | version "2.3.8" 2403 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2404 | 2405 | timed-out@^4.0.0: 2406 | version "4.0.1" 2407 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 2408 | 2409 | tmp@0.0.31: 2410 | version "0.0.31" 2411 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" 2412 | dependencies: 2413 | os-tmpdir "~1.0.1" 2414 | 2415 | tough-cookie@~2.3.0, tough-cookie@~2.3.3: 2416 | version "2.3.3" 2417 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 2418 | dependencies: 2419 | punycode "^1.4.1" 2420 | 2421 | tunnel-agent@^0.6.0: 2422 | version "0.6.0" 2423 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2424 | dependencies: 2425 | safe-buffer "^5.0.1" 2426 | 2427 | tunnel-agent@~0.4.1: 2428 | version "0.4.3" 2429 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 2430 | 2431 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2432 | version "0.14.5" 2433 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2434 | 2435 | typedarray@^0.0.6: 2436 | version "0.0.6" 2437 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 2438 | 2439 | uid-number@0.0.6: 2440 | version "0.0.6" 2441 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2442 | 2443 | umask@~1.1.0: 2444 | version "1.1.0" 2445 | resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" 2446 | 2447 | unique-filename@^1.1.0, unique-filename@~1.1.0: 2448 | version "1.1.0" 2449 | resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" 2450 | dependencies: 2451 | unique-slug "^2.0.0" 2452 | 2453 | unique-slug@^2.0.0: 2454 | version "2.0.0" 2455 | resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" 2456 | dependencies: 2457 | imurmurhash "^0.1.4" 2458 | 2459 | unique-string@^1.0.0: 2460 | version "1.0.0" 2461 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" 2462 | dependencies: 2463 | crypto-random-string "^1.0.0" 2464 | 2465 | universalify@^0.1.0: 2466 | version "0.1.1" 2467 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" 2468 | 2469 | unpipe@~1.0.0: 2470 | version "1.0.0" 2471 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2472 | 2473 | unzip-response@^2.0.1: 2474 | version "2.0.1" 2475 | resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" 2476 | 2477 | update-notifier@~2.2.0: 2478 | version "2.2.0" 2479 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" 2480 | dependencies: 2481 | boxen "^1.0.0" 2482 | chalk "^1.0.0" 2483 | configstore "^3.0.0" 2484 | import-lazy "^2.1.0" 2485 | is-npm "^1.0.0" 2486 | latest-version "^3.0.0" 2487 | semver-diff "^2.0.0" 2488 | xdg-basedir "^3.0.0" 2489 | 2490 | url-parse-lax@^1.0.0: 2491 | version "1.0.0" 2492 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 2493 | dependencies: 2494 | prepend-http "^1.0.1" 2495 | 2496 | user-home@2.0.0: 2497 | version "2.0.0" 2498 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 2499 | dependencies: 2500 | os-homedir "^1.0.0" 2501 | 2502 | util-deprecate@~1.0.1: 2503 | version "1.0.2" 2504 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2505 | 2506 | util-extend@^1.0.1: 2507 | version "1.0.3" 2508 | resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" 2509 | 2510 | uuid@^3.0.0, uuid@^3.1.0: 2511 | version "3.2.1" 2512 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" 2513 | 2514 | uuid@~3.1.0: 2515 | version "3.1.0" 2516 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 2517 | 2518 | validate-npm-package-license@^3.0.1, validate-npm-package-license@~3.0.1: 2519 | version "3.0.1" 2520 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2521 | dependencies: 2522 | spdx-correct "~1.0.0" 2523 | spdx-expression-parse "~1.0.0" 2524 | 2525 | validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: 2526 | version "3.0.0" 2527 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" 2528 | dependencies: 2529 | builtins "^1.0.3" 2530 | 2531 | validate-npm-package-name@~2.2.2: 2532 | version "2.2.2" 2533 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-2.2.2.tgz#f65695b22f7324442019a3c7fa39a6e7fd299085" 2534 | dependencies: 2535 | builtins "0.0.7" 2536 | 2537 | verror@1.10.0: 2538 | version "1.10.0" 2539 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 2540 | dependencies: 2541 | assert-plus "^1.0.0" 2542 | core-util-is "1.0.2" 2543 | extsprintf "^1.2.0" 2544 | 2545 | wcwidth@^1.0.0: 2546 | version "1.0.1" 2547 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 2548 | dependencies: 2549 | defaults "^1.0.3" 2550 | 2551 | which@1, which@^1.2.12, which@^1.2.9: 2552 | version "1.3.0" 2553 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 2554 | dependencies: 2555 | isexe "^2.0.0" 2556 | 2557 | which@~1.2.11, which@~1.2.14: 2558 | version "1.2.14" 2559 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" 2560 | dependencies: 2561 | isexe "^2.0.0" 2562 | 2563 | wide-align@^1.1.0: 2564 | version "1.1.2" 2565 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" 2566 | dependencies: 2567 | string-width "^1.0.2" 2568 | 2569 | widest-line@^2.0.0: 2570 | version "2.0.0" 2571 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" 2572 | dependencies: 2573 | string-width "^2.1.1" 2574 | 2575 | wordwrap@~0.0.2: 2576 | version "0.0.3" 2577 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 2578 | 2579 | worker-farm@~1.3.1: 2580 | version "1.3.1" 2581 | resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.3.1.tgz#4333112bb49b17aa050b87895ca6b2cacf40e5ff" 2582 | dependencies: 2583 | errno ">=0.1.1 <0.2.0-0" 2584 | xtend ">=4.0.0 <4.1.0-0" 2585 | 2586 | wrappy@1, wrappy@~1.0.2: 2587 | version "1.0.2" 2588 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2589 | 2590 | write-file-atomic@^2.0.0: 2591 | version "2.3.0" 2592 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" 2593 | dependencies: 2594 | graceful-fs "^4.1.11" 2595 | imurmurhash "^0.1.4" 2596 | signal-exit "^3.0.2" 2597 | 2598 | write-file-atomic@~1.1.4: 2599 | version "1.1.4" 2600 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.1.4.tgz#b1f52dc2e8dc0e3cb04d187a25f758a38a90ca3b" 2601 | dependencies: 2602 | graceful-fs "^4.1.2" 2603 | imurmurhash "^0.1.4" 2604 | slide "^1.1.5" 2605 | 2606 | write-file-atomic@~2.1.0: 2607 | version "2.1.0" 2608 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.1.0.tgz#1769f4b551eedce419f0505deae2e26763542d37" 2609 | dependencies: 2610 | graceful-fs "^4.1.11" 2611 | imurmurhash "^0.1.4" 2612 | slide "^1.1.5" 2613 | 2614 | xdg-basedir@^3.0.0: 2615 | version "3.0.0" 2616 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" 2617 | 2618 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: 2619 | version "4.0.1" 2620 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 2621 | 2622 | y18n@^3.2.1: 2623 | version "3.2.1" 2624 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 2625 | 2626 | yallist@^2.0.0, yallist@^2.1.2: 2627 | version "2.1.2" 2628 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2629 | --------------------------------------------------------------------------------