优雅写异步与循环
This commit is contained in:
parent
c287a3e94e
commit
2b635d6783
@ -126,5 +126,8 @@ jsonContent:
|
|||||||
categories: true
|
categories: true
|
||||||
tags: true
|
tags: true
|
||||||
|
|
||||||
# 是否同步文章内容以及分词结果
|
# hexo-generator-search
|
||||||
save_content: false
|
search:
|
||||||
|
path: search.xml
|
||||||
|
field: post
|
||||||
|
content: true
|
||||||
|
|||||||
BIN
images/JavaScript/Promise.all时间.png
Normal file
BIN
images/JavaScript/Promise.all时间.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
images/JavaScript/await时间.png
Normal file
BIN
images/JavaScript/await时间.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@ -17,6 +17,7 @@
|
|||||||
"hexo-generator-feed": "^1.2.2",
|
"hexo-generator-feed": "^1.2.2",
|
||||||
"hexo-generator-index": "^0.2.1",
|
"hexo-generator-index": "^0.2.1",
|
||||||
"hexo-generator-json-content": "^4.1.3",
|
"hexo-generator-json-content": "^4.1.3",
|
||||||
|
"hexo-generator-search": "^2.4.0",
|
||||||
"hexo-generator-sitemap": "^1.2.0",
|
"hexo-generator-sitemap": "^1.2.0",
|
||||||
"hexo-generator-tag": "^0.2.0",
|
"hexo-generator-tag": "^0.2.0",
|
||||||
"hexo-renderer-ejs": "^0.3.1",
|
"hexo-renderer-ejs": "^0.3.1",
|
||||||
@ -30,8 +31,6 @@
|
|||||||
"gulp-htmlclean": "^2.7.22",
|
"gulp-htmlclean": "^2.7.22",
|
||||||
"gulp-htmlmin": "^5.0.1",
|
"gulp-htmlmin": "^5.0.1",
|
||||||
"gulp-plumber": "^1.2.1",
|
"gulp-plumber": "^1.2.1",
|
||||||
"mongoose": "^5.6.2",
|
"optimist": "^0.6.1"
|
||||||
"optimist": "^0.6.1",
|
|
||||||
"segment": "^0.1.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,47 +1,6 @@
|
|||||||
const crypto = require('crypto')
|
|
||||||
/**
|
|
||||||
* 创建mongodb数据库连接, 返回Model
|
|
||||||
*/
|
|
||||||
function createModel(dbUrl) {
|
|
||||||
const Segment = require('segment')
|
|
||||||
const segment = new Segment() // 创建实例
|
|
||||||
segment.useDefault() // 使用默认的识别模块及字典
|
|
||||||
|
|
||||||
const mongoose = require('mongoose')
|
|
||||||
mongoose.connect(dbUrl, {useNewUrlParser: true})
|
|
||||||
const articleSchema = new mongoose.Schema({
|
|
||||||
title: String,
|
|
||||||
path: String,
|
|
||||||
create_date: Date,
|
|
||||||
content: String,
|
|
||||||
content_hash: String
|
|
||||||
}, {
|
|
||||||
collection: 'article',
|
|
||||||
versionKey: false,
|
|
||||||
})
|
|
||||||
|
|
||||||
const articleKeysSchema = new mongoose.Schema({
|
|
||||||
article_id: mongoose.Types.ObjectId,
|
|
||||||
keys: Array
|
|
||||||
}, {
|
|
||||||
collection: 'article_keys',
|
|
||||||
versionKey: false,
|
|
||||||
})
|
|
||||||
return {
|
|
||||||
articleModel: mongoose.model('Article', articleSchema),
|
|
||||||
articleKeysModel: mongoose.model('ArticleKeys', articleKeysSchema)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var mongooseModels = undefined
|
|
||||||
if(hexo.config.save_content) {
|
|
||||||
mongooseModels = createModel('mongodb://127.0.0.1:27017/common_api')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 替换markdown中图片路径的正则
|
// 替换markdown中图片路径的正则
|
||||||
const mdImageRegex = /\]\s*\((?=(?!http).*?\))/gi
|
const mdImageRegex = /\]\s*\((?=(?!http).*?\))/gi
|
||||||
// 替换所有HTML标签的正则
|
// 替换所有HTML标签的正则
|
||||||
const tagRegex = /<[^>]*>/g
|
|
||||||
hexo.extend.filter.register('before_post_render', function(article){
|
hexo.extend.filter.register('before_post_render', function(article){
|
||||||
// article.raw 是原始的文件内容
|
// article.raw 是原始的文件内容
|
||||||
// article.content 是处理过代码块语法高亮的内容
|
// article.content 是处理过代码块语法高亮的内容
|
||||||
@ -49,32 +8,4 @@ hexo.extend.filter.register('before_post_render', function(article){
|
|||||||
article.content = article.content.replace(mdImageRegex, `](${hexo.config.picture_cdn}`)
|
article.content = article.content.replace(mdImageRegex, `](${hexo.config.picture_cdn}`)
|
||||||
}
|
}
|
||||||
return article
|
return article
|
||||||
})
|
|
||||||
|
|
||||||
hexo.extend.filter.register('after_post_render', function(article){
|
|
||||||
if(!mongooseModels || article.pageid) return article
|
|
||||||
let textContent = article.content.replace(tagRegex, '')
|
|
||||||
const contentHash = crypto.createHash('sha1')
|
|
||||||
.update(textContent)
|
|
||||||
.digest('hex')
|
|
||||||
let articleKeys = segment.doSegment(textContent, {
|
|
||||||
simple: true, // 不返回词性
|
|
||||||
stripPunctuation: true // 去除标点符号
|
|
||||||
})
|
|
||||||
const articleEntity = new mongooseModels.articleModel({
|
|
||||||
title: article.title,
|
|
||||||
path: article.path,
|
|
||||||
create_date: article.date._i,
|
|
||||||
content: textContent,
|
|
||||||
content_hash: contentHash
|
|
||||||
})
|
|
||||||
articleEntity.save(function(err, savedArticle){
|
|
||||||
if(err) console.error(err)
|
|
||||||
const articleKeysEntity = new mongooseModels.articleKeysModel({
|
|
||||||
article_id: savedArticle._id,
|
|
||||||
keys: articleKeys,
|
|
||||||
})
|
|
||||||
articleKeysEntity.save()
|
|
||||||
})
|
|
||||||
return article;
|
|
||||||
})
|
})
|
||||||
82
source/_posts/JavaScript/优雅写异步与循环.md
Normal file
82
source/_posts/JavaScript/优雅写异步与循环.md
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
---
|
||||||
|
title: 优雅写异步与循环
|
||||||
|
date: 2019-06-29 23:39:46
|
||||||
|
tags:
|
||||||
|
- JavaScript
|
||||||
|
categories:
|
||||||
|
- JavaScript
|
||||||
|
---
|
||||||
|
|
||||||
|
JS当中的循环都是非异步的
|
||||||
|
包括但不限于
|
||||||
|
1. Array.prototype中的`forEach`
|
||||||
|
2. `for ... in` 语法
|
||||||
|
3. `for ... of` 语法
|
||||||
|
|
||||||
|
<!-- more -->
|
||||||
|
所以如果要在循环内的异步全部完成后做某些事情
|
||||||
|
例如
|
||||||
|
```javascript
|
||||||
|
// 这里我只是简单构造了一个异步
|
||||||
|
// 实际运用当中譬如数据库查询、文件读写等操作, 通常都是异步的
|
||||||
|
function show(num) {
|
||||||
|
Promise.resolve(num).then(console.log)
|
||||||
|
}
|
||||||
|
const arr = [100, 200, 300]
|
||||||
|
|
||||||
|
console.log('start')
|
||||||
|
arr.forEach(show)
|
||||||
|
console.log('end')
|
||||||
|
```
|
||||||
|
上面的写法根据事件队列的机制, 显然会先输出end, 再输出数组元素的值
|
||||||
|
当然我们可以在Promise的resolve函数当中判断是否到达了数组最后一个元素, 把输出end的操作写进resolve函数里面
|
||||||
|
显然这不够优雅, 而且很多时候也不方便这样做
|
||||||
|
|
||||||
|
实现方式
|
||||||
|
#### Promise.all
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const arr = [100, 200, 300]
|
||||||
|
|
||||||
|
console.log('start')
|
||||||
|
console.time('promise all in')
|
||||||
|
Promise.all(arr.map(show)).then(() => {
|
||||||
|
console.timeEnd('promise all in')
|
||||||
|
console.log('end')
|
||||||
|
})
|
||||||
|
```
|
||||||
|
为了比较执行性能的差异, 加了一个计时 ( Nodejs环境运行 )
|
||||||
|

|
||||||
|
|
||||||
|
#### async/await
|
||||||
|
```javascript
|
||||||
|
const arr = [100, 200, 300];
|
||||||
|
|
||||||
|
(async function() {
|
||||||
|
console.log('start')
|
||||||
|
console.time('await all in')
|
||||||
|
for await (let i of arr.map(show)) {}
|
||||||
|
console.timeEnd('await all in')
|
||||||
|
console.log('end')
|
||||||
|
})()
|
||||||
|
```
|
||||||
|

|
||||||
|
由于await必须用在async修饰的函数当中, 所以包装了一层
|
||||||
|
实际执行时间与Promise.all差不多
|
||||||
|
|
||||||
|
### One by one
|
||||||
|
这种方式效率最低,有点类似于同步语言中的循环,一个接着一个执行,耗时自然也就是所有异步方法耗时的总和。对资源的消耗最小。
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const arr = [100, 200, 300];
|
||||||
|
|
||||||
|
(async function() {
|
||||||
|
console.log('start')
|
||||||
|
console.time('await one by one')
|
||||||
|
for (let item of arr) {
|
||||||
|
await show(item)
|
||||||
|
}
|
||||||
|
console.timeEnd('await one by one')
|
||||||
|
console.log('end')
|
||||||
|
})()
|
||||||
|
```
|
||||||
157
yarn.lock
157
yarn.lock
@ -258,13 +258,6 @@ async-settle@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
async-done "^1.2.2"
|
async-done "^1.2.2"
|
||||||
|
|
||||||
async@2.6.2:
|
|
||||||
version "2.6.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381"
|
|
||||||
integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==
|
|
||||||
dependencies:
|
|
||||||
lodash "^4.17.11"
|
|
||||||
|
|
||||||
async@~0.2.6:
|
async@~0.2.6:
|
||||||
version "0.2.10"
|
version "0.2.10"
|
||||||
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
|
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
|
||||||
@ -314,11 +307,6 @@ binary-extensions@^1.0.0:
|
|||||||
version "1.13.1"
|
version "1.13.1"
|
||||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
|
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
|
||||||
|
|
||||||
bluebird@3.5.1:
|
|
||||||
version "3.5.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
|
|
||||||
integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
|
|
||||||
|
|
||||||
bluebird@^3.2.2, bluebird@^3.4.0, bluebird@^3.5.1:
|
bluebird@^3.2.2, bluebird@^3.4.0, bluebird@^3.5.1:
|
||||||
version "3.5.4"
|
version "3.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714"
|
||||||
@ -361,11 +349,6 @@ browser-fingerprint@0.0.1:
|
|||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz#8df3cdca25bf7d5b3542d61545d730053fce604a"
|
resolved "https://registry.yarnpkg.com/browser-fingerprint/-/browser-fingerprint-0.0.1.tgz#8df3cdca25bf7d5b3542d61545d730053fce604a"
|
||||||
|
|
||||||
bson@^1.1.1, bson@~1.1.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.1.tgz#4330f5e99104c4e751e7351859e2d408279f2f13"
|
|
||||||
integrity sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg==
|
|
||||||
|
|
||||||
buffer-equal@^1.0.0:
|
buffer-equal@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
|
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe"
|
||||||
@ -741,13 +724,6 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@3.1.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
|
||||||
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
|
|
||||||
dependencies:
|
|
||||||
ms "2.0.0"
|
|
||||||
|
|
||||||
debug@^4.1.0:
|
debug@^4.1.0:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||||
@ -1538,6 +1514,14 @@ hexo-generator-json-content@^4.1.3:
|
|||||||
keyword-extractor latest
|
keyword-extractor latest
|
||||||
moment latest
|
moment latest
|
||||||
|
|
||||||
|
hexo-generator-search@^2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/hexo-generator-search/-/hexo-generator-search-2.4.0.tgz#f5abbbbbe35299f52c2554bb89845d0a4fab6c9b"
|
||||||
|
integrity sha512-470q6Cpu6xHIPMXN+rQjCQkn/ii4e8XJRBXCmKs+B1jGQNrT7K3geqfyd5pqGiGi6bh5yY+mNqwGw5r2sZZtzA==
|
||||||
|
dependencies:
|
||||||
|
nunjucks "^3.0.1"
|
||||||
|
utils-merge "^1.0.0"
|
||||||
|
|
||||||
hexo-generator-sitemap@^1.2.0:
|
hexo-generator-sitemap@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz#3018f8d7d1e2e42b3f71a65a7316ffcf583bc3f3"
|
resolved "https://registry.yarnpkg.com/hexo-generator-sitemap/-/hexo-generator-sitemap-1.2.0.tgz#3018f8d7d1e2e42b3f71a65a7316ffcf583bc3f3"
|
||||||
@ -1978,11 +1962,6 @@ just-debounce@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea"
|
resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea"
|
||||||
integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=
|
integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=
|
||||||
|
|
||||||
kareem@2.3.0:
|
|
||||||
version "2.3.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.0.tgz#ef33c42e9024dce511eeaf440cd684f3af1fc769"
|
|
||||||
integrity sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg==
|
|
||||||
|
|
||||||
keyword-extractor@latest:
|
keyword-extractor@latest:
|
||||||
version "0.0.16"
|
version "0.0.16"
|
||||||
resolved "https://registry.yarnpkg.com/keyword-extractor/-/keyword-extractor-0.0.16.tgz#225342f85de31ef3087fd58f951d655d59e1d492"
|
resolved "https://registry.yarnpkg.com/keyword-extractor/-/keyword-extractor-0.0.16.tgz#225342f85de31ef3087fd58f951d655d59e1d492"
|
||||||
@ -2187,11 +2166,6 @@ math-random@^1.0.1:
|
|||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
|
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
|
||||||
|
|
||||||
memory-pager@^1.0.2:
|
|
||||||
version "1.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
|
|
||||||
integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
|
|
||||||
|
|
||||||
micromatch@^2.1.5:
|
micromatch@^2.1.5:
|
||||||
version "2.3.11"
|
version "2.3.11"
|
||||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
|
||||||
@ -2309,49 +2283,6 @@ moment-timezone@^0.5.14:
|
|||||||
version "2.24.0"
|
version "2.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
|
resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
|
||||||
|
|
||||||
mongodb-core@3.2.7:
|
|
||||||
version "3.2.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.2.7.tgz#a8ef1fe764a192c979252dacbc600dc88d77e28f"
|
|
||||||
integrity sha512-WypKdLxFNPOH/Jy6i9z47IjG2wIldA54iDZBmHMINcgKOUcWJh8og+Wix76oGd7EyYkHJKssQ2FAOw5Su/n4XQ==
|
|
||||||
dependencies:
|
|
||||||
bson "^1.1.1"
|
|
||||||
require_optional "^1.0.1"
|
|
||||||
safe-buffer "^5.1.2"
|
|
||||||
optionalDependencies:
|
|
||||||
saslprep "^1.0.0"
|
|
||||||
|
|
||||||
mongodb@3.2.7:
|
|
||||||
version "3.2.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.2.7.tgz#8ba149e4be708257cad0dea72aebb2bbb311a7ac"
|
|
||||||
integrity sha512-2YdWrdf1PJgxcCrT1tWoL6nHuk6hCxhddAAaEh8QJL231ci4+P9FLyqopbTm2Z2sAU6mhCri+wd9r1hOcHdoMw==
|
|
||||||
dependencies:
|
|
||||||
mongodb-core "3.2.7"
|
|
||||||
safe-buffer "^5.1.2"
|
|
||||||
|
|
||||||
mongoose-legacy-pluralize@1.0.2:
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
|
|
||||||
integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==
|
|
||||||
|
|
||||||
mongoose@^5.6.2:
|
|
||||||
version "5.6.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.6.2.tgz#71afc80bc27462a5fd12644db490c2c5b053646a"
|
|
||||||
integrity sha512-s2FQn/XTlM/yeYxqNPGU8khSA1nPhGiESO7iLdFf8Ntn6lEwgO9KKOIGkRKPk5s+peAOwO34ex6NPX8EWtKgFA==
|
|
||||||
dependencies:
|
|
||||||
async "2.6.2"
|
|
||||||
bson "~1.1.1"
|
|
||||||
kareem "2.3.0"
|
|
||||||
mongodb "3.2.7"
|
|
||||||
mongodb-core "3.2.7"
|
|
||||||
mongoose-legacy-pluralize "1.0.2"
|
|
||||||
mpath "0.6.0"
|
|
||||||
mquery "3.2.1"
|
|
||||||
ms "2.1.2"
|
|
||||||
regexp-clone "1.0.0"
|
|
||||||
safe-buffer "5.1.2"
|
|
||||||
sift "7.0.1"
|
|
||||||
sliced "1.0.1"
|
|
||||||
|
|
||||||
morgan@^1.9.0:
|
morgan@^1.9.0:
|
||||||
version "1.9.1"
|
version "1.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
|
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
|
||||||
@ -2362,31 +2293,10 @@ morgan@^1.9.0:
|
|||||||
on-finished "~2.3.0"
|
on-finished "~2.3.0"
|
||||||
on-headers "~1.0.1"
|
on-headers "~1.0.1"
|
||||||
|
|
||||||
mpath@0.6.0:
|
|
||||||
version "0.6.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e"
|
|
||||||
integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw==
|
|
||||||
|
|
||||||
mquery@3.2.1:
|
|
||||||
version "3.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.1.tgz#8b059a49cdae0a8a9e804284ef64c2f58d3ac05d"
|
|
||||||
integrity sha512-kY/K8QToZWTTocm0U+r8rqcJCp5PRl6e8tPmoDs5OeSO3DInZE2rAL6AYH+V406JTo8305LdASOQcxRDqHojyw==
|
|
||||||
dependencies:
|
|
||||||
bluebird "3.5.1"
|
|
||||||
debug "3.1.0"
|
|
||||||
regexp-clone "^1.0.0"
|
|
||||||
safe-buffer "5.1.2"
|
|
||||||
sliced "1.0.1"
|
|
||||||
|
|
||||||
ms@2.0.0:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
|
|
||||||
ms@2.1.2:
|
|
||||||
version "2.1.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
|
||||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
|
||||||
|
|
||||||
ms@^2.1.1:
|
ms@^2.1.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||||
@ -2571,7 +2481,7 @@ nunjucks@^2.3.0:
|
|||||||
chokidar "^1.6.0"
|
chokidar "^1.6.0"
|
||||||
yargs "^3.32.0"
|
yargs "^3.32.0"
|
||||||
|
|
||||||
nunjucks@^3.0.0, nunjucks@^3.1.2:
|
nunjucks@^3.0.0, nunjucks@^3.0.1, nunjucks@^3.1.2:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.0.tgz#53e95f43c9555e822e8950008a201b1002d49933"
|
resolved "https://registry.yarnpkg.com/nunjucks/-/nunjucks-3.2.0.tgz#53e95f43c9555e822e8950008a201b1002d49933"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -2986,11 +2896,6 @@ regex-not@^1.0.0, regex-not@^1.0.2:
|
|||||||
extend-shallow "^3.0.2"
|
extend-shallow "^3.0.2"
|
||||||
safe-regex "^1.1.0"
|
safe-regex "^1.1.0"
|
||||||
|
|
||||||
regexp-clone@1.0.0, regexp-clone@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63"
|
|
||||||
integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==
|
|
||||||
|
|
||||||
relateurl@0.2.x:
|
relateurl@0.2.x:
|
||||||
version "0.2.7"
|
version "0.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
||||||
@ -3049,14 +2954,6 @@ require-main-filename@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
||||||
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
||||||
|
|
||||||
require_optional@^1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
|
|
||||||
integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==
|
|
||||||
dependencies:
|
|
||||||
resolve-from "^2.0.0"
|
|
||||||
semver "^5.1.0"
|
|
||||||
|
|
||||||
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
|
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
|
||||||
@ -3065,11 +2962,6 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
|||||||
expand-tilde "^2.0.0"
|
expand-tilde "^2.0.0"
|
||||||
global-modules "^1.0.0"
|
global-modules "^1.0.0"
|
||||||
|
|
||||||
resolve-from@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
|
|
||||||
integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=
|
|
||||||
|
|
||||||
resolve-options@^1.1.0:
|
resolve-options@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131"
|
resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131"
|
||||||
@ -3134,22 +3026,10 @@ safe-regex@^1.1.0:
|
|||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
|
|
||||||
saslprep@^1.0.0:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
|
|
||||||
integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
|
|
||||||
dependencies:
|
|
||||||
sparse-bitfield "^3.0.3"
|
|
||||||
|
|
||||||
sax@^1.2.4:
|
sax@^1.2.4:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||||
|
|
||||||
segment@^0.1.3:
|
|
||||||
version "0.1.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/segment/-/segment-0.1.3.tgz#605f80fd6c7131c46e38103a17b1688f09efafa7"
|
|
||||||
integrity sha1-YF+A/WxxMcRuOBA6F7Fojwnvr6c=
|
|
||||||
|
|
||||||
semver-greatest-satisfied-range@^1.1.0:
|
semver-greatest-satisfied-range@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b"
|
resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b"
|
||||||
@ -3157,7 +3037,7 @@ semver-greatest-satisfied-range@^1.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
sver-compat "^1.5.0"
|
sver-compat "^1.5.0"
|
||||||
|
|
||||||
"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0:
|
"semver@2 || 3 || 4 || 5", semver@^5.3.0:
|
||||||
version "5.7.0"
|
version "5.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
|
||||||
|
|
||||||
@ -3214,20 +3094,10 @@ setprototypeof@1.1.0:
|
|||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
|
||||||
|
|
||||||
sift@7.0.1:
|
|
||||||
version "7.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08"
|
|
||||||
integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==
|
|
||||||
|
|
||||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||||
|
|
||||||
sliced@1.0.1:
|
|
||||||
version "1.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
|
|
||||||
integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
|
|
||||||
|
|
||||||
snapdragon-node@^2.0.1:
|
snapdragon-node@^2.0.1:
|
||||||
version "2.1.1"
|
version "2.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||||
@ -3283,13 +3153,6 @@ sparkles@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
|
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
|
||||||
integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
|
integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
|
||||||
|
|
||||||
sparse-bitfield@^3.0.3:
|
|
||||||
version "3.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
|
|
||||||
integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE=
|
|
||||||
dependencies:
|
|
||||||
memory-pager "^1.0.2"
|
|
||||||
|
|
||||||
spdx-correct@^3.0.0:
|
spdx-correct@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
|
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user