14 changed files with 694 additions and 107 deletions
@ -1,2 +0,0 @@
@@ -1,2 +0,0 @@
|
||||
在多台设备上使用chrome浏览器,由于网络问题导致不同设备上书签同步缓慢,经常导致书签混乱。 |
||||
安装过多个用于同步书签的浏览器扩展,速度和功能都不是很满意,于是想自己做一个同步扩展。 |
@ -1,19 +1,10 @@
@@ -1,19 +1,10 @@
|
||||
chrome.runtime.onInstalled.addListener(function() { |
||||
chrome.storage.sync.set({ color: "#3aa757" }, function() { |
||||
console.log("The color is green."); |
||||
// 扩展第一次安装时触发
|
||||
// alert('安装完成')
|
||||
}); |
||||
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() { |
||||
chrome.declarativeContent.onPageChanged.addRules([ |
||||
{ |
||||
conditions: [ |
||||
new chrome.declarativeContent.PageStateMatcher({ |
||||
pageUrl: {hostEquals: 'developer.chrome.com'} |
||||
}) |
||||
], |
||||
actions: [ |
||||
new chrome.declarativeContent.ShowPageAction() |
||||
] |
||||
} |
||||
]) |
||||
}) |
||||
|
||||
chrome.bookmarks.onCreated.addListener(function() { |
||||
// alert('新增书签')
|
||||
}) |
||||
// chrome.browserAction.setBadgeText({text: '↑'})
|
||||
// chrome.browserAction.setBadgeText({text: '↓'})
|
||||
|
@ -1,35 +1,33 @@
@@ -1,35 +1,33 @@
|
||||
{ |
||||
"manifest_version": 2, |
||||
"name": "__MSG_name__", |
||||
"description": "__MSG_description__", |
||||
"version": "1.0", |
||||
"manifest_version": 2, |
||||
"default_locale": "en_US", |
||||
"background": { |
||||
"scripts": [ |
||||
"background.js" |
||||
], |
||||
"persistent": false |
||||
}, |
||||
"options_page": "options.html", |
||||
"page_action": { |
||||
"default_popup": "popup.html", |
||||
"default_icon": { |
||||
"default_locale": "zh_CN", |
||||
"description": "__MSG_description__", |
||||
"icons": { |
||||
"16": "images/get_started16.png", |
||||
"32": "images/get_started32.png", |
||||
"48": "images/get_started48.png", |
||||
"128": "images/get_started128.png" |
||||
} |
||||
}, |
||||
"icons": { |
||||
"browser_action": { |
||||
"default_popup": "popup.html", |
||||
"default_icon": { |
||||
"16": "images/get_started16.png", |
||||
"32": "images/get_started32.png", |
||||
"48": "images/get_started48.png", |
||||
"128": "images/get_started128.png" |
||||
} |
||||
}, |
||||
"background": { |
||||
"scripts": ["background.js"], |
||||
"persistent": false |
||||
}, |
||||
"homepage_url": "https://www.alvisisme.com", |
||||
"permissions": [ |
||||
"activeTab", |
||||
"bookmarks", |
||||
"declarativeContent", |
||||
"storage" |
||||
] |
||||
], |
||||
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'" |
||||
} |
@ -1,24 +0,0 @@
@@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" /> |
||||
<style> |
||||
button { |
||||
height: 30px; |
||||
width: 30px; |
||||
outline: none; |
||||
margin: 10px; |
||||
} |
||||
</style> |
||||
<title>Document</title> |
||||
</head> |
||||
<body> |
||||
<div id="buttonDiv"></div> |
||||
<div> |
||||
<p>Choose a different background color!</p> |
||||
</div> |
||||
<script src="options.js"></script> |
||||
</body> |
||||
</html> |
@ -1,17 +0,0 @@
@@ -1,17 +0,0 @@
|
||||
let page = document.getElementById('buttonDiv') |
||||
const kButtonColors = ['#3aa757', '#e8453c', '#f9bb2d', '#4688f1'] |
||||
function constructOptions(kButtonColors) { |
||||
for(let item of kButtonColors) { |
||||
let button = document.createElement('button') |
||||
button.style.backgroundColor = item |
||||
button.addEventListener('click', function(){ |
||||
chrome.storage.sync.set( { |
||||
color: item |
||||
},function () { |
||||
console.log('color is ' + item) |
||||
}) |
||||
}) |
||||
page.appendChild(button) |
||||
} |
||||
} |
||||
constructOptions(kButtonColors) |
@ -1,17 +0,0 @@
@@ -1,17 +0,0 @@
|
||||
let changeColor = document.getElementById('changeColor') |
||||
chrome.storage.sync.get('color', function(data) { |
||||
changeColor.style.backgroundColor = data.color |
||||
changeColor.setAttribute('value', data.color) |
||||
}) |
||||
changeColor.onclick = function(element) { |
||||
let color = element.target.value |
||||
chrome.tabs.query({ |
||||
active: true, |
||||
currentWindow: true |
||||
}, function(tabs) { |
||||
chrome.tabs.executeScript( |
||||
tabs[0].id, |
||||
{code: 'document.body.style.backgroundColor = "' + color + '";'} |
||||
) |
||||
}) |
||||
} |
@ -1,19 +1,14 @@
@@ -1,19 +1,14 @@
|
||||
<html lang="en"> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> |
||||
<title>Document</title> |
||||
<style> |
||||
button { |
||||
height: 30px; |
||||
width: 30px; |
||||
outline: none; |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<button id="changeColor"></button> |
||||
<script src='pop.js'></script> |
||||
<body style="width: 400px"> |
||||
<button id='download' type="button" class="btn btn-default">从服务器同步书签</button> |
||||
<button id='upload' type="button" class="btn btn-default" id='upload'>同步书签至服务器</button> |
||||
<script src='./popup.js'></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
function Node() { |
||||
/** |
||||
* id ( string ) |
||||
* 节点的唯一标识, id 在当前配置文件中是唯一的,浏览器重启后依然有效。 |
||||
*/ |
||||
this.id = "0"; |
||||
/** |
||||
* 父节点的ID,根节点没有此属性 |
||||
*/ |
||||
this.parentId = undefined; |
||||
/** |
||||
* 书签节点创建时的时间戳 |
||||
*/ |
||||
this.dateAdded = 0; |
||||
/** |
||||
* 书签文件夹内容的最后更新时间戳,书签节点没有此属性 |
||||
*/ |
||||
this.dateGroupModified = 0; |
||||
/** |
||||
* 书签在父节点中的索引,根节点没有此属性 |
||||
*/ |
||||
this.index = 0; |
||||
/** |
||||
* 书签标题 |
||||
*/ |
||||
this.title = ""; |
||||
/** |
||||
* 书签的url,书签文件夹没有此属性 |
||||
*/ |
||||
this.url = undefined; |
||||
/** |
||||
* 节点类型 |
||||
* 0 为书签 |
||||
* 1 为书签文件夹 |
||||
*/ |
||||
this.type = 0; |
||||
/** |
||||
* 是否为根节点 |
||||
*/ |
||||
this.root = false; |
||||
} |
||||
|
||||
let BookmarkTreeNodeList = []; |
||||
const BOOKMARK = 0; |
||||
const BOOKEMAR_FOLDER = 1; |
||||
|
||||
function addToList(node) { |
||||
let bookmarkNode = new Node(); |
||||
bookmarkNode.id = node.id; |
||||
bookmarkNode.parentId = node.parentId; |
||||
bookmarkNode.dateAdded = node.dateAdded; |
||||
bookmarkNode.dateGroupModified = node.dateGroupModified; |
||||
bookmarkNode.index = node.index; |
||||
bookmarkNode.title = node.title; |
||||
bookmarkNode.url = node.url; |
||||
bookmarkNode.type = |
||||
typeof node.dateGroupNodified === "undefined" ? BOOKMARK : BOOKEMAR_FOLDER; |
||||
bookmarkNode.root = typeof node.parentId === "undefined"; |
||||
BookmarkTreeNodeList.push(bookmarkNode); |
||||
|
||||
if (Array.isArray(node.children)) { |
||||
for (let j = 0; j < node.children.length; j++) { |
||||
addToList(node.children[j]); |
||||
} |
||||
} |
||||
} |
||||
|
||||
function getBookmarkList(callback) { |
||||
chrome.bookmarks.getTree(function(tree) { |
||||
for (let i = 0; i < tree.length; i++) { |
||||
let node = tree[i]; |
||||
addToList(node); |
||||
} |
||||
callback(null, BookmarkTreeNodeList); |
||||
}); |
||||
} |
||||
|
||||
$("#upload").on("click", function() { |
||||
getBookmarkList(function(error, list) { |
||||
for (let i = 0; i < list.length; i++) { |
||||
$.ajax({ |
||||
type: "POST", |
||||
url: "http://localhost:3000/bookmarks", |
||||
data: list[i], |
||||
success: function(data) { |
||||
callback(data); |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
}); |
||||
|
||||
$("#download").on("click", function() { |
||||
alert("下载"); |
||||
}); |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
const MongoClient = require('mongodb').MongoClient |
||||
const assert = require('assert') |
||||
const fs = require('fs') |
||||
|
||||
const DATABASE_NAME = 'bookmarksdb' |
||||
const DATABASE_SERVER = '192.168.31.201' |
||||
const DATABASE_PORT = 27017 |
||||
const USER = encodeURIComponent('root'); |
||||
const PASSWORD = encodeURIComponent('root123'); |
||||
const AUTHMECHANISM = 'SCRAM-SHA-1'; |
||||
// const DATABASE_URL = `mongodb://${USER}:${PASSWORD}@${DATABASE_SERVER}:${DATABASE_PORT}/?authMechanism=${AUTHMECHANISM}&authSource=${DATABASE_NAME}`
|
||||
const DATABASE_URL = `mongodb://${DATABASE_SERVER}:${DATABASE_PORT}/${DATABASE_NAME}` |
||||
const COLLECTION = 'bookmarks' |
||||
|
||||
const inertData = (db, callback) => { |
||||
const collection = db.collection('bookmarks') |
||||
let data = [{ |
||||
id: '0', |
||||
title: "根书签" |
||||
}] |
||||
collection.insertMany(data, (error, result) => { |
||||
assert.equal(null, error) |
||||
assert(1, result.result.n) |
||||
assert(1, result.ops.length) |
||||
callback(result) |
||||
}) |
||||
} |
||||
|
||||
exports.connect = ( ) => { |
||||
const client = new MongoClient(DATABASE_URL) |
||||
|
||||
client.connect((error) => { |
||||
assert.equal(null, error) |
||||
const db = client.db(DATABASE_NAME) |
||||
console.log('connect ' + DATABASE_URL + ' successfully') |
||||
inertData(db, result => { |
||||
client.close() |
||||
}) |
||||
}) |
||||
} |
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
const express = require('express'); |
||||
const app = express(); |
||||
const port = 3000; |
||||
|
||||
// const db = require('./db')
|
||||
// db.connect()
|
||||
|
||||
app.use(express.json()) // for parsing application/json
|
||||
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
|
||||
|
||||
app.get('/', (req, res) => { |
||||
res.send('Hello World!') |
||||
}) |
||||
|
||||
app.get('/bookmarks', function (req, res) { |
||||
console.log('download bookmarks') |
||||
res.json({ |
||||
id: '0', |
||||
title: '标题' |
||||
}) |
||||
}) |
||||
|
||||
app.post('/bookmarks', function (req, res) { |
||||
console.log('upload bookmarks') |
||||
console.log(req.body) |
||||
}) |
||||
|
||||
app.listen(port, () => { console.log("server is running at port " + port) }) |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
{ |
||||
"name": "bookmarks-server", |
||||
"version": "1.0.0", |
||||
"main": "index.js", |
||||
"devDependencies": {}, |
||||
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1" |
||||
}, |
||||
"author": "", |
||||
"license": "ISC", |
||||
"description": "", |
||||
"dependencies": { |
||||
"express": "4.17.1", |
||||
"mongodb": "3.5.4" |
||||
} |
||||
} |
@ -0,0 +1,481 @@
@@ -0,0 +1,481 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. |
||||
# yarn lockfile v1 |
||||
|
||||
|
||||
accepts@~1.3.7: |
||||
version "1.3.7" |
||||
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" |
||||
integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== |
||||
dependencies: |
||||
mime-types "~2.1.24" |
||||
negotiator "0.6.2" |
||||
|
||||
array-flatten@1.1.1: |
||||
version "1.1.1" |
||||
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" |
||||
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= |
||||
|
||||
bl@^2.2.0: |
||||
version "2.2.0" |
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493" |
||||
integrity sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA== |
||||
dependencies: |
||||
readable-stream "^2.3.5" |
||||
safe-buffer "^5.1.1" |
||||
|
||||
body-parser@1.19.0: |
||||
version "1.19.0" |
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" |
||||
integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== |
||||
dependencies: |
||||
bytes "3.1.0" |
||||
content-type "~1.0.4" |
||||
debug "2.6.9" |
||||
depd "~1.1.2" |
||||
http-errors "1.7.2" |
||||
iconv-lite "0.4.24" |
||||
on-finished "~2.3.0" |
||||
qs "6.7.0" |
||||
raw-body "2.4.0" |
||||
type-is "~1.6.17" |
||||
|
||||
bson@^1.1.1: |
||||
version "1.1.3" |
||||
resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.3.tgz#aa82cb91f9a453aaa060d6209d0675114a8154d3" |
||||
integrity sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg== |
||||
|
||||
bytes@3.1.0: |
||||
version "3.1.0" |
||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" |
||||
integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== |
||||
|
||||
content-disposition@0.5.3: |
||||
version "0.5.3" |
||||
resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" |
||||
integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== |
||||
dependencies: |
||||
safe-buffer "5.1.2" |
||||
|
||||
content-type@~1.0.4: |
||||
version "1.0.4" |
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" |
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== |
||||
|
||||
cookie-signature@1.0.6: |
||||
version "1.0.6" |
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" |
||||
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= |
||||
|
||||
cookie@0.4.0: |
||||
version "0.4.0" |
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" |
||||
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== |
||||
|
||||
core-util-is@~1.0.0: |
||||
version "1.0.2" |
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" |
||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= |
||||
|
||||
debug@2.6.9: |
||||
version "2.6.9" |
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" |
||||
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== |
||||
dependencies: |
||||
ms "2.0.0" |
||||
|
||||
denque@^1.4.1: |
||||
version "1.4.1" |
||||
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf" |
||||
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ== |
||||
|
||||
depd@~1.1.2: |
||||
version "1.1.2" |
||||
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" |
||||
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= |
||||
|
||||
destroy@~1.0.4: |
||||
version "1.0.4" |
||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" |
||||
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= |
||||
|
||||
ee-first@1.1.1: |
||||
version "1.1.1" |
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" |
||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= |
||||
|
||||
encodeurl@~1.0.2: |
||||
version "1.0.2" |
||||
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" |
||||
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= |
||||
|
||||
escape-html@~1.0.3: |
||||
version "1.0.3" |
||||
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" |
||||
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= |
||||
|
||||
etag@~1.8.1: |
||||
version "1.8.1" |
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" |
||||
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= |
||||
|
||||
express@4.17.1: |
||||
version "4.17.1" |
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" |
||||
integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== |
||||
dependencies: |
||||
accepts "~1.3.7" |
||||
array-flatten "1.1.1" |
||||
body-parser "1.19.0" |
||||
content-disposition "0.5.3" |
||||
content-type "~1.0.4" |
||||
cookie "0.4.0" |
||||
cookie-signature "1.0.6" |
||||
debug "2.6.9" |
||||
depd "~1.1.2" |
||||
encodeurl "~1.0.2" |
||||
escape-html "~1.0.3" |
||||
etag "~1.8.1" |
||||
finalhandler "~1.1.2" |
||||
fresh "0.5.2" |
||||
merge-descriptors "1.0.1" |
||||
methods "~1.1.2" |
||||
on-finished "~2.3.0" |
||||
parseurl "~1.3.3" |
||||
path-to-regexp "0.1.7" |
||||
proxy-addr "~2.0.5" |
||||
qs "6.7.0" |
||||
range-parser "~1.2.1" |
||||
safe-buffer "5.1.2" |
||||
send "0.17.1" |
||||
serve-static "1.14.1" |
||||
setprototypeof "1.1.1" |
||||
statuses "~1.5.0" |
||||
type-is "~1.6.18" |
||||
utils-merge "1.0.1" |
||||
vary "~1.1.2" |
||||
|
||||
finalhandler@~1.1.2: |
||||
version "1.1.2" |
||||
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" |
||||
integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== |
||||
dependencies: |
||||
debug "2.6.9" |
||||
encodeurl "~1.0.2" |
||||
escape-html "~1.0.3" |
||||
on-finished "~2.3.0" |
||||
parseurl "~1.3.3" |
||||
statuses "~1.5.0" |
||||
unpipe "~1.0.0" |
||||
|
||||
forwarded@~0.1.2: |
||||
version "0.1.2" |
||||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" |
||||
integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= |
||||
|
||||
fresh@0.5.2: |
||||
version "0.5.2" |
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" |
||||
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= |
||||
|
||||
http-errors@1.7.2: |
||||
version "1.7.2" |
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" |
||||
integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== |
||||
dependencies: |
||||
depd "~1.1.2" |
||||
inherits "2.0.3" |
||||
setprototypeof "1.1.1" |
||||
statuses ">= 1.5.0 < 2" |
||||
toidentifier "1.0.0" |
||||
|
||||
http-errors@~1.7.2: |
||||
version "1.7.3" |
||||
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" |
||||
integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== |
||||
dependencies: |
||||
depd "~1.1.2" |
||||
inherits "2.0.4" |
||||
setprototypeof "1.1.1" |
||||
statuses ">= 1.5.0 < 2" |
||||
toidentifier "1.0.0" |
||||
|
||||
iconv-lite@0.4.24: |
||||
version "0.4.24" |
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" |
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== |
||||
dependencies: |
||||
safer-buffer ">= 2.1.2 < 3" |
||||
|
||||
inherits@2.0.3: |
||||
version "2.0.3" |
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" |
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= |
||||
|
||||
inherits@2.0.4, inherits@~2.0.3: |
||||
version "2.0.4" |
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" |
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== |
||||
|
||||
ipaddr.js@1.9.1: |
||||
version "1.9.1" |
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" |
||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== |
||||
|
||||
isarray@~1.0.0: |
||||
version "1.0.0" |
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" |
||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= |
||||
|
||||
media-typer@0.3.0: |
||||
version "0.3.0" |
||||
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" |
||||
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= |
||||
|
||||
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== |
||||
|
||||
merge-descriptors@1.0.1: |
||||
version "1.0.1" |
||||
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" |
||||
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= |
||||
|
||||
methods@~1.1.2: |
||||
version "1.1.2" |
||||
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" |
||||
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= |
||||
|
||||
mime-db@1.43.0: |
||||
version "1.43.0" |
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" |
||||
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== |
||||
|
||||
mime-types@~2.1.24: |
||||
version "2.1.26" |
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" |
||||
integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== |
||||
dependencies: |
||||
mime-db "1.43.0" |
||||
|
||||
mime@1.6.0: |
||||
version "1.6.0" |
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" |
||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== |
||||
|
||||
mongodb@3.5.4: |
||||
version "3.5.4" |
||||
resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.5.4.tgz#f7609cfa9f8c56c35e844b4216ddc3a1b1ec5bef" |
||||
integrity sha512-xGH41Ig4dkSH5ROGezkgDbsgt/v5zbNUwE3TcFsSbDc6Qn3Qil17dhLsESSDDPTiyFDCPJRpfd4887dtsPgKtA== |
||||
dependencies: |
||||
bl "^2.2.0" |
||||
bson "^1.1.1" |
||||
denque "^1.4.1" |
||||
require_optional "^1.0.1" |
||||
safe-buffer "^5.1.2" |
||||
optionalDependencies: |
||||
saslprep "^1.0.0" |
||||
|
||||
ms@2.0.0: |
||||
version "2.0.0" |
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" |
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= |
||||
|
||||
ms@2.1.1: |
||||
version "2.1.1" |
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" |
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== |
||||
|
||||
negotiator@0.6.2: |
||||
version "0.6.2" |
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" |
||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== |
||||
|
||||
on-finished@~2.3.0: |
||||
version "2.3.0" |
||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" |
||||
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= |
||||
dependencies: |
||||
ee-first "1.1.1" |
||||
|
||||
parseurl@~1.3.3: |
||||
version "1.3.3" |
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" |
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== |
||||
|
||||
path-to-regexp@0.1.7: |
||||
version "0.1.7" |
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" |
||||
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= |
||||
|
||||
process-nextick-args@~2.0.0: |
||||
version "2.0.1" |
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" |
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== |
||||
|
||||
proxy-addr@~2.0.5: |
||||
version "2.0.6" |
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" |
||||
integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== |
||||
dependencies: |
||||
forwarded "~0.1.2" |
||||
ipaddr.js "1.9.1" |
||||
|
||||
qs@6.7.0: |
||||
version "6.7.0" |
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" |
||||
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== |
||||
|
||||
range-parser@~1.2.1: |
||||
version "1.2.1" |
||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" |
||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== |
||||
|
||||
raw-body@2.4.0: |
||||
version "2.4.0" |
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" |
||||
integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== |
||||
dependencies: |
||||
bytes "3.1.0" |
||||
http-errors "1.7.2" |
||||
iconv-lite "0.4.24" |
||||
unpipe "1.0.0" |
||||
|
||||
readable-stream@^2.3.5: |
||||
version "2.3.7" |
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" |
||||
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== |
||||
dependencies: |
||||
core-util-is "~1.0.0" |
||||
inherits "~2.0.3" |
||||
isarray "~1.0.0" |
||||
process-nextick-args "~2.0.0" |
||||
safe-buffer "~5.1.1" |
||||
string_decoder "~1.1.1" |
||||
util-deprecate "~1.0.1" |
||||
|
||||
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-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= |
||||
|
||||
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: |
||||
version "5.1.2" |
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" |
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== |
||||
|
||||
safe-buffer@^5.1.1, safe-buffer@^5.1.2: |
||||
version "5.2.0" |
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" |
||||
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== |
||||
|
||||
"safer-buffer@>= 2.1.2 < 3": |
||||
version "2.1.2" |
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" |
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== |
||||
|
||||
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" |
||||
|
||||
semver@^5.1.0: |
||||
version "5.7.1" |
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" |
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== |
||||
|
||||
send@0.17.1: |
||||
version "0.17.1" |
||||
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" |
||||
integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== |
||||
dependencies: |
||||
debug "2.6.9" |
||||
depd "~1.1.2" |
||||
destroy "~1.0.4" |
||||
encodeurl "~1.0.2" |
||||
escape-html "~1.0.3" |
||||
etag "~1.8.1" |
||||
fresh "0.5.2" |
||||
http-errors "~1.7.2" |
||||
mime "1.6.0" |
||||
ms "2.1.1" |
||||
on-finished "~2.3.0" |
||||
range-parser "~1.2.1" |
||||
statuses "~1.5.0" |
||||
|
||||
serve-static@1.14.1: |
||||
version "1.14.1" |
||||
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" |
||||
integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== |
||||
dependencies: |
||||
encodeurl "~1.0.2" |
||||
escape-html "~1.0.3" |
||||
parseurl "~1.3.3" |
||||
send "0.17.1" |
||||
|
||||
setprototypeof@1.1.1: |
||||
version "1.1.1" |
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" |
||||
integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== |
||||
|
||||
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" |
||||
|
||||
"statuses@>= 1.5.0 < 2", statuses@~1.5.0: |
||||
version "1.5.0" |
||||
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" |
||||
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= |
||||
|
||||
string_decoder@~1.1.1: |
||||
version "1.1.1" |
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" |
||||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== |
||||
dependencies: |
||||
safe-buffer "~5.1.0" |
||||
|
||||
toidentifier@1.0.0: |
||||
version "1.0.0" |
||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" |
||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== |
||||
|
||||
type-is@~1.6.17, type-is@~1.6.18: |
||||
version "1.6.18" |
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" |
||||
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== |
||||
dependencies: |
||||
media-typer "0.3.0" |
||||
mime-types "~2.1.24" |
||||
|
||||
unpipe@1.0.0, unpipe@~1.0.0: |
||||
version "1.0.0" |
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" |
||||
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= |
||||
|
||||
util-deprecate@~1.0.1: |
||||
version "1.0.2" |
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" |
||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= |
||||
|
||||
utils-merge@1.0.1: |
||||
version "1.0.1" |
||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" |
||||
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= |
||||
|
||||
vary@~1.1.2: |
||||
version "1.1.2" |
||||
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" |
||||
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= |
Loading…
Reference in new issue