mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
Merge branch 'master' of http://github.com/amark/gun
This commit is contained in:
commit
d1dba14713
13
.travis.yml
13
.travis.yml
@ -3,9 +3,10 @@ branches:
|
||||
except:
|
||||
- debug
|
||||
node_js:
|
||||
- 4.0
|
||||
- 4.2
|
||||
- 5.0
|
||||
- 6.8
|
||||
- 7.9
|
||||
- 8.6
|
||||
- 4
|
||||
- 6
|
||||
- 8
|
||||
- 10
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
@ -1,4 +1,4 @@
|
||||
FROM alpine:edge
|
||||
FROM alpine:latest
|
||||
# Build-time metadata as defined at http://label-schema.org
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
|
@ -1,131 +1,178 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Gun plugin for Vue</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
|
||||
<script src="https://unpkg.com/vue"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
This is example of simple Vue plugin. It works exatcly same as the Vue instance data property, but the name is gunData.<br>
|
||||
The cool part is that every property in the gunData is realtime synced via gunDB to every other page viewer!<br>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Vue instance data:
|
||||
<pre>{{ $data }}</pre>
|
||||
</td>
|
||||
<td valign="top" style="text-align:right;">
|
||||
test<br>
|
||||
arr[1]<br>
|
||||
obj.a<br>
|
||||
deepObj.level1.prop<br>
|
||||
deepObj.level1.arr[1]<br>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<input v-model="test"><br>
|
||||
<input v-model="arr[1]"><br>
|
||||
<input v-model="obj.a"><br>
|
||||
<input v-model="deepObj.level1.prop"><br>
|
||||
<input v-model="deepObj.level1.arr[1]"><br>
|
||||
<input v-if="obj.newProp_1" v-model="obj.newProp_1"><br>
|
||||
<br>
|
||||
<button @click="addProp()">Add new prop to obj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<script>
|
||||
Vue.config.productionTip = false;
|
||||
localStorage.clear();
|
||||
var GunData = {
|
||||
install: function(Vue, options) {
|
||||
Vue.$gunData = {
|
||||
gun: Gun(options),
|
||||
arrToGunObj: function(a) {
|
||||
var o = { _isArr: true }, l = a.length;
|
||||
for ( var i=0; i<l; i++ ) if ( a[i] !== undefined ) o[i] = a[i];
|
||||
return o;
|
||||
},
|
||||
addGunWatcher: function (keyPath,val,vm) {
|
||||
// console.log('addGunWatcher',keyPath);
|
||||
this.gun.get(vm.$options.$gunRootKey).path(keyPath)
|
||||
.not(function(){ this.put(typeof val == 'object' && val.constructor === Array ? this.arrToGunObj(val) : val) })
|
||||
.on(function(gunVal,gunKey){
|
||||
if ( typeof gunVal == 'object' ) return; /* only do stuff on non objects */
|
||||
<head>
|
||||
<title>Gun plugin for Vue</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- This example works only with vue 1 -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
|
||||
<script src="https://unpkg.com/vue@1.0.0/dist/vue.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
This is example of simple Vue plugin. It works exatcly same as the Vue instance data property, but the name is gunData.<br>
|
||||
The cool part is that every property in the gunData is realtime synced via gunDB to every other page viewer!<br>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Vue instance data:
|
||||
<pre v-html="prettyJSON($data)"></pre>
|
||||
</td>
|
||||
<td valign="top" style="text-align:right;">
|
||||
test<br>
|
||||
arr[1]<br>
|
||||
obj.a<br>
|
||||
deepObj.level1.prop<br>
|
||||
deepObj.level1.arr[1]<br>
|
||||
</td>
|
||||
<td valign="top">
|
||||
<input v-model="test"><br>
|
||||
<input v-model="arr[1]"><br>
|
||||
<input v-model="obj.a"><br>
|
||||
<input v-model="deepObj.level1.prop"><br>
|
||||
<input v-model="deepObj.level1.arr[1]"><br>
|
||||
<input v-if="obj.newProp_1" v-model="obj.newProp_1"><br>
|
||||
<br>
|
||||
<button @click="addProp()">Add new prop to obj</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<script>
|
||||
Vue.config.productionTip = false;
|
||||
localStorage.clear();
|
||||
var GunData = {
|
||||
install: function (Vue, options) {
|
||||
Vue.$gunData = {
|
||||
gun: Gun(options),
|
||||
arrToGunObj: function (a) {
|
||||
var o = { _isArr: true }, l = a.length;
|
||||
for (var i = 0; i < l; i++) if (a[i] !== undefined) o[i] = a[i];
|
||||
return o;
|
||||
},
|
||||
addGunWatcher: function (keyPath, val, vm) {
|
||||
// console.log('addGunWatcher',keyPath);
|
||||
this.gun.get(vm.$options.$gunRootKey).path(keyPath)
|
||||
.not(function () { this.put(typeof val == 'object' && val.constructor === Array ? this.arrToGunObj(val) : val) })
|
||||
.on(function (gunVal, gunKey) {
|
||||
if (typeof gunVal == 'object') return; /* only do stuff on non objects */
|
||||
var vmPath = vm;
|
||||
for ( var i=0, a=keyPath.split('.'), l=a.length; i<l-1; i++ ) vmPath = vmPath[a[i]];
|
||||
if ( typeof vmPath[gunKey] == 'undefined' ) console.log('EIPÄ OO',gunkey);
|
||||
if ( vmPath[gunKey] !== gunVal ) vm.$set(vmPath,vmPath.constructor === Array?gunKey*1:gunKey,gunVal);
|
||||
},{ change:true });
|
||||
},
|
||||
timeout: { },
|
||||
vueWatcher: { },
|
||||
addVueWatcher: function (keyPath,vm) {
|
||||
// console.log('VUE WATCHER',keyPath,vm.$options.$gunRootKey);
|
||||
this.vueWatcher[keyPath] = vm.$watch(keyPath, function(newVal) {
|
||||
clearTimeout(Vue.$gunData.timeout[vm.$options.$gunRootKey+keyPath]);
|
||||
Vue.$gunData.timeout[vm.$options.$gunRootKey+keyPath] = setTimeout(function(){ Vue.$gunData.gun.get(vm.$options.$gunRootKey).path(keyPath).put(newVal) },500);
|
||||
});
|
||||
},
|
||||
addWatchers: function (obj,keyPath,vm) {
|
||||
if ( keyPath ) keyPath += '.';
|
||||
var o = {}, a = obj, ok = Object.keys(a), l = ok.length, k = '', v = '';
|
||||
for ( var i=0; i<l, k=ok[i], v=a[k]; i++ ) {
|
||||
if ( typeof v == 'object' ) {
|
||||
this.addWatchers(v,keyPath+k,vm);
|
||||
} else {
|
||||
// console.log('add watcher',k,v,keyPath+k);
|
||||
if ( !this.vueWatcher[keyPath+k] ) {
|
||||
Vue.$gunData.addVueWatcher(keyPath+k,vm);
|
||||
Vue.$gunData.addGunWatcher(keyPath+k,v,vm);
|
||||
}
|
||||
for (var i = 0, a = keyPath.split('.'), l = a.length; i < l - 1; i++) vmPath = vmPath[a[i]];
|
||||
if (typeof vmPath[gunKey] == 'undefined') console.log('EIPÄ OO', gunkey);
|
||||
if (vmPath[gunKey] !== gunVal) vm.$set(vmPath, vmPath.constructor === Array ? gunKey * 1 : gunKey, gunVal);
|
||||
}, { change: true });
|
||||
},
|
||||
timeout: {},
|
||||
vueWatcher: {},
|
||||
addVueWatcher: function (keyPath, vm) {
|
||||
// console.log('VUE WATCHER',keyPath,vm.$options.$gunRootKey);
|
||||
this.vueWatcher[keyPath] = vm.$watch(keyPath, function (newVal) {
|
||||
clearTimeout(Vue.$gunData.timeout[vm.$options.$gunRootKey + keyPath]);
|
||||
Vue.$gunData.timeout[vm.$options.$gunRootKey + keyPath] = setTimeout(function () { Vue.$gunData.gun.get(vm.$options.$gunRootKey).path(keyPath).put(newVal) }, 500);
|
||||
});
|
||||
},
|
||||
addWatchers: function (obj, keyPath, vm) {
|
||||
if (keyPath) keyPath += '.';
|
||||
var o = {}, a = obj, ok = Object.keys(a), l = ok.length, k = '', v = '';
|
||||
for (var i = 0; i < l, k = ok[i], v = a[k]; i++) {
|
||||
if (typeof v == 'object') {
|
||||
this.addWatchers(v, keyPath + k, vm);
|
||||
} else {
|
||||
// console.log('add watcher',k,v,keyPath+k);
|
||||
if (!this.vueWatcher[keyPath + k]) {
|
||||
Vue.$gunData.addVueWatcher(keyPath + k, vm);
|
||||
Vue.$gunData.addGunWatcher(keyPath + k, v, vm);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Vue.mixin({
|
||||
data: function() {
|
||||
var o = {}, a = this.$options.gunData;
|
||||
this.$options.$gunRootKey = (a._rootKey || window.location.hostname).replace(/\./g,'-');
|
||||
delete a._rootKey;
|
||||
for ( var k='',v='',i=0,ok=Object.keys(a),l=ok.length; i<l,k=ok[i],v=a[k]; i++ ) o[k] = v;
|
||||
return o;
|
||||
},
|
||||
created: function() {
|
||||
Vue.$gunData.addWatchers(this.$options.gunData,'',this)
|
||||
}
|
||||
});
|
||||
}
|
||||
Vue.mixin({
|
||||
data: function () {
|
||||
var o = {}, a = this.$options.gunData;
|
||||
this.$options.$gunRootKey = (a._rootKey || window.location.hostname).replace(/\./g, '-');
|
||||
delete a._rootKey;
|
||||
for (var k = '', v = '', i = 0, ok = Object.keys(a), l = ok.length; i < l, k = ok[i], v = a[k]; i++) o[k] = v;
|
||||
return o;
|
||||
},
|
||||
created: function () {
|
||||
Vue.$gunData.addWatchers(this.$options.gunData, '', this)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/********************** SIMPLE NODE GUN SERVER EXAMPLE FOR BACKEND **********************/
|
||||
// var http = require('http'), Gun = require('gun');
|
||||
// Gun({ web: http.createServer().listen(8080) });
|
||||
|
||||
|
||||
/********************** MODIFY WITH OUR OWN SERVER ADDRESS **********************/
|
||||
// Vue.use(GunData, 'http://REPLACE.WITH.YOUR.GUN.SERVER:SERVERPORT/gun');
|
||||
}
|
||||
|
||||
new Vue({
|
||||
el: '#app',
|
||||
methods: {
|
||||
addProp () { Vue.set(this.obj,'newProp_'+Object.keys(this.obj).length,'qwerty') }
|
||||
},
|
||||
gunData : {
|
||||
// _rootKey: 'put-your-gunDB-root-key-here', // DEFAULTS TO HOSTNAME
|
||||
test : 'abc',
|
||||
arr : [1,2],
|
||||
obj : { a:1 },
|
||||
deepObj: {
|
||||
level1: {
|
||||
arr : [1,2],
|
||||
prop : 2
|
||||
}
|
||||
/********************** SIMPLE NODE GUN SERVER EXAMPLE FOR BACKEND **********************/
|
||||
// var http = require('http'), Gun = require('gun');
|
||||
// Gun({ web: http.createServer().listen(8080) });
|
||||
|
||||
/********************** MODIFY WITH OUR OWN SERVER ADDRESS **********************/
|
||||
// Vue.use(GunData, 'http://REPLACE.WITH.YOUR.GUN.SERVER:SERVERPORT/gun');
|
||||
|
||||
var inst = new Vue({
|
||||
el: '#app',
|
||||
methods: {
|
||||
addProp() { Vue.set(this.obj, 'newProp_' + Object.keys(this.obj).length, 'qwerty') },
|
||||
// the prettyJSON code is from icebob https://jsfiddle.net/icebob/0mg1v81e/
|
||||
prettyJSON: function (json) {
|
||||
if (json) {
|
||||
json = JSON.stringify(json, undefined, 4);
|
||||
json = json.replace(/&/g, '&').replace(/</g, '<').replace( />/g, '>');
|
||||
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
|
||||
var cls = 'number';
|
||||
if (/^"/.test(match)) {
|
||||
if (/:$/.test(match)) {
|
||||
cls = 'key';
|
||||
} else {
|
||||
cls = 'string';
|
||||
}
|
||||
} else if (/true|false/.test(match)) {
|
||||
cls = 'boolean';
|
||||
} else if (/null/.test(match)) {
|
||||
cls = 'null';
|
||||
}
|
||||
return '<span class="' + cls + '">' + match + '</span>';
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html
|
||||
},
|
||||
gunData: {
|
||||
// _rootKey: 'put-your-gunDB-root-key-here', // DEFAULTS TO HOSTNAME
|
||||
test: 'abc',
|
||||
arr: [1, 2],
|
||||
obj: { a: 1 },
|
||||
deepObj: {
|
||||
level1: {
|
||||
arr: [1, 2],
|
||||
prop: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
pre .string {
|
||||
color: #885800;
|
||||
}
|
||||
|
||||
pre .number {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
pre .boolean {
|
||||
color: magenta;
|
||||
}
|
||||
|
||||
pre .null {
|
||||
color: red;
|
||||
}
|
||||
|
||||
pre .key {
|
||||
color: green;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
|
255
package-lock.json
generated
255
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gun",
|
||||
"version": "0.9.999",
|
||||
"version": "0.9.9993",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -10,9 +10,9 @@
|
||||
"integrity": "sha512-ywlelg2ePNpX4IlN+A3qXySzKBAZmI2ZxMdDL3amJLCTYhYhemYcv6Aa+PTETojUfB+k4z4X4970q/jjSzyLvw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asn1.js": "^4.9.1",
|
||||
"base64url": "^2.0.0",
|
||||
"elliptic": "^6.4.0"
|
||||
"asn1.js": "4.10.1",
|
||||
"base64url": "2.0.0",
|
||||
"elliptic": "6.4.0"
|
||||
}
|
||||
},
|
||||
"@trust/webcrypto": {
|
||||
@ -21,10 +21,10 @@
|
||||
"integrity": "sha512-aix+LOG/3Ku3MzClfVxVH88QbSdIL1HcBQ+gjXL/VnX05uyORf28CaQZOvsoEcCzGnWIVBUNwE2gxLBapWANWw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@trust/keyto": "^0.3.1",
|
||||
"base64url": "^2.0.0",
|
||||
"node-rsa": "^0.4.0",
|
||||
"text-encoding": "^0.6.1"
|
||||
"@trust/keyto": "0.3.2",
|
||||
"base64url": "2.0.0",
|
||||
"node-rsa": "0.4.2",
|
||||
"text-encoding": "0.6.4"
|
||||
}
|
||||
},
|
||||
"accepts": {
|
||||
@ -33,7 +33,7 @@
|
||||
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-types": "~2.1.18",
|
||||
"mime-types": "2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
@ -67,9 +67,9 @@
|
||||
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bn.js": "^4.0.0",
|
||||
"inherits": "^2.0.1",
|
||||
"minimalistic-assert": "^1.0.0"
|
||||
"bn.js": "4.11.8",
|
||||
"inherits": "2.0.3",
|
||||
"minimalistic-assert": "1.0.1"
|
||||
}
|
||||
},
|
||||
"async-limiter": {
|
||||
@ -81,6 +81,7 @@
|
||||
"version": "2.238.1",
|
||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.238.1.tgz",
|
||||
"integrity": "sha1-o1/ewSLtkV2kkIQOiCgzbaW+Tn8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"buffer": "4.9.1",
|
||||
"events": "1.1.1",
|
||||
@ -115,7 +116,8 @@
|
||||
"base64-js": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
|
||||
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw=="
|
||||
"integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
|
||||
"dev": true
|
||||
},
|
||||
"base64id": {
|
||||
"version": "1.0.0",
|
||||
@ -163,15 +165,15 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bytes": "3.0.0",
|
||||
"content-type": "~1.0.4",
|
||||
"content-type": "1.0.4",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~1.1.1",
|
||||
"http-errors": "~1.6.2",
|
||||
"depd": "1.1.2",
|
||||
"http-errors": "1.6.3",
|
||||
"iconv-lite": "0.4.19",
|
||||
"on-finished": "~2.3.0",
|
||||
"on-finished": "2.3.0",
|
||||
"qs": "6.5.1",
|
||||
"raw-body": "2.3.2",
|
||||
"type-is": "~1.6.15"
|
||||
"type-is": "1.6.16"
|
||||
}
|
||||
},
|
||||
"brace-expansion": {
|
||||
@ -180,7 +182,7 @@
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"balanced-match": "1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
@ -200,10 +202,11 @@
|
||||
"version": "4.9.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
|
||||
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-js": "^1.0.2",
|
||||
"ieee754": "^1.1.4",
|
||||
"isarray": "^1.0.0"
|
||||
"base64-js": "1.3.0",
|
||||
"ieee754": "1.1.8",
|
||||
"isarray": "1.0.0"
|
||||
}
|
||||
},
|
||||
"bytes": {
|
||||
@ -311,13 +314,13 @@
|
||||
"integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bn.js": "^4.4.0",
|
||||
"brorand": "^1.0.1",
|
||||
"hash.js": "^1.0.0",
|
||||
"hmac-drbg": "^1.0.0",
|
||||
"inherits": "^2.0.1",
|
||||
"minimalistic-assert": "^1.0.0",
|
||||
"minimalistic-crypto-utils": "^1.0.0"
|
||||
"bn.js": "4.11.8",
|
||||
"brorand": "1.1.0",
|
||||
"hash.js": "1.1.3",
|
||||
"hmac-drbg": "1.0.1",
|
||||
"inherits": "2.0.3",
|
||||
"minimalistic-assert": "1.0.1",
|
||||
"minimalistic-crypto-utils": "1.0.1"
|
||||
}
|
||||
},
|
||||
"encodeurl": {
|
||||
@ -337,7 +340,7 @@
|
||||
"cookie": "0.3.1",
|
||||
"debug": "2.3.3",
|
||||
"engine.io-parser": "1.3.2",
|
||||
"ws": "~1.1.5"
|
||||
"ws": "1.1.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"accepts": {
|
||||
@ -346,7 +349,7 @@
|
||||
"integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-types": "~2.1.11",
|
||||
"mime-types": "2.1.18",
|
||||
"negotiator": "0.6.1"
|
||||
}
|
||||
},
|
||||
@ -377,8 +380,8 @@
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"options": ">=0.0.5",
|
||||
"ultron": "1.0.x"
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -398,7 +401,7 @@
|
||||
"parsejson": "0.0.3",
|
||||
"parseqs": "0.0.5",
|
||||
"parseuri": "0.0.5",
|
||||
"ws": "~1.1.5",
|
||||
"ws": "1.1.5",
|
||||
"xmlhttprequest-ssl": "1.5.3",
|
||||
"yeast": "0.1.2"
|
||||
},
|
||||
@ -430,8 +433,8 @@
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"options": ">=0.0.5",
|
||||
"ultron": "1.0.x"
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -471,7 +474,8 @@
|
||||
"events": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
||||
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
|
||||
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
|
||||
"dev": true
|
||||
},
|
||||
"express": {
|
||||
"version": "4.16.3",
|
||||
@ -479,36 +483,36 @@
|
||||
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"accepts": "~1.3.5",
|
||||
"accepts": "1.3.5",
|
||||
"array-flatten": "1.1.1",
|
||||
"body-parser": "1.18.2",
|
||||
"content-disposition": "0.5.2",
|
||||
"content-type": "~1.0.4",
|
||||
"content-type": "1.0.4",
|
||||
"cookie": "0.3.1",
|
||||
"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",
|
||||
"depd": "1.1.2",
|
||||
"encodeurl": "1.0.2",
|
||||
"escape-html": "1.0.3",
|
||||
"etag": "1.8.1",
|
||||
"finalhandler": "1.1.1",
|
||||
"fresh": "0.5.2",
|
||||
"merge-descriptors": "1.0.1",
|
||||
"methods": "~1.1.2",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"methods": "1.1.2",
|
||||
"on-finished": "2.3.0",
|
||||
"parseurl": "1.3.2",
|
||||
"path-to-regexp": "0.1.7",
|
||||
"proxy-addr": "~2.0.3",
|
||||
"proxy-addr": "2.0.3",
|
||||
"qs": "6.5.1",
|
||||
"range-parser": "~1.2.0",
|
||||
"range-parser": "1.2.0",
|
||||
"safe-buffer": "5.1.1",
|
||||
"send": "0.16.2",
|
||||
"serve-static": "1.13.2",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": "~1.4.0",
|
||||
"type-is": "~1.6.16",
|
||||
"statuses": "1.4.0",
|
||||
"type-is": "1.6.16",
|
||||
"utils-merge": "1.0.1",
|
||||
"vary": "~1.1.2"
|
||||
"vary": "1.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"safe-buffer": {
|
||||
@ -526,12 +530,12 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.6.9",
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"on-finished": "~2.3.0",
|
||||
"parseurl": "~1.3.2",
|
||||
"statuses": "~1.4.0",
|
||||
"unpipe": "~1.0.0"
|
||||
"encodeurl": "1.0.2",
|
||||
"escape-html": "1.0.3",
|
||||
"on-finished": "2.3.0",
|
||||
"parseurl": "1.3.2",
|
||||
"statuses": "1.4.0",
|
||||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
@ -558,12 +562,12 @@
|
||||
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
"fs.realpath": "1.0.0",
|
||||
"inflight": "1.0.6",
|
||||
"inherits": "2.0.3",
|
||||
"minimatch": "3.0.4",
|
||||
"once": "1.4.0",
|
||||
"path-is-absolute": "1.0.1"
|
||||
}
|
||||
},
|
||||
"growl": {
|
||||
@ -607,8 +611,8 @@
|
||||
"integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"minimalistic-assert": "^1.0.0"
|
||||
"inherits": "2.0.3",
|
||||
"minimalistic-assert": "1.0.1"
|
||||
}
|
||||
},
|
||||
"he": {
|
||||
@ -623,9 +627,9 @@
|
||||
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"hash.js": "^1.0.3",
|
||||
"minimalistic-assert": "^1.0.0",
|
||||
"minimalistic-crypto-utils": "^1.0.1"
|
||||
"hash.js": "1.1.3",
|
||||
"minimalistic-assert": "1.0.1",
|
||||
"minimalistic-crypto-utils": "1.0.1"
|
||||
}
|
||||
},
|
||||
"http-errors": {
|
||||
@ -634,10 +638,10 @@
|
||||
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"depd": "~1.1.2",
|
||||
"depd": "1.1.2",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.1.0",
|
||||
"statuses": ">= 1.4.0 < 2"
|
||||
"statuses": "1.4.0"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
@ -649,7 +653,8 @@
|
||||
"ieee754": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz",
|
||||
"integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q="
|
||||
"integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=",
|
||||
"dev": true
|
||||
},
|
||||
"indexof": {
|
||||
"version": "0.0.1",
|
||||
@ -663,8 +668,8 @@
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
"once": "1.4.0",
|
||||
"wrappy": "1.0.2"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
@ -694,12 +699,14 @@
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
|
||||
"dev": true
|
||||
},
|
||||
"jmespath": {
|
||||
"version": "0.15.0",
|
||||
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
|
||||
"integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
|
||||
"integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=",
|
||||
"dev": true
|
||||
},
|
||||
"json3": {
|
||||
"version": "3.3.2",
|
||||
@ -710,7 +717,8 @@
|
||||
"lodash": {
|
||||
"version": "4.17.10",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
|
||||
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
|
||||
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
|
||||
"dev": true
|
||||
},
|
||||
"media-typer": {
|
||||
"version": "0.3.0",
|
||||
@ -748,7 +756,7 @@
|
||||
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mime-db": "~1.33.0"
|
||||
"mime-db": "1.33.0"
|
||||
}
|
||||
},
|
||||
"minimalistic-assert": {
|
||||
@ -769,7 +777,7 @@
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
"brace-expansion": "1.1.11"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
@ -865,7 +873,7 @@
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
"wrappy": "1.0.2"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
@ -880,10 +888,10 @@
|
||||
"integrity": "sha1-4+yr3DQn6vELowviJZAaehGasXM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.4.6",
|
||||
"is-promise": "^2.1.0",
|
||||
"bluebird": "3.5.1",
|
||||
"is-promise": "2.1.0",
|
||||
"platform": "1.3.1",
|
||||
"socket.io-client": "^1.4.5"
|
||||
"socket.io-client": "1.7.4"
|
||||
}
|
||||
},
|
||||
"panic-manager": {
|
||||
@ -892,10 +900,10 @@
|
||||
"integrity": "sha1-0tvHdgIAMsWwEw0QW/vqewZnMh4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"isarray": "^2.0.0",
|
||||
"panic-client": "^1.0.0",
|
||||
"socket.io": "^1.4.8",
|
||||
"socket.io-client": "^1.4.8"
|
||||
"isarray": "2.0.4",
|
||||
"panic-client": "1.0.2",
|
||||
"socket.io": "1.7.4",
|
||||
"socket.io-client": "1.7.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
@ -912,9 +920,9 @@
|
||||
"integrity": "sha512-TcR6M4LaqKjHvAKoAi46w2Y11KPJiMchAEqu00+tlOBxHR8AYvUCBvDLw4+j3MymApVHHWtluOzDaWxEYeGuVw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.3.5",
|
||||
"panic-client": "^1.0.0",
|
||||
"socket.io": "^1.4.5"
|
||||
"bluebird": "3.5.1",
|
||||
"panic-client": "1.0.2",
|
||||
"socket.io": "1.7.4"
|
||||
}
|
||||
},
|
||||
"parsejson": {
|
||||
@ -923,7 +931,7 @@
|
||||
"integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"better-assert": "~1.0.0"
|
||||
"better-assert": "1.0.2"
|
||||
}
|
||||
},
|
||||
"parseqs": {
|
||||
@ -932,7 +940,7 @@
|
||||
"integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"better-assert": "~1.0.0"
|
||||
"better-assert": "1.0.2"
|
||||
}
|
||||
},
|
||||
"parseuri": {
|
||||
@ -941,7 +949,7 @@
|
||||
"integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"better-assert": "~1.0.0"
|
||||
"better-assert": "1.0.2"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
@ -974,14 +982,15 @@
|
||||
"integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"forwarded": "~0.1.2",
|
||||
"forwarded": "0.1.2",
|
||||
"ipaddr.js": "1.6.0"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
|
||||
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
|
||||
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
|
||||
"dev": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.1",
|
||||
@ -992,7 +1001,8 @@
|
||||
"querystring": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
|
||||
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
|
||||
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
|
||||
"dev": true
|
||||
},
|
||||
"range-parser": {
|
||||
"version": "1.2.0",
|
||||
@ -1027,7 +1037,7 @@
|
||||
"depd": "1.1.1",
|
||||
"inherits": "2.0.3",
|
||||
"setprototypeof": "1.0.3",
|
||||
"statuses": ">= 1.3.1 < 2"
|
||||
"statuses": "1.4.0"
|
||||
}
|
||||
},
|
||||
"setprototypeof": {
|
||||
@ -1041,7 +1051,8 @@
|
||||
"sax": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
|
||||
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
|
||||
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=",
|
||||
"dev": true
|
||||
},
|
||||
"send": {
|
||||
"version": "0.16.2",
|
||||
@ -1050,18 +1061,18 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"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",
|
||||
"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.6.2",
|
||||
"http-errors": "1.6.3",
|
||||
"mime": "1.4.1",
|
||||
"ms": "2.0.0",
|
||||
"on-finished": "~2.3.0",
|
||||
"range-parser": "~1.2.0",
|
||||
"statuses": "~1.4.0"
|
||||
"on-finished": "2.3.0",
|
||||
"range-parser": "1.2.0",
|
||||
"statuses": "1.4.0"
|
||||
}
|
||||
},
|
||||
"serve-static": {
|
||||
@ -1070,9 +1081,9 @@
|
||||
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"encodeurl": "~1.0.2",
|
||||
"escape-html": "~1.0.3",
|
||||
"parseurl": "~1.3.2",
|
||||
"encodeurl": "1.0.2",
|
||||
"escape-html": "1.0.3",
|
||||
"parseurl": "1.3.2",
|
||||
"send": "0.16.2"
|
||||
}
|
||||
},
|
||||
@ -1089,7 +1100,7 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "2.3.3",
|
||||
"engine.io": "~1.8.4",
|
||||
"engine.io": "1.8.5",
|
||||
"has-binary": "0.1.7",
|
||||
"object-assign": "4.1.0",
|
||||
"socket.io-adapter": "0.5.0",
|
||||
@ -1151,7 +1162,7 @@
|
||||
"component-bind": "1.0.0",
|
||||
"component-emitter": "1.2.1",
|
||||
"debug": "2.3.3",
|
||||
"engine.io-client": "~1.8.4",
|
||||
"engine.io-client": "1.8.5",
|
||||
"has-binary": "0.1.7",
|
||||
"indexof": "0.0.1",
|
||||
"object-component": "0.0.3",
|
||||
@ -1236,7 +1247,7 @@
|
||||
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"has-flag": "^2.0.0"
|
||||
"has-flag": "2.0.0"
|
||||
}
|
||||
},
|
||||
"text-encoding": {
|
||||
@ -1258,7 +1269,7 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"media-typer": "0.3.0",
|
||||
"mime-types": "~2.1.18"
|
||||
"mime-types": "2.1.18"
|
||||
}
|
||||
},
|
||||
"uglify-js": {
|
||||
@ -1267,8 +1278,8 @@
|
||||
"integrity": "sha512-hS7+TDiqIqvWScCcKRybCQzmMnEzJ4ryl9ErRmW4GFyG48p0/dKZiy/5mVLbsFzU8CCnCgQdxMiJzZythvLzCg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "~2.15.0",
|
||||
"source-map": "~0.6.1"
|
||||
"commander": "2.15.1",
|
||||
"source-map": "0.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
@ -1289,6 +1300,7 @@
|
||||
"version": "0.10.3",
|
||||
"resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
|
||||
"integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"punycode": "1.3.2",
|
||||
"querystring": "0.2.0"
|
||||
@ -1303,7 +1315,8 @@
|
||||
"uuid": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
|
||||
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
|
||||
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
|
||||
"dev": true
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
@ -1322,7 +1335,7 @@
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-5.2.0.tgz",
|
||||
"integrity": "sha512-c18dMeW+PEQdDFzkhDsnBAlS4Z8KGStBQQUcQ5mf7Nf689jyGk0594L+i9RaQuf4gog6SvWLJorz2NfSaqxZ7w==",
|
||||
"requires": {
|
||||
"async-limiter": "~1.0.0"
|
||||
"async-limiter": "1.0.0"
|
||||
}
|
||||
},
|
||||
"wtf-8": {
|
||||
@ -1335,17 +1348,19 @@
|
||||
"version": "0.4.17",
|
||||
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz",
|
||||
"integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sax": ">=0.6.0",
|
||||
"xmlbuilder": "^4.1.0"
|
||||
"sax": "1.2.1",
|
||||
"xmlbuilder": "4.2.1"
|
||||
}
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz",
|
||||
"integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.0.0"
|
||||
"lodash": "4.17.10"
|
||||
}
|
||||
},
|
||||
"xmlhttprequest-ssl": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user