mirror of
https://github.com/balena-io/etcher.git
synced 2025-07-22 10:46:31 +00:00
Merge pull request #2583 from balena-io/add-mixpanel-configs
Customize Mixpanel configs
This commit is contained in:
commit
9077c95cdd
@ -108,7 +108,7 @@ app.run(() => {
|
||||
'\\____/ \\__\\___|_| |_|\\___|_|',
|
||||
'',
|
||||
'Interested in joining the Etcher team?',
|
||||
'Drop us a line at join+etcher@resin.io',
|
||||
'Drop us a line at join+etcher@balena.io',
|
||||
'',
|
||||
`Version = ${packageJSON.version}, Type = ${packageJSON.packageType}`
|
||||
].join('\n'))
|
||||
|
@ -20,22 +20,81 @@ const _ = require('lodash')
|
||||
const resinCorvus = require('resin-corvus/browser')
|
||||
const packageJSON = require('../../../../package.json')
|
||||
const settings = require('../models/settings')
|
||||
const { hasProps } = require('../../../shared/utils')
|
||||
|
||||
const Bluebird = require('bluebird')
|
||||
const request = Bluebird.promisifyAll(require('request'))
|
||||
const sentryToken = settings.get('analyticsSentryToken') ||
|
||||
_.get(packageJSON, [ 'analytics', 'sentry', 'token' ])
|
||||
const mixpanelToken = settings.get('analyticsMixpanelToken') ||
|
||||
_.get(packageJSON, [ 'analytics', 'mixpanel', 'token' ])
|
||||
|
||||
const configUrl = settings.get('configUrl') || 'http://balena.io/etcher/static/config.json'
|
||||
|
||||
const DEFAULT_PROBABILITY = 1
|
||||
|
||||
const services = {
|
||||
sentry: sentryToken,
|
||||
mixpanel: mixpanelToken
|
||||
}
|
||||
resinCorvus.install({
|
||||
services: {
|
||||
sentry: settings.get('analyticsSentryToken') ||
|
||||
_.get(packageJSON, [ 'analytics', 'sentry', 'token' ]),
|
||||
mixpanel: settings.get('analyticsMixpanelToken') ||
|
||||
_.get(packageJSON, [ 'analytics', 'mixpanel', 'token' ])
|
||||
},
|
||||
services,
|
||||
options: {
|
||||
release: packageJSON.version,
|
||||
shouldReport: () => {
|
||||
return settings.get('errorReporting')
|
||||
}
|
||||
},
|
||||
mixpanelDeferred: true
|
||||
}
|
||||
})
|
||||
|
||||
getConfig(configUrl)
|
||||
.then((config) => {
|
||||
resinCorvus.setConfigs({
|
||||
mixpanel: getMixpanelConfig(config)
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* @summary Get etcher configs stored online
|
||||
* @param {String} - url where config.json is stored
|
||||
*/
|
||||
// eslint-disable-next-line
|
||||
function getConfig(url) {
|
||||
return request.getAsync(url, { json: true })
|
||||
.get('body')
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Check that the client is eligible for analytics
|
||||
* @param {Object} - config
|
||||
*/
|
||||
// eslint-disable-next-line
|
||||
function getMixpanelConfig(config) {
|
||||
const probability = config.analytics.mixpanel.probability || DEFAULT_PROBABILITY
|
||||
if (Math.random() > probability) {
|
||||
return validateMixpanelConfig(config.analytics.mixpanel)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Check that config has at least HTTP_PROTOCOL and api_host
|
||||
* @param {Object} - config
|
||||
*/
|
||||
// eslint-disable-next-line
|
||||
function validateMixpanelConfig (config) {
|
||||
/* eslint-disable camelcase */
|
||||
const mixpanelConfig = {
|
||||
api_host: 'https://api.mixpanel.com'
|
||||
}
|
||||
if (hasProps(config, [ 'HTTP_PROTOCOL', 'api_host' ])) {
|
||||
mixpanelConfig.api_host = `${config.HTTP_PROTOCOL}://${config.api_host}`
|
||||
}
|
||||
return mixpanelConfig
|
||||
/* eslint-enable camelcase */
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Log a debug message
|
||||
* @function
|
||||
|
@ -137,3 +137,22 @@ exports.memoize = (func, comparer) => {
|
||||
return state
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Check if obj has one or many specific props
|
||||
* @function
|
||||
* @public
|
||||
*
|
||||
* @param {Object} obj - object
|
||||
* @param {Array<String>} props - properties
|
||||
*
|
||||
* @returns {Boolean}
|
||||
*
|
||||
* @example
|
||||
* const doesIt = hasProps({ foo: 'bar' }, [ 'foo' ]);
|
||||
*/
|
||||
exports.hasProps = (obj, props) => {
|
||||
return _.every(props, (prop) => {
|
||||
return _.has(obj, prop)
|
||||
})
|
||||
}
|
||||
|
357
npm-shrinkwrap.json
generated
357
npm-shrinkwrap.json
generated
@ -2,6 +2,10 @@
|
||||
"name": "balena-etcher",
|
||||
"version": "1.4.8",
|
||||
"dependencies": {
|
||||
"@balena/grid-styled": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@balena/grid-styled/-/grid-styled-3.1.1.tgz"
|
||||
},
|
||||
"@fortawesome/fontawesome-free-webfonts": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free-webfonts/-/fontawesome-free-webfonts-1.0.9.tgz"
|
||||
@ -11,8 +15,8 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.6.51.tgz"
|
||||
},
|
||||
"@types/chart.js": {
|
||||
"version": "2.7.40",
|
||||
"resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.40.tgz"
|
||||
"version": "2.7.41",
|
||||
"resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.41.tgz"
|
||||
},
|
||||
"@types/color": {
|
||||
"version": "2.0.1",
|
||||
@ -35,8 +39,8 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-6.0.1.tgz"
|
||||
},
|
||||
"@types/lodash": {
|
||||
"version": "4.14.117",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.117.tgz"
|
||||
"version": "4.14.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz"
|
||||
},
|
||||
"@types/lodash.frompairs": {
|
||||
"version": "4.0.4",
|
||||
@ -51,12 +55,12 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.3.0.tgz"
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "10.12.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.0.tgz"
|
||||
"version": "10.12.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.12.tgz"
|
||||
},
|
||||
"@types/prop-types": {
|
||||
"version": "15.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.6.tgz"
|
||||
"version": "15.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.7.tgz"
|
||||
},
|
||||
"@types/react": {
|
||||
"version": "16.3.14",
|
||||
@ -75,8 +79,8 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/react-icons/-/react-icons-2.2.6.tgz"
|
||||
},
|
||||
"@types/react-jsonschema-form": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.0.10.tgz"
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.0.12.tgz"
|
||||
},
|
||||
"@types/recompose": {
|
||||
"version": "0.26.5",
|
||||
@ -139,8 +143,8 @@
|
||||
}
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.5.4",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz"
|
||||
"version": "6.6.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz"
|
||||
},
|
||||
"ajv-keywords": {
|
||||
"version": "3.2.0",
|
||||
@ -523,11 +527,6 @@
|
||||
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"arrify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
|
||||
@ -595,8 +594,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"ast-types": {
|
||||
"version": "0.11.6",
|
||||
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.6.tgz",
|
||||
"version": "0.11.7",
|
||||
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"async": {
|
||||
@ -1023,8 +1022,8 @@
|
||||
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
|
||||
"dependencies": {
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1075,8 +1074,8 @@
|
||||
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
|
||||
"dependencies": {
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1085,8 +1084,8 @@
|
||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||
"dependencies": {
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz"
|
||||
},
|
||||
"regenerator-runtime": {
|
||||
"version": "0.11.1",
|
||||
@ -1190,6 +1189,10 @@
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz"
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -1211,13 +1214,13 @@
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.1.tgz"
|
||||
},
|
||||
"bluebird-lst": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.5.tgz",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"bluebird": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -1475,8 +1478,8 @@
|
||||
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz"
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30000898",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000898.tgz",
|
||||
"version": "1.0.30000918",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000918.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"capture-stack-trace": {
|
||||
@ -1951,8 +1954,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"csstype": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.7.tgz"
|
||||
"version": "2.5.8",
|
||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.8.tgz"
|
||||
},
|
||||
"cuint": {
|
||||
"version": "0.2.2",
|
||||
@ -2246,11 +2249,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"del": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
|
||||
@ -2326,8 +2324,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"domelementtype": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz"
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz"
|
||||
},
|
||||
"domhandler": {
|
||||
"version": "2.4.2",
|
||||
@ -2386,8 +2384,8 @@
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "7.10.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.0.tgz",
|
||||
"version": "7.10.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.2.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -2579,8 +2577,8 @@
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"bluebird": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz",
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"debug": {
|
||||
@ -2618,8 +2616,8 @@
|
||||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.81",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.81.tgz",
|
||||
"version": "1.3.90",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.90.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"electron-window": {
|
||||
@ -2652,8 +2650,8 @@
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"tapable": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz",
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -2800,8 +2798,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"globals": {
|
||||
"version": "11.8.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz",
|
||||
"version": "11.9.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
@ -3098,8 +3096,8 @@
|
||||
"resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.2.tgz"
|
||||
},
|
||||
"fastparse": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"fbjs": {
|
||||
@ -3129,9 +3127,24 @@
|
||||
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"through2": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -3156,9 +3169,24 @@
|
||||
"resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"through2": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -3218,8 +3246,8 @@
|
||||
"resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz"
|
||||
},
|
||||
"flat-cache": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"flexboxgrid": {
|
||||
@ -3477,8 +3505,8 @@
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz"
|
||||
},
|
||||
"globby": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"globule": {
|
||||
@ -3508,8 +3536,8 @@
|
||||
"resolved": "https://registry.npmjs.org/gpt/-/gpt-1.0.0.tgz"
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "4.1.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
|
||||
"version": "4.1.15",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz"
|
||||
},
|
||||
"graceful-readlink": {
|
||||
"version": "1.0.1",
|
||||
@ -3524,10 +3552,6 @@
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/graphlibrary/-/graphlibrary-2.2.0.tgz"
|
||||
},
|
||||
"grid-styled": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/grid-styled/-/grid-styled-3.1.1.tgz"
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.3",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
|
||||
@ -3631,8 +3655,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"hash.js": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
|
||||
"version": "1.1.7",
|
||||
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"hawk": {
|
||||
@ -3714,19 +3738,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"html-minifier": {
|
||||
"version": "3.5.20",
|
||||
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz",
|
||||
"version": "3.5.21",
|
||||
"resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.17.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"he": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -4012,8 +4031,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"is-electron": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.1.0.tgz"
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.0.tgz"
|
||||
},
|
||||
"is-electron-renderer": {
|
||||
"version": "2.0.1",
|
||||
@ -4095,16 +4114,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"is-path-cwd": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"is-path-in-cwd": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"is-path-inside": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
|
||||
@ -4522,8 +4531,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz"
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz"
|
||||
},
|
||||
"lzma-native": {
|
||||
"version": "1.5.2",
|
||||
@ -5109,8 +5118,8 @@
|
||||
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz"
|
||||
},
|
||||
"merge": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mermaid": {
|
||||
@ -5133,8 +5142,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"mime": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz",
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mime-db": {
|
||||
@ -5176,14 +5185,14 @@
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz",
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz"
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.1.tgz"
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz"
|
||||
},
|
||||
"mixin-deep": {
|
||||
"version": "1.3.1",
|
||||
@ -5207,8 +5216,8 @@
|
||||
"resolved": "https://registry.npmjs.org/mixpanel/-/mixpanel-0.7.0.tgz"
|
||||
},
|
||||
"mixpanel-browser": {
|
||||
"version": "2.23.0",
|
||||
"resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.23.0.tgz"
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/mixpanel-browser/-/mixpanel-browser-2.24.0.tgz"
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
@ -5226,8 +5235,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"mksnapshot": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz",
|
||||
"version": "0.3.4",
|
||||
"resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.4.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mocha": {
|
||||
@ -5408,8 +5417,8 @@
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"semver": {
|
||||
@ -5420,8 +5429,8 @@
|
||||
}
|
||||
},
|
||||
"node-abi": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.5.tgz",
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz",
|
||||
"dependencies": {
|
||||
"semver": {
|
||||
"version": "5.6.0",
|
||||
@ -5528,8 +5537,8 @@
|
||||
"resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.3.7.tgz"
|
||||
},
|
||||
"node.extend": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.0.tgz",
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.2.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"noop-logger": {
|
||||
@ -5733,8 +5742,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"pako": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"param-case": {
|
||||
@ -5905,8 +5914,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"escodegen": {
|
||||
@ -5929,11 +5938,6 @@
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"globby": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
|
||||
@ -6000,8 +6004,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"expand-template": {
|
||||
@ -6102,8 +6106,8 @@
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz"
|
||||
},
|
||||
"progress": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"progress-bar-formatter": {
|
||||
@ -6172,8 +6176,8 @@
|
||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
|
||||
},
|
||||
"psl": {
|
||||
"version": "1.1.29",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
|
||||
"version": "1.1.31",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"public-encrypt": {
|
||||
@ -6306,16 +6310,16 @@
|
||||
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-2.2.7.tgz"
|
||||
},
|
||||
"react-jsonschema-form": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.0.5.tgz",
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.0.6.tgz",
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz"
|
||||
},
|
||||
"core-js": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz"
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz"
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
@ -6720,8 +6724,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"rendition": {
|
||||
"version": "4.27.3",
|
||||
"resolved": "https://registry.npmjs.org/rendition/-/rendition-4.27.3.tgz",
|
||||
"version": "4.41.1",
|
||||
"resolved": "https://registry.npmjs.org/rendition/-/rendition-4.41.1.tgz",
|
||||
"dependencies": {
|
||||
"uuid": {
|
||||
"version": "3.3.2",
|
||||
@ -6833,8 +6837,8 @@
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz"
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz"
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.1",
|
||||
@ -6897,8 +6901,8 @@
|
||||
}
|
||||
},
|
||||
"resin-corvus": {
|
||||
"version": "1.0.0-beta.31",
|
||||
"resolved": "https://registry.npmjs.org/resin-corvus/-/resin-corvus-1.0.0-beta.31.tgz"
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resin-corvus/-/resin-corvus-2.0.0.tgz"
|
||||
},
|
||||
"resin-device-status": {
|
||||
"version": "1.1.1",
|
||||
@ -7252,8 +7256,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"showdown": {
|
||||
"version": "1.8.7",
|
||||
"resolved": "https://registry.npmjs.org/showdown/-/showdown-1.8.7.tgz",
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.0.tgz",
|
||||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
@ -7366,8 +7370,8 @@
|
||||
}
|
||||
},
|
||||
"slugify": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.1.tgz"
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.4.tgz"
|
||||
},
|
||||
"smart-buffer": {
|
||||
"version": "1.1.15",
|
||||
@ -7468,8 +7472,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"spdx-correct": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz"
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz"
|
||||
},
|
||||
"spdx-exceptions": {
|
||||
"version": "2.2.0",
|
||||
@ -7480,8 +7484,8 @@
|
||||
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz"
|
||||
},
|
||||
"spdx-license-ids": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz"
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz"
|
||||
},
|
||||
"spectron": {
|
||||
"version": "3.7.3",
|
||||
@ -7515,12 +7519,12 @@
|
||||
}
|
||||
},
|
||||
"sprintf-js": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz"
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz"
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.15.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz",
|
||||
"version": "1.15.2",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
|
||||
"dependencies": {
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
@ -7571,6 +7575,11 @@
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -7580,8 +7589,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz"
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
@ -7646,8 +7655,8 @@
|
||||
}
|
||||
},
|
||||
"stylis": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.3.tgz"
|
||||
"version": "3.5.4",
|
||||
"resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz"
|
||||
},
|
||||
"stylis-rule-sheet": {
|
||||
"version": "0.0.10",
|
||||
@ -7690,14 +7699,19 @@
|
||||
"dev": true
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"version": "6.6.0",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.6.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -7766,17 +7780,17 @@
|
||||
"resolved": "https://registry.npmjs.org/tag-hoc/-/tag-hoc-1.0.0.tgz"
|
||||
},
|
||||
"tapable": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz",
|
||||
"version": "0.2.9",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.6",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.6.tgz",
|
||||
"version": "4.4.8",
|
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz",
|
||||
"dependencies": {
|
||||
"yallist": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz"
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -8040,8 +8054,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"ua-parser-js": {
|
||||
"version": "0.7.18",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz"
|
||||
"version": "0.7.19",
|
||||
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz"
|
||||
},
|
||||
"udif": {
|
||||
"version": "0.13.0",
|
||||
@ -8405,15 +8419,10 @@
|
||||
"dev": true
|
||||
},
|
||||
"webdriverio": {
|
||||
"version": "4.14.0",
|
||||
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-4.14.0.tgz",
|
||||
"version": "4.14.1",
|
||||
"resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-4.14.1.tgz",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"ansi-escapes": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
|
||||
@ -8456,11 +8465,6 @@
|
||||
"resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||
@ -8472,8 +8476,8 @@
|
||||
"dev": true
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"has-flag": {
|
||||
@ -8496,11 +8500,6 @@
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"dev": true
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.37.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
|
||||
@ -8840,8 +8839,8 @@
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
|
||||
},
|
||||
"xterm": {
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/xterm/-/xterm-3.8.0.tgz"
|
||||
"version": "3.9.1",
|
||||
"resolved": "https://registry.npmjs.org/xterm/-/xterm-3.9.1.tgz"
|
||||
},
|
||||
"xxhash": {
|
||||
"version": "0.2.4",
|
||||
|
@ -83,11 +83,11 @@
|
||||
"react2angular": "4.0.2",
|
||||
"readable-stream": "2.3.3",
|
||||
"redux": "3.5.2",
|
||||
"rendition": "4.27.3",
|
||||
"rendition": "4.41.1",
|
||||
"request": "2.81.0",
|
||||
"resin-cli-form": "1.4.1",
|
||||
"resin-cli-visuals": "1.4.1",
|
||||
"resin-corvus": "1.0.0-beta.31",
|
||||
"resin-corvus": "2.0.0",
|
||||
"roboto-fontface": "0.9.0",
|
||||
"semver": "5.1.1",
|
||||
"speedometer": "1.0.0",
|
||||
|
Loading…
x
Reference in New Issue
Block a user