diff --git a/.travis.yml b/.travis.yml index f3ddcbba7..9fb198c99 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ sudo: false language: node_js node_js: - - "8" - "10" - "lts/*" - "node" diff --git a/README.md b/README.md index f14be6f75..b8c144fa1 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,6 @@ also add to `config.json` ``` ### Upgrading from version <5.3 -Make sure you're running Node version 10 or later. Please take into account the [v5.3 upgrade notes](https://github.com/solid/node-solid-server/blob/master/CHANGELOG.md#530-upgrade-notes). ### Upgrading from version <5.0 diff --git a/bin/lib/cli-utils.js b/bin/lib/cli-utils.js index 47ee29d45..4526cdb1e 100644 --- a/bin/lib/cli-utils.js +++ b/bin/lib/cli-utils.js @@ -32,7 +32,7 @@ function loadConfig (program, options) { ...options, version: program.version() } - let configFile = argv['configFile'] || './config.json' + const configFile = argv.configFile || './config.json' try { const file = fs.readFileSync(configFile) @@ -42,7 +42,7 @@ function loadConfig (program, options) { argv = { ...config, ...argv } } catch (err) { // If config file was specified, but it doesn't exist, stop with error message - if (typeof argv['configFile'] !== 'undefined') { + if (typeof argv.configFile !== 'undefined') { if (!fs.existsSync(configFile)) { console.log(red(bold('ERR')), 'Config file ' + configFile + ' doesn\'t exist.') process.exit(1) diff --git a/bin/lib/cli.js b/bin/lib/cli.js index 8cae2ceb6..adfd9e9d7 100644 --- a/bin/lib/cli.js +++ b/bin/lib/cli.js @@ -37,4 +37,3 @@ function getVersion () { return version } } - diff --git a/bin/lib/migrateLegacyResources.js b/bin/lib/migrateLegacyResources.js index 82895fb3c..ce78bbe5a 100644 --- a/bin/lib/migrateLegacyResources.js +++ b/bin/lib/migrateLegacyResources.js @@ -20,7 +20,7 @@ module.exports = function (program) { .action(async (opts) => { const verbose = opts.verbose const suffix = opts.suffix || '$.ttl' - let paths = opts.path ? [ opts.path ] : [ 'data', 'config/templates' ] + let paths = opts.path ? [opts.path] : ['data', 'config/templates'] paths = paths.map(path => path.startsWith(Path.sep) ? path : Path.join(process.cwd(), path)) try { for (const path of paths) { diff --git a/bin/lib/options.js b/bin/lib/options.js index d5cd4fc85..0b4ecae44 100644 --- a/bin/lib/options.js +++ b/bin/lib/options.js @@ -312,8 +312,8 @@ module.exports = [ if (!value.match(/^[0-9]+(,[0-9]+)*$/)) { return 'direct-port(s) must be a comma-separated list of integers.' } - let list = value.split(/,/).map(v => parseInt(v)) - let bad = list.find(v => { return v < 1 || v > 65535 }) + const list = value.split(/,/).map(v => parseInt(v)) + const bad = list.find(v => { return v < 1 || v > 65535 }) if (bad.length) { return 'redirect-http-from port(s) ' + bad + ' out of range' } diff --git a/bin/lib/start.js b/bin/lib/start.js index 8bba3262d..d3f213a9c 100644 --- a/bin/lib/start.js +++ b/bin/lib/start.js @@ -44,18 +44,18 @@ module.exports = function (program, server) { function bin (argv, server) { if (!argv.email) { argv.email = { - host: argv['emailHost'], - port: argv['emailPort'], + host: argv.emailHost, + port: argv.emailPort, secure: true, auth: { - user: argv['emailAuthUser'], - pass: argv['emailAuthPass'] + user: argv.emailAuthUser, + pass: argv.emailAuthPass } } - delete argv['emailHost'] - delete argv['emailPort'] - delete argv['emailAuthUser'] - delete argv['emailAuthPass'] + delete argv.emailHost + delete argv.emailPort + delete argv.emailAuthUser + delete argv.emailAuthPass } if (!argv.tokenTypesSupported) { diff --git a/common/js/auth-buttons.js b/common/js/auth-buttons.js index 413a78763..6c38422a3 100644 --- a/common/js/auth-buttons.js +++ b/common/js/auth-buttons.js @@ -1,3 +1,4 @@ +/* global location, alert, solid */ /* Provide functionality for authentication buttons */ (({ auth }) => { @@ -41,7 +42,7 @@ const session = await auth.popupLogin() if (session) { // Make authenticated request to the server to establish a session cookie - const {status} = await auth.fetch(location, { method: 'HEAD' }) + const { status } = await auth.fetch(location, { method: 'HEAD' }) if (status === 401) { alert(`Invalid login.\n\nDid you set ${session.idp} as your OIDC provider in your profile ${session.webId}?`) await auth.logout() diff --git a/common/js/solid.js b/common/js/solid.js index 850b0610a..b186273db 100644 --- a/common/js/solid.js +++ b/common/js/solid.js @@ -267,8 +267,8 @@ // Add the errors in the stack to the DOM this.errors.map((error) => { - let text = document.createTextNode(error) - let paragraph = document.createElement('p') + const text = document.createTextNode(error) + const paragraph = document.createElement('p') paragraph.appendChild(text) this.passwordHelpText.appendChild(paragraph) }) @@ -419,15 +419,15 @@ * @returns {string[]} */ PasswordValidator.prototype.tokenize = function () { - let tokenArray = [] - for (let i in arguments) { + const tokenArray = [] + for (const i in arguments) { tokenArray.push(arguments[i]) } return tokenArray.join(' ').split(' ') } PasswordValidator.prototype.sha1 = function (str) { - let buffer = new TextEncoder('utf-8').encode(str) + const buffer = new TextEncoder('utf-8').encode(str) return crypto.subtle.digest('SHA-1', buffer).then((hash) => { return this.hex(hash) @@ -435,13 +435,13 @@ } PasswordValidator.prototype.hex = function (buffer) { - let hexCodes = [] - let view = new DataView(buffer) + const hexCodes = [] + const view = new DataView(buffer) for (let i = 0; i < view.byteLength; i += 4) { - let value = view.getUint32(i) - let stringValue = value.toString(16) + const value = view.getUint32(i) + const stringValue = value.toString(16) const padding = '00000000' - let paddedValue = (padding + stringValue).slice(-padding.length) + const paddedValue = (padding + stringValue).slice(-padding.length) hexCodes.push(paddedValue) } return hexCodes.join('') diff --git a/config/defaults.js b/config/defaults.js index 92b4ef70e..6382305f4 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -1,19 +1,19 @@ 'use strict' module.exports = { - 'auth': 'oidc', - 'localAuth': { - 'tls': true, - 'password': true + auth: 'oidc', + localAuth: { + tls: true, + password: true }, - 'configPath': './config', - 'dbPath': './.db', - 'port': 8443, - 'serverUri': 'https://localhost:8443', - 'webid': true, - 'strictOrigin': true, - 'trustedOrigins': [], - 'dataBrowserPath': 'default' + configPath: './config', + dbPath: './.db', + port: 8443, + serverUri: 'https://localhost:8443', + webid: true, + strictOrigin: true, + trustedOrigins: [], + dataBrowserPath: 'default' // For use in Enterprises to configure a HTTP proxy for all outbound HTTP requests from the SOLID server (we use // https://www.npmjs.com/package/global-tunnel-ng). diff --git a/lib/acl-checker.js b/lib/acl-checker.js index 62f6b277f..0314fc62c 100644 --- a/lib/acl-checker.js +++ b/lib/acl-checker.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const rdf = require('rdflib') const debug = require('./debug').ACL @@ -139,7 +140,7 @@ class ACLChecker { // Gets all possible ACL paths that apply to the resource getPossibleACLs () { // Obtain the resource URI and the length of its base - let { resource: uri, suffix } = this + const { resource: uri, suffix } = this const [{ length: base }] = uri.match(/^[^:]+:\/*[^/]+/) // If the URI points to a file, append the file's ACL @@ -174,7 +175,7 @@ class ACLChecker { suffix: ldp.suffixAcl, strictOrigin: ldp.strictOrigin, trustedOrigins, - slug: decodeURIComponent(req.headers['slug']) + slug: decodeURIComponent(req.headers.slug) }) } } @@ -200,7 +201,7 @@ function fetchLocalOrRemote (mapper, serverUri) { throw new HTTPError(404, err) } // Read the file from disk - body = await promisify(fs.readFile)(path, { 'encoding': 'utf8' }) + body = await promisify(fs.readFile)(path, { encoding: 'utf8' }) } else { // Fetch the acl from the internet const response = await httpFetch(url) diff --git a/lib/api/accounts/user-accounts.js b/lib/api/accounts/user-accounts.js index 2d58631cd..88acda610 100644 --- a/lib/api/accounts/user-accounts.js +++ b/lib/api/accounts/user-accounts.js @@ -21,7 +21,7 @@ const DeleteAccountConfirmRequest = require('../../requests/delete-account-confi */ function checkAccountExists (accountManager) { return (req, res, next) => { - let accountUri = req.hostname + const accountUri = req.hostname accountManager.accountUriExists(accountUri) .then(found => { @@ -63,7 +63,7 @@ function newCertificate (accountManager) { * @return {Router} */ function middleware (accountManager) { - let router = express.Router('/') + const router = express.Router('/') router.get('/', checkAccountExists(accountManager)) diff --git a/lib/api/authn/webid-oidc.js b/lib/api/authn/webid-oidc.js index 2d69834e0..15c208a04 100644 --- a/lib/api/authn/webid-oidc.js +++ b/lib/api/authn/webid-oidc.js @@ -55,7 +55,7 @@ function initialize (app, argv) { next() }) .catch(err => { - let error = new Error('Could not verify Web ID from token claims') + const error = new Error('Could not verify Web ID from token claims') error.statusCode = 401 error.statusText = 'Invalid login' error.cause = err @@ -118,7 +118,7 @@ function middleware (oidc) { // router.post('/token', token.bind(provider)) // router.get('/userinfo', userinfo.bind(provider)) // router.get('/logout', logout.bind(provider)) - let oidcProviderApi = require('oidc-op-express')(oidc.provider) + const oidcProviderApi = require('oidc-op-express')(oidc.provider) router.use('/', oidcProviderApi) return router @@ -133,9 +133,9 @@ function middleware (oidc) { * @param err {Error} */ function setAuthenticateHeader (req, res, err) { - let locals = req.app.locals + const locals = req.app.locals - let errorParams = { + const errorParams = { realm: locals.host.serverUri, scope: 'openid webid', error: err.error, @@ -143,7 +143,7 @@ function setAuthenticateHeader (req, res, err) { error_uri: err.error_uri } - let challengeParams = Object.keys(errorParams) + const challengeParams = Object.keys(errorParams) .filter(key => !!errorParams[key]) .map(key => `${key}="${errorParams[key]}"`) .join(', ') @@ -176,12 +176,12 @@ function statusCodeOverride (statusCode, req) { * @returns {boolean} */ function isEmptyToken (req) { - let header = req.get('Authorization') + const header = req.get('Authorization') if (!header) { return false } if (header.startsWith('Bearer')) { - let fragments = header.split(' ') + const fragments = header.split(' ') if (fragments.length === 1) { return true diff --git a/lib/api/authn/webid-tls.js b/lib/api/authn/webid-tls.js index 6ff6983dd..583fede6d 100644 --- a/lib/api/authn/webid-tls.js +++ b/lib/api/authn/webid-tls.js @@ -56,7 +56,7 @@ function setEmptySession (req) { * @param res {ServerResponse} */ function setAuthenticateHeader (req, res) { - let locals = req.app.locals + const locals = req.app.locals res.set('WWW-Authenticate', `WebID-TLS realm="${locals.host.serverUri}"`) } diff --git a/lib/common/template-utils.js b/lib/common/template-utils.js index afb6f05e8..435e39dd1 100644 --- a/lib/common/template-utils.js +++ b/lib/common/template-utils.js @@ -48,4 +48,3 @@ function writeTemplate (filePath, template, substitutions) { const source = template(substitutions) writeFile(filePath, source) } - diff --git a/lib/create-app.js b/lib/create-app.js index 836dc3caf..a9b9b7b83 100644 --- a/lib/create-app.js +++ b/lib/create-app.js @@ -67,7 +67,7 @@ function createApp (argv = {}) { // Serve the public 'common' directory (for shared CSS files, etc) app.use('/common', express.static(path.join(__dirname, '../common'))) - app.use('/', express.static(path.dirname(require.resolve('mashlib/dist/index.html')), { index: false })) + app.use('/', express.static(path.dirname(require.resolve('mashlib/dist/databrowser.html')), { index: false })) routeResolvedFile(app, '/common/js/', 'solid-auth-client/dist-lib/solid-auth-client.bundle.js') routeResolvedFile(app, '/common/js/', 'solid-auth-client/dist-lib/solid-auth-client.bundle.js.map') app.use('/.well-known', express.static(path.join(__dirname, '../common/well-known'))) @@ -132,7 +132,7 @@ function createApp (argv = {}) { */ function initAppLocals (app, argv, ldp) { app.locals.ldp = ldp - app.locals.appUrls = argv.apps // used for service capability discovery + app.locals.appUrls = argv.apps // used for service capability discovery app.locals.host = argv.host app.locals.authMethod = argv.auth app.locals.localAuth = argv.localAuth @@ -237,7 +237,7 @@ function initWebId (argv, app, ldp) { next() }) - let accountManager = AccountManager.from({ + const accountManager = AccountManager.from({ authMethod: argv.auth, emailService: app.locals.emailService, tokenService: app.locals.tokenService, @@ -295,7 +295,7 @@ function initAuthentication (app, argv) { * @return {Object} `express-session` settings object */ function sessionSettings (secureCookies, host) { - let sessionSettings = { + const sessionSettings = { name: 'nssidp.sid', secret: uuid.v1(), saveUninitialized: false, diff --git a/lib/create-server.js b/lib/create-server.js index 33411f047..d650fe45a 100644 --- a/lib/create-server.js +++ b/lib/create-server.js @@ -82,14 +82,14 @@ function createServer (argv, app) { // Look for port or list of ports to redirect to argv.port if ('redirectHttpFrom' in argv) { const redirectHttpFroms = argv.redirectHttpFrom.constructor === Array - ? argv.redirectHttpFrom - : [argv.redirectHttpFrom] + ? argv.redirectHttpFrom + : [argv.redirectHttpFrom] const portStr = argv.port === 443 ? '' : ':' + argv.port redirectHttpFroms.forEach(redirectHttpFrom => { debug.settings('will redirect from port ' + redirectHttpFrom + ' to port ' + argv.port) - let redirectingServer = express() + const redirectingServer = express() redirectingServer.get('*', function (req, res) { - let host = req.headers.host.split(':') // ignore port + const host = req.headers.host.split(':') // ignore port debug.server(host, '=> https://' + host + portStr + req.url) res.redirect('https://' + host + portStr + req.url) }) diff --git a/lib/handlers/allow.js b/lib/handlers/allow.js index 6e6a68c9c..808da8f6d 100644 --- a/lib/handlers/allow.js +++ b/lib/handlers/allow.js @@ -39,7 +39,7 @@ function allow (mode, checkPermissionsForDirectory) { resourcePath += '/' } - let trustedOrigins = [ldp.resourceMapper.resolveUrl(req.hostname)].concat(ldp.trustedOrigins) + const trustedOrigins = [ldp.resourceMapper.resolveUrl(req.hostname)].concat(ldp.trustedOrigins) if (ldp.multiuser) { trustedOrigins.push(ldp.serverUri) } diff --git a/lib/handlers/auth-proxy.js b/lib/handlers/auth-proxy.js index 3c8a88eb4..b78958543 100644 --- a/lib/handlers/auth-proxy.js +++ b/lib/handlers/auth-proxy.js @@ -2,7 +2,7 @@ // that sends a logged-in Solid user's details to a backend module.exports = addAuthProxyHandlers -const createProxy = require('http-proxy-middleware') +const { createProxyMiddleware } = require('http-proxy-middleware') const debug = require('../debug') const allow = require('./allow') @@ -38,8 +38,8 @@ function addAuthProxyHandler (app, sourcePath, target) { }, PROXY_SETTINGS) // Activate the proxy - const proxy = createProxy(settings) - for (let action in REQUIRED_PERMISSIONS) { + const proxy = createProxyMiddleware(settings) + for (const action in REQUIRED_PERMISSIONS) { const permissions = REQUIRED_PERMISSIONS[action] app[action](`${sourcePath}*`, setOriginalUrl, ...permissions.map(allow), proxy) } diff --git a/lib/handlers/copy.js b/lib/handlers/copy.js index 4c0012616..5d18c4b4a 100644 --- a/lib/handlers/copy.js +++ b/lib/handlers/copy.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api */ + module.exports = handler const debug = require('../debug') @@ -26,8 +28,8 @@ async function handler (req, res, next) { try { await ldpCopy(ldp.resourceMapper, copyToUrl, copyFromUrl) } catch (err) { - let statusCode = err.statusCode || 500 - let errorMessage = err.statusMessage || err.message + const statusCode = err.statusCode || 500 + const errorMessage = err.statusMessage || err.message debug.handlers('Error with COPY request:' + errorMessage) return next(error(statusCode, errorMessage)) } diff --git a/lib/handlers/cors-proxy.js b/lib/handlers/cors-proxy.js index 74784a5f4..8b8ab330c 100644 --- a/lib/handlers/cors-proxy.js +++ b/lib/handlers/cors-proxy.js @@ -1,6 +1,8 @@ +/* eslint-disable node/no-deprecated-api */ + module.exports = addCorsProxyHandler -const proxy = require('http-proxy-middleware') +const { createProxyMiddleware } = require('http-proxy-middleware') const cors = require('cors') const debug = require('../debug') const url = require('url') @@ -26,39 +28,39 @@ const PROXY_SETTINGS = { } // https://en.wikipedia.org/wiki/Reserved_IP_addresses const RESERVED_IP_RANGES = [ - '127.0.0.0/8', // loopback - '::1/128', // loopback - '0.0.0.0/8', // current network (only valid as source address) - '169.254.0.0/16', // link-local - '10.0.0.0/8', // private network - '100.64.0.0/10', // Shared Address Space - '172.16.0.0/12', // private network - '192.0.0.0/24', // IETF Protocol Assignments - '192.0.2.0/24', // TEST-NET-1, documentation and examples - '192.88.99.0/24', // IPv6 to IPv4 relay (includes 2002::/16) - '192.168.0.0/16', // private network - '198.18.0.0/15', // network benchmark tests + '127.0.0.0/8', // loopback + '::1/128', // loopback + '0.0.0.0/8', // current network (only valid as source address) + '169.254.0.0/16', // link-local + '10.0.0.0/8', // private network + '100.64.0.0/10', // Shared Address Space + '172.16.0.0/12', // private network + '192.0.0.0/24', // IETF Protocol Assignments + '192.0.2.0/24', // TEST-NET-1, documentation and examples + '192.88.99.0/24', // IPv6 to IPv4 relay (includes 2002::/16) + '192.168.0.0/16', // private network + '198.18.0.0/15', // network benchmark tests '198.51.100.0/24', // TEST-NET-2, documentation and examples - '203.0.113.0/24', // TEST-NET-3, documentation and examples - '224.0.0.0/4', // IP multicast (former Class D network) - '240.0.0.0/4', // reserved (former Class E network) + '203.0.113.0/24', // TEST-NET-3, documentation and examples + '224.0.0.0/4', // IP multicast (former Class D network) + '240.0.0.0/4', // reserved (former Class E network) '255.255.255.255', // broadcast - '64:ff9b::/96', // IPv4/IPv6 translation (RFC 6052) - '100::/64', // discard prefix (RFC 6666) - '2001::/32', // Teredo tunneling - '2001:10::/28', // deprecated (previously ORCHID - '2001:20::/28', // ORCHIDv2 - '2001:db8::/32', // documentation and example source code - '2002::/16', // 6to4 - 'fc00::/7', // unique local address - 'fe80::/10', // link-local address - 'ff00::/8' // multicast + '64:ff9b::/96', // IPv4/IPv6 translation (RFC 6052) + '100::/64', // discard prefix (RFC 6666) + '2001::/32', // Teredo tunneling + '2001:10::/28', // deprecated (previously ORCHID + '2001:20::/28', // ORCHIDv2 + '2001:db8::/32', // documentation and example source code + '2002::/16', // 6to4 + 'fc00::/7', // unique local address + 'fe80::/10', // link-local address + 'ff00::/8' // multicast ] // Adds a CORS proxy handler to the application on the given path function addCorsProxyHandler (app, path) { const corsHandler = cors(CORS_SETTINGS) - const proxyHandler = proxy(PROXY_SETTINGS) + const proxyHandler = createProxyMiddleware(PROXY_SETTINGS) debug.settings(`CORS proxy listening at ${path}?uri={uri}`) app.get(path, extractProxyConfig, corsHandler, proxyHandler) diff --git a/lib/handlers/error-pages.js b/lib/handlers/error-pages.js index 413445dfe..ba7972bf3 100644 --- a/lib/handlers/error-pages.js +++ b/lib/handlers/error-pages.js @@ -14,9 +14,9 @@ const Auth = require('../api/authn') function handler (err, req, res, next) { debug('Error page because of:', err) - let locals = req.app.locals - let authMethod = locals.authMethod - let ldp = locals.ldp + const locals = req.app.locals + const authMethod = locals.authMethod + const ldp = locals.ldp // If the user specifies this function, // they can customize the error programmatically @@ -71,8 +71,8 @@ function statusCodeFor (err, req, authMethod) { * @param err {Error} */ function setAuthenticateHeader (req, res, err) { - let locals = req.app.locals - let authMethod = locals.authMethod + const locals = req.app.locals + const authMethod = locals.authMethod switch (authMethod) { case 'oidc': @@ -108,7 +108,7 @@ function sendErrorResponse (statusCode, res, err) { * @param ldp {LDP} */ function sendErrorPage (statusCode, res, err, ldp) { - let errorPage = ldp.errorPages + statusCode.toString() + '.html' + const errorPage = ldp.errorPages + statusCode.toString() + '.html' return new Promise((resolve) => { fs.readFile(errorPage, 'utf8', (readErr, text) => { diff --git a/lib/handlers/get.js b/lib/handlers/get.js index 5380e4773..f4aed8eeb 100644 --- a/lib/handlers/get.js +++ b/lib/handlers/get.js @@ -1,3 +1,5 @@ +/* eslint-disable no-mixed-operators, no-async-promise-executor */ + module.exports = handler const fs = require('fs') @@ -23,7 +25,7 @@ async function handler (req, res, next) { const baseUri = ldp.resourceMapper.resolveUrl(req.hostname, req.path) const path = res.locals.path || req.path const requestedType = negotiator.mediaType() - let possibleRDFType = negotiator.mediaType(RDFs) + const possibleRDFType = negotiator.mediaType(RDFs) res.header('MS-Author-Via', 'SPARQL') @@ -35,12 +37,12 @@ async function handler (req, res, next) { debug(req.originalUrl + ' on ' + req.hostname) const options = { - 'hostname': req.hostname, - 'path': path, - 'includeBody': includeBody, - 'possibleRDFType': possibleRDFType, - 'range': req.headers.range, - 'contentType': req.headers.accept + hostname: req.hostname, + path: path, + includeBody: includeBody, + possibleRDFType: possibleRDFType, + range: req.headers.range, + contentType: req.headers.accept } let ret @@ -81,15 +83,15 @@ async function handler (req, res, next) { // Handle dataBrowser if (requestedType && requestedType.includes('text/html')) { const { path: filename } = await ldp.resourceMapper.mapUrlToFile({ url: options }) - let mimeTypeByExt = mime.lookup(_path.basename(filename)) - let isHtmlResource = mimeTypeByExt && mimeTypeByExt.includes('html') - let useDataBrowser = ldp.dataBrowserPath && ( + const mimeTypeByExt = mime.lookup(_path.basename(filename)) + const isHtmlResource = mimeTypeByExt && mimeTypeByExt.includes('html') + const useDataBrowser = ldp.dataBrowserPath && ( container || RDFs.includes(contentType) && !isHtmlResource && !ldp.suppressDataBrowser) if (useDataBrowser) { res.set('Content-Type', 'text/html') - const defaultDataBrowser = require.resolve('mashlib/dist/index.html') + const defaultDataBrowser = require.resolve('mashlib/dist/databrowser.html') const dataBrowserPath = ldp.dataBrowserPath === 'default' ? defaultDataBrowser : ldp.dataBrowserPath debug(' sending data browser file: ' + dataBrowserPath) res.sendFile(dataBrowserPath) @@ -163,7 +165,7 @@ async function globHandler (req, res, next) { debugGlob('found matches ' + matches) await Promise.all(matches.map(match => new Promise(async (resolve, reject) => { const urlData = await ldp.resourceMapper.mapFileToUrl({ path: match, hostname: req.hostname }) - fs.readFile(match, {encoding: 'utf8'}, function (err, fileData) { + fs.readFile(match, { encoding: 'utf8' }, function (err, fileData) { if (err) { debugGlob('error ' + err) return resolve() @@ -201,11 +203,17 @@ function hasReadPermissions (file, req, res, callback) { const ldp = req.app.locals.ldp if (!ldp.webid) { + // FIXME: what is the rule that causes + // "Unexpected literal in error position of callback" in `npm run standard`? + // eslint-disable-next-line return callback(true) } const root = ldp.resourceMapper.resolveFilePath(req.hostname) const relativePath = '/' + _path.relative(root, file) res.locals.path = relativePath + // FIXME: what is the rule that causes + // "Unexpected literal in error position of callback" in `npm run standard`? + // eslint-disable-next-line allow('Read')(req, res, err => callback(!err)) } diff --git a/lib/handlers/index.js b/lib/handlers/index.js index 93c99a437..f2883ca8f 100644 --- a/lib/handlers/index.js +++ b/lib/handlers/index.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api */ + module.exports = handler const path = require('path') diff --git a/lib/handlers/options.js b/lib/handlers/options.js index f658f2c8b..def5dfc4d 100644 --- a/lib/handlers/options.js +++ b/lib/handlers/options.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api */ + const addLink = require('../header').addLink const url = require('url') @@ -14,15 +16,15 @@ function handler (req, res, next) { } function linkAuthProvider (req, res) { - let locals = req.app.locals + const locals = req.app.locals if (locals.authMethod === 'oidc') { - let oidcProviderUri = locals.host.serverUri + const oidcProviderUri = locals.host.serverUri addLink(res, oidcProviderUri, 'http://openid.net/specs/connect/1.0/issuer') } } function linkServiceEndpoint (req, res) { - let serviceEndpoint = url.resolve(req.app.locals.ldp.resourceMapper.resolveUrl(req.hostname, req.path), '.well-known/solid') + const serviceEndpoint = url.resolve(req.app.locals.ldp.resourceMapper.resolveUrl(req.hostname, req.path), '.well-known/solid') addLink(res, serviceEndpoint, 'service') } diff --git a/lib/handlers/patch.js b/lib/handlers/patch.js index 194d8de3c..fd4e60162 100644 --- a/lib/handlers/patch.js +++ b/lib/handlers/patch.js @@ -105,17 +105,17 @@ function readGraph (resource) { }) ) // Parse the resource's file contents - .then((fileContents) => { - const graph = $rdf.graph() - debug('PATCH -- Reading %s with content type %s', resource.url, resource.contentType) - try { - $rdf.parse(fileContents, graph, resource.url, resource.contentType) - } catch (err) { - throw error(500, `Patch: Target ${resource.contentType} file syntax error: ${err}`) - } - debug('PATCH -- Parsed target file') - return graph - }) + .then((fileContents) => { + const graph = $rdf.graph() + debug('PATCH -- Reading %s with content type %s', resource.url, resource.contentType) + try { + $rdf.parse(fileContents, graph, resource.url, resource.contentType) + } catch (err) { + throw error(500, `Patch: Target ${resource.contentType} file syntax error: ${err}`) + } + debug('PATCH -- Parsed target file') + return graph + }) } // Verifies whether the user is allowed to perform the patch on the target diff --git a/lib/handlers/patch/n3-patch-parser.js b/lib/handlers/patch/n3-patch-parser.js index 6f297b6cb..3ac0a98cb 100644 --- a/lib/handlers/patch/n3-patch-parser.js +++ b/lib/handlers/patch/n3-patch-parser.js @@ -33,11 +33,11 @@ async function parsePatchDocument (targetURI, patchURI, patchText) { } // Return the insertions and deletions as an rdflib patch document - const {'?insert': insert, '?delete': deleted, '?where': where} = firstResult + const { '?insert': insert, '?delete': deleted, '?where': where } = firstResult if (!insert && !deleted) { throw error(400, 'Patch should at least contain inserts or deletes.') } - return {insert, delete: deleted, where} + return { insert, delete: deleted, where } } // Queries the store with the given SPARQL query and returns the first result diff --git a/lib/header.js b/lib/header.js index eeb8ff61a..0dbf8bca9 100644 --- a/lib/header.js +++ b/lib/header.js @@ -62,7 +62,7 @@ async function linksHandler (req, res, next) { return next(error(404, 'Trying to access metadata file as regular file')) } - let fileMetadata = new metadata.Metadata() + const fileMetadata = new metadata.Metadata() if (filename.endsWith('/')) { fileMetadata.isContainer = true fileMetadata.isBasicContainer = true @@ -82,15 +82,15 @@ async function linksHandler (req, res, next) { } function parseMetadataFromHeader (linkHeader) { - let fileMetadata = new metadata.Metadata() + const fileMetadata = new metadata.Metadata() if (linkHeader === undefined) { return fileMetadata } const links = linkHeader.split(',') - for (let linkIndex in links) { + for (const linkIndex in links) { const link = links[linkIndex] const parsedLinks = li.parse(link) - for (let rel in parsedLinks) { + for (const rel in parsedLinks) { if (rel === 'type') { if (parsedLinks[rel] === 'http://www.w3.org/ns/ldp#Resource') { fileMetadata.isResource = true diff --git a/lib/ldp-container.js b/lib/ldp-container.js index 4f727e6fe..b5e77e2f1 100644 --- a/lib/ldp-container.js +++ b/lib/ldp-container.js @@ -39,7 +39,7 @@ async function addFile (ldp, resourceGraph, containerUri, reqUri, container, fil } catch (e) { return null } - let memberUri = reqUri + (stats.isDirectory() ? '/' : '') + const memberUri = reqUri + (stats.isDirectory() ? '/' : '') // Add fileStats to resource Graph addStats(resourceGraph, memberUri, stats, file) @@ -109,7 +109,7 @@ async function addFile (ldp, resourceGraph, containerUri, reqUri, container, fil function addStats (resourceGraph, reqUri, stats, filename) { resourceGraph.add( resourceGraph.sym(reqUri), - ns.stat('mtime'), // Deprecate? + ns.stat('mtime'), // Deprecate? stats.mtime.getTime() / 1000) resourceGraph.add( @@ -123,7 +123,7 @@ function addStats (resourceGraph, reqUri, stats, filename) { stats.size) if (!reqUri.endsWith('/') && mime.lookup(filename)) { // Is the file has a well-known type, - let type = 'http://www.w3.org/ns/iana/media-types/' + mime.lookup(filename) + '#Resource' + const type = 'http://www.w3.org/ns/iana/media-types/' + mime.lookup(filename) + '#Resource' resourceGraph.add( resourceGraph.sym(reqUri), ns.rdf('type'), // convert MIME type to RDF diff --git a/lib/ldp-copy.js b/lib/ldp-copy.js index c9ebad372..bb61ce612 100644 --- a/lib/ldp-copy.js +++ b/lib/ldp-copy.js @@ -16,7 +16,7 @@ const getContentType = require('./utils').getContentType * @param stream {WriteStream} */ function cleanupFileStream (stream) { - let streamPath = stream.path + const streamPath = stream.path stream.destroy() fs.unlinkSync(streamPath) } @@ -41,7 +41,7 @@ function copy (resourceMapper, copyToUri, copyFromUri) { if (response.statusCode !== 200) { debug.handlers('COPY -- HTTP error reading source file: ' + response.statusMessage) this.end() - let error = new Error('Error reading source file: ' + response.statusMessage) + const error = new Error('Error reading source file: ' + response.statusMessage) error.statusCode = response.statusCode return reject(error) } diff --git a/lib/ldp.js b/lib/ldp.js index d0de28971..d67f291a2 100644 --- a/lib/ldp.js +++ b/lib/ldp.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api */ + const { join, dirname } = require('path') const intoStream = require('into-stream') const url = require('url') @@ -22,15 +24,15 @@ const withLock = require('./lock') const utilPath = require('path') const RDF_MIME_TYPES = new Set([ - 'text/turtle', // .ttl - 'text/n3', // .n3 - 'text/html', // RDFa - 'application/xhtml+xml', // RDFa + 'text/turtle', // .ttl + 'text/n3', // .n3 + 'text/html', // RDFa + 'application/xhtml+xml', // RDFa 'application/n3', 'application/nquads', 'application/n-quads', - 'application/rdf+xml', // .rdf - 'application/ld+json', // .jsonld + 'application/rdf+xml', // .rdf + 'application/ld+json', // .jsonld 'application/x-turtle' ]) @@ -67,7 +69,7 @@ class LDP { this.skin = true } - if (this.corsProxy && this.corsProxy[ 0 ] !== '/') { + if (this.corsProxy && this.corsProxy[0] !== '/') { this.corsProxy = '/' + this.corsProxy } @@ -86,14 +88,14 @@ class LDP { async readResource (url) { try { const { path } = await this.resourceMapper.mapUrlToFile({ url }) - return await withLock(path, () => promisify(fs.readFile)(path, {encoding: 'utf8'})) + return await withLock(path, () => promisify(fs.readFile)(path, { encoding: 'utf8' })) } catch (err) { throw error(err.status, err.message) } } async readContainerMeta (url) { - if (url[ url.length - 1 ] !== '/') { + if (url[url.length - 1] !== '/') { url += '/' } return this.readResource(url + this.suffixMeta) @@ -192,7 +194,7 @@ class LDP { async putGraph (graph, uri, contentType) { const { path } = url.parse(uri) const content = await serialize(graph, uri, contentType) - let stream = stringToStream(content) + const stream = stringToStream(content) return await this.put(path, stream, contentType) } @@ -380,7 +382,7 @@ class LDP { contentRange = 'bytes ' + start + '-' + end + '/' + total } return withLock(path, () => new Promise((resolve, reject) => { - const stream = fs.createReadStream(path, start && end ? {start, end} : {}) + const stream = fs.createReadStream(path, start && end ? { start, end } : {}) stream .on('error', function (err) { debug.handlers(`GET -- error reading ${path}: ${err.message}`) @@ -413,7 +415,7 @@ class LDP { } async deleteContainer (directory) { - if (directory[ directory.length - 1 ] !== '/') { + if (directory[directory.length - 1] !== '/') { directory += '/' } @@ -473,7 +475,7 @@ class LDP { } getTrustedOrigins (req) { - let trustedOrigins = [this.resourceMapper.resolveUrl(req.hostname)].concat(this.trustedOrigins) + const trustedOrigins = [this.resourceMapper.resolveUrl(req.hostname)].concat(this.trustedOrigins) if (this.multiuser) { trustedOrigins.push(this.serverUri) } diff --git a/lib/lock.js b/lib/lock.js index 82f0b57b2..135229aa7 100644 --- a/lib/lock.js +++ b/lib/lock.js @@ -1,3 +1,5 @@ +/* eslint-disable no-async-promise-executor */ + const { lock } = require('proper-lockfile') const staleSeconds = 30 diff --git a/lib/models/account-manager.js b/lib/models/account-manager.js index ddf3b606b..d94ecec8e 100644 --- a/lib/models/account-manager.js +++ b/lib/models/account-manager.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const url = require('url') const rdf = require('rdflib') @@ -155,9 +156,9 @@ class AccountManager { * @return {string} */ accountUriFor (accountName) { - let accountUri = this.multiuser + const accountUri = this.multiuser ? this.host.accountUriFor(accountName) - : this.host.serverUri // single user mode + : this.host.serverUri // single user mode return accountUri } @@ -183,9 +184,9 @@ class AccountManager { * @return {string|null} */ accountWebIdFor (accountName) { - let accountUri = this.accountUriFor(accountName) + const accountUri = this.accountUriFor(accountName) - let webIdUri = url.parse(url.resolve(accountUri, this.pathCard)) + const webIdUri = url.parse(url.resolve(accountUri, this.pathCard)) webIdUri.hash = this.suffixURI return webIdUri.format() } @@ -201,7 +202,7 @@ class AccountManager { * @return {string} Root .acl URI */ rootAclFor (userAccount) { - let accountUri = this.accountUriFor(userAccount.username) + const accountUri = this.accountUriFor(userAccount.username) return url.resolve(accountUri, this.store.suffixAcl) } @@ -241,14 +242,14 @@ class AccountManager { * @return {Promise} */ getProfileGraphFor (userAccount, contentType = DEFAULT_PROFILE_CONTENT_TYPE) { - let webId = userAccount.webId + const webId = userAccount.webId if (!webId) { - let error = new Error('Cannot fetch profile graph, missing WebId URI') + const error = new Error('Cannot fetch profile graph, missing WebId URI') error.status = 400 return Promise.reject(error) } - let uri = userAccount.profileUri + const uri = userAccount.profileUri return this.store.getGraph(uri, contentType) .catch(error => { @@ -268,14 +269,14 @@ class AccountManager { * @return {Promise} */ saveProfileGraph (profileGraph, userAccount, contentType = DEFAULT_PROFILE_CONTENT_TYPE) { - let webId = userAccount.webId + const webId = userAccount.webId if (!webId) { - let error = new Error('Cannot save profile graph, missing WebId URI') + const error = new Error('Cannot save profile graph, missing WebId URI') error.status = 400 return Promise.reject(error) } - let uri = userAccount.profileUri + const uri = userAccount.profileUri return this.store.putGraph(profileGraph, uri, contentType) } @@ -289,13 +290,13 @@ class AccountManager { * @return {Graph} */ addCertKeyToGraph (certificate, graph) { - let webId = rdf.namedNode(certificate.webId) - let key = rdf.namedNode(certificate.keyUri) - let timeCreated = rdf.literal(certificate.date.toISOString(), ns.xsd('dateTime')) - let modulus = rdf.literal(certificate.modulus, ns.xsd('hexBinary')) - let exponent = rdf.literal(certificate.exponent, ns.xsd('int')) - let title = rdf.literal('Created by solid-server') - let label = rdf.literal(certificate.commonName) + const webId = rdf.namedNode(certificate.webId) + const key = rdf.namedNode(certificate.keyUri) + const timeCreated = rdf.literal(certificate.date.toISOString(), ns.xsd('dateTime')) + const modulus = rdf.literal(certificate.modulus, ns.xsd('hexBinary')) + const exponent = rdf.literal(certificate.exponent, ns.xsd('int')) + const title = rdf.literal('Created by solid-server') + const label = rdf.literal(certificate.commonName) graph.add(webId, ns.cert('key'), key) graph.add(key, ns.rdf('type'), ns.cert('RSAPublicKey')) @@ -327,7 +328,7 @@ class AccountManager { * @return {UserAccount} */ userAccountFrom (userData) { - let userConfig = { + const userConfig = { username: userData.username, email: userData.email, name: userData.name, @@ -354,9 +355,9 @@ class AccountManager { if (userConfig.externalWebId && !userConfig.localAccountId) { // External Web ID exists, derive the local account id from username userConfig.localAccountId = this.accountWebIdFor(userConfig.username) - .split('//')[1] // drop the https:// + .split('//')[1] // drop the https:// } - } else { // no username - derive it from web id + } else { // no username - derive it from web id if (userConfig.externalWebId) { userConfig.username = userConfig.externalWebId } else { @@ -372,8 +373,8 @@ class AccountManager { return DEFAULT_ADMIN_USERNAME } - let profileUrl = url.parse(webId) - let hostname = profileUrl.hostname + const profileUrl = url.parse(webId) + const hostname = profileUrl.hostname return hostname.split('.')[0] } @@ -386,10 +387,10 @@ class AccountManager { * @return {Promise} */ createAccountFor (userAccount) { - let template = AccountTemplate.for(userAccount) + const template = AccountTemplate.for(userAccount) - let templatePath = this.accountTemplatePath - let accountDir = this.accountDirFor(userAccount.username) + const templatePath = this.accountTemplatePath + const accountDir = this.accountDirFor(userAccount.username) debug(`Creating account folder for ${userAccount.webId} at ${accountDir}`) @@ -438,7 +439,7 @@ class AccountManager { * @return {Object|false} Saved token data object if verified, false otherwise */ validateDeleteToken (token) { - let tokenValue = this.tokenService.verify('delete-account', token) + const tokenValue = this.tokenService.verify('delete-account', token) if (!tokenValue) { throw new Error('Invalid or expired delete account token') @@ -459,7 +460,7 @@ class AccountManager { * @return {Object|false} Saved token data object if verified, false otherwise */ validateResetToken (token) { - let tokenValue = this.tokenService.verify('reset-password', token) + const tokenValue = this.tokenService.verify('reset-password', token) if (!tokenValue) { throw new Error('Invalid or expired reset token') @@ -509,12 +510,12 @@ class AccountManager { loadAccountRecoveryEmail (userAccount) { return Promise.resolve() .then(() => { - let rootAclUri = this.rootAclFor(userAccount) + const rootAclUri = this.rootAclFor(userAccount) return this.store.getGraph(rootAclUri) }) .then(rootAclGraph => { - let matches = rootAclGraph.match(null, ns.acl('agent')) + const matches = rootAclGraph.match(null, ns.acl('agent')) let recoveryMailto = matches.find(agent => { return agent.object.value.startsWith('mailto:') @@ -560,9 +561,9 @@ class AccountManager { .then(() => this.verifyEmailDependencies(userAccount)) .then(() => this.generateResetToken(userAccount)) .then(resetToken => { - let resetUrl = this.passwordResetUrl(resetToken, returnToUrl) + const resetUrl = this.passwordResetUrl(resetToken, returnToUrl) - let emailData = { + const emailData = { to: userAccount.email, webId: userAccount.webId, resetUrl @@ -583,13 +584,13 @@ class AccountManager { * @return {Promise} */ sendWelcomeEmail (newUser) { - let emailService = this.emailService + const emailService = this.emailService if (!emailService || !newUser.email) { return Promise.resolve(null) } - let emailData = { + const emailData = { to: newUser.email, webid: newUser.webId, name: newUser.displayName diff --git a/lib/models/account-template.js b/lib/models/account-template.js index a645271b6..7e140ea0b 100644 --- a/lib/models/account-template.js +++ b/lib/models/account-template.js @@ -7,8 +7,8 @@ const fsUtils = require('../common/fs-utils') const templateUtils = require('../common/template-utils') const LDP = require('../ldp') -const TEMPLATE_EXTENSIONS = [ '.acl', '.meta', '.json', '.hbs', '.handlebars' ] -const TEMPLATE_FILES = [ 'card' ] +const TEMPLATE_EXTENSIONS = ['.acl', '.meta', '.json', '.hbs', '.handlebars'] +const TEMPLATE_FILES = ['card'] /** * Performs account folder initialization from an account template @@ -44,7 +44,7 @@ class AccountTemplate { * @return {AccountTemplate} */ static for (userAccount, options = {}) { - let substitutions = AccountTemplate.templateSubstitutionsFor(userAccount) + const substitutions = AccountTemplate.templateSubstitutionsFor(userAccount) options = Object.assign({ substitutions }, options) @@ -72,7 +72,7 @@ class AccountTemplate { * @return {Object} */ static templateSubstitutionsFor (userAccount) { - let substitutions = { + const substitutions = { name: userAccount.displayName, webId: userAccount.webId, email: userAccount.email @@ -141,7 +141,7 @@ class AccountTemplate { const isRdf = LDP.mimeTypeIsRdf(mimeType) const isTemplateExtension = this.templateExtensions.includes(parsed.ext) const isTemplateFile = this.templateFiles.includes(parsed.base) || - this.templateExtensions.includes(parsed.base) // the '/.acl' case + this.templateExtensions.includes(parsed.base) // the '/.acl' case return isRdf || isTemplateExtension || isTemplateFile } diff --git a/lib/models/authenticator.js b/lib/models/authenticator.js index b8774dff9..2f318798a 100644 --- a/lib/models/authenticator.js +++ b/lib/models/authenticator.js @@ -79,7 +79,7 @@ class PasswordAuthenticator extends Authenticator { * @return {PasswordAuthenticator} */ static fromParams (req, options) { - let body = req.body || {} + const body = req.body || {} options.username = body.username options.password = body.password @@ -132,7 +132,7 @@ class PasswordAuthenticator extends Authenticator { userOptions = { username: this.username } } - let user = this.accountManager.userAccountFrom(userOptions) + const user = this.accountManager.userAccountFrom(userOptions) debug(`Attempting to login user: ${user.id}`) @@ -225,7 +225,7 @@ class TlsAuthenticator extends Authenticator { * @returns {Promise} */ renegotiateTls () { - let connection = this.connection + const connection = this.connection return new Promise((resolve, reject) => { // Typically, certificates for WebID-TLS are not signed or self-signed, @@ -252,7 +252,7 @@ class TlsAuthenticator extends Authenticator { * @return {Promise} */ getCertificate () { - let certificate = this.connection.getPeerCertificate() + const certificate = this.connection.getPeerCertificate() if (!certificate || !Object.keys(certificate).length) { debug('No client certificate detected') diff --git a/lib/models/oidc-manager.js b/lib/models/oidc-manager.js index aa31b7281..6c6c019bf 100644 --- a/lib/models/oidc-manager.js +++ b/lib/models/oidc-manager.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const url = require('url') const path = require('path') @@ -27,13 +28,13 @@ const OidcManager = require('@solid/oidc-auth-manager') * OIDC Clients store, a Resource Authenticator, and an OIDC Provider. */ function fromServerConfig (argv) { - let providerUri = argv.host.serverUri - let authCallbackUri = url.resolve(providerUri, '/api/oidc/rp') - let postLogoutUri = url.resolve(providerUri, '/goodbye') + const providerUri = argv.host.serverUri + const authCallbackUri = url.resolve(providerUri, '/api/oidc/rp') + const postLogoutUri = url.resolve(providerUri, '/goodbye') - let dbPath = path.join(argv.dbPath, 'oidc') + const dbPath = path.join(argv.dbPath, 'oidc') - let options = { + const options = { debug, providerUri, dbPath, diff --git a/lib/models/solid-host.js b/lib/models/solid-host.js index e13f156ca..74ba8f61d 100644 --- a/lib/models/solid-host.js +++ b/lib/models/solid-host.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const url = require('url') const defaults = require('../../config/defaults') @@ -70,6 +71,7 @@ class SolidHost { } return this.parsedUri.protocol + '//' + accountName + '.' + this.host } + /** * Determines whether the given user is allowed to restore a session * from the given origin. @@ -99,7 +101,7 @@ class SolidHost { * @return {URL} */ get authEndpoint () { - let authUrl = url.resolve(this.serverUri, '/authorize') + const authUrl = url.resolve(this.serverUri, '/authorize') return url.parse(authUrl) } diff --git a/lib/models/user-account.js b/lib/models/user-account.js index e2a0c4ce6..74f441763 100644 --- a/lib/models/user-account.js +++ b/lib/models/user-account.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const url = require('url') @@ -60,7 +61,7 @@ class UserAccount { get id () { if (!this.webId) { return null } - let parsed = url.parse(this.webId) + const parsed = url.parse(this.webId) let id = parsed.host + parsed.pathname if (parsed.hash) { id += parsed.hash @@ -71,7 +72,7 @@ class UserAccount { get accountUri () { if (!this.webId) { return null } - let parsed = url.parse(this.webId) + const parsed = url.parse(this.webId) return parsed.protocol + '//' + parsed.host } @@ -102,7 +103,7 @@ class UserAccount { get profileUri () { if (!this.webId) { return null } - let parsed = url.parse(this.webId) + const parsed = url.parse(this.webId) // Note that the hash fragment gets dropped return parsed.protocol + '//' + parsed.host + parsed.pathname } diff --git a/lib/models/webid-tls-certificate.js b/lib/models/webid-tls-certificate.js index 8a0121a5f..240ec8a2e 100644 --- a/lib/models/webid-tls-certificate.js +++ b/lib/models/webid-tls-certificate.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const webidTls = require('webid')('tls') const forge = require('node-forge') @@ -26,7 +27,7 @@ class WebIdTlsCertificate { this.commonName = options.commonName this.issuer = { commonName: options.issuerName } - this.certificate = null // gets initialized in `generateCertificate()` + this.certificate = null // gets initialized in `generateCertificate()` } /** @@ -44,15 +45,15 @@ class WebIdTlsCertificate { */ static fromSpkacPost (spkac, userAccount, host) { if (!spkac) { - let error = new TypeError('Missing spkac parameter') + const error = new TypeError('Missing spkac parameter') error.status = 400 throw error } - let date = new Date() - let commonName = `${userAccount.displayName} [on ${host.serverUri}, created ${date}]` + const date = new Date() + const commonName = `${userAccount.displayName} [on ${host.serverUri}, created ${date}]` - let options = { + const options = { spkac: WebIdTlsCertificate.prepPublicKey(spkac), webId: userAccount.webId, date, @@ -90,7 +91,7 @@ class WebIdTlsCertificate { * the `.certificate` property initialized. */ generateCertificate () { - let certOptions = { + const certOptions = { spkac: this.spkac, agent: this.webId, commonName: this.commonName, @@ -119,12 +120,12 @@ class WebIdTlsCertificate { */ get keyUri () { if (!this.webId) { - let error = new TypeError('Cannot construct key URI, WebID is missing') + const error = new TypeError('Cannot construct key URI, WebID is missing') error.status = 400 throw error } - let profileUri = this.webId.split('#')[0] + const profileUri = this.webId.split('#')[0] return profileUri + '#key-' + this.date.getTime() } @@ -137,7 +138,7 @@ class WebIdTlsCertificate { */ get exponent () { if (!this.certificate) { - let error = new TypeError('Cannot return exponent, certificate has not been generated') + const error = new TypeError('Cannot return exponent, certificate has not been generated') error.status = 400 throw error } @@ -154,7 +155,7 @@ class WebIdTlsCertificate { */ get modulus () { if (!this.certificate) { - let error = new TypeError('Cannot return modulus, certificate has not been generated') + const error = new TypeError('Cannot return modulus, certificate has not been generated') error.status = 400 throw error } @@ -172,9 +173,9 @@ class WebIdTlsCertificate { return null } - let certificateAsn = forge.pki.certificateToAsn1(this.certificate) + const certificateAsn = forge.pki.certificateToAsn1(this.certificate) // Convert to DER - let certificateDer = forge.asn1.toDer(certificateAsn).getBytes() + const certificateDer = forge.asn1.toDer(certificateAsn).getBytes() // new Buffer(der, 'binary') return certificateDer } diff --git a/lib/requests/add-cert-request.js b/lib/requests/add-cert-request.js index 57b9cd585..b72647382 100644 --- a/lib/requests/add-cert-request.js +++ b/lib/requests/add-cert-request.js @@ -63,8 +63,8 @@ class AddCertificateRequest { * @return {AddCertificateRequest} */ static fromParams (req, res, accountManager) { - let userAccount = accountManager.userAccountFrom(req.body) - let certificate = WebIdTlsCertificate.fromSpkacPost( + const userAccount = accountManager.userAccountFrom(req.body) + const certificate = WebIdTlsCertificate.fromSpkacPost( req.body.spkac, userAccount, accountManager.host) @@ -73,12 +73,12 @@ class AddCertificateRequest { if (req.session.userId !== userAccount.webId) { debug(`Cannot add new certificate: signed in user is "${req.session.userId}"`) - let error = new Error("You are not logged in, so you can't create a certificate") + const error = new Error("You are not logged in, so you can't create a certificate") error.status = 401 throw error } - let options = { + const options = { accountManager, userAccount, certificate, @@ -99,7 +99,7 @@ class AddCertificateRequest { * @returns {Promise} */ static addCertificate (request) { - let { certificate, userAccount, accountManager } = request + const { certificate, userAccount, accountManager } = request return certificate.generateCertificate() .catch(err => { @@ -126,7 +126,7 @@ class AddCertificateRequest { * @param certificate {WebIdTlsCertificate} */ sendResponse (certificate) { - let { response, userAccount } = this + const { response, userAccount } = this response.set('User', userAccount.webId) response.status(200) diff --git a/lib/requests/auth-request.js b/lib/requests/auth-request.js index 647bac93d..25011da32 100644 --- a/lib/requests/auth-request.js +++ b/lib/requests/auth-request.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable node/no-deprecated-api */ const url = require('url') const debug = require('./../debug').authentication @@ -58,9 +59,9 @@ class AuthRequest { * @return {string|null} */ static parseParameter (req, parameter) { - let query = req.query || {} - let body = req.body || {} - let params = req.params || {} + const query = req.query || {} + const body = req.body || {} + const params = req.params || {} return query[parameter] || body[parameter] || params[parameter] || null } @@ -77,7 +78,7 @@ class AuthRequest { let userStore, accountManager, localAuth if (req.app && req.app.locals) { - let locals = req.app.locals + const locals = req.app.locals if (locals.oidc) { userStore = locals.oidc.users @@ -88,11 +89,11 @@ class AuthRequest { localAuth = locals.localAuth } - let authQueryParams = AuthRequest.extractAuthParams(req) - let returnToUrl = AuthRequest.parseParameter(req, 'returnToUrl') + const authQueryParams = AuthRequest.extractAuthParams(req) + const returnToUrl = AuthRequest.parseParameter(req, 'returnToUrl') const acceptToc = AuthRequest.parseParameter(req, 'acceptToc') === 'true' - let options = { + const options = { response: res, session: req.session, userStore, @@ -125,20 +126,20 @@ class AuthRequest { if (!params) { return {} } - let extracted = {} + const extracted = {} - let paramKeys = AUTH_QUERY_PARAMS + const paramKeys = AUTH_QUERY_PARAMS let value - for (let p of paramKeys) { + for (const p of paramKeys) { value = params[p] // value = value === 'undefined' ? undefined : value extracted[p] = value } - // Special case because solid-auth-client does not include redirect in params - if (!extracted['redirect_uri'] && params.request) { - extracted['redirect_uri'] = IDToken.decode(params.request).payload.redirect_uri + // Special case because solid-auth-client does not include redirect in params + if (!extracted.redirect_uri && params.request) { + extracted.redirect_uri = IDToken.decode(params.request).payload.redirect_uri } return extracted @@ -163,7 +164,7 @@ class AuthRequest { * @param userAccount {UserAccount} */ initUserSession (userAccount) { - let session = this.session + const session = this.session debug('Initializing user session with webId: ', userAccount.webId) @@ -182,8 +183,8 @@ class AuthRequest { * @return {string} */ authorizeUrl () { - let host = this.accountManager.host - let authUrl = host.authEndpoint + const host = this.accountManager.host + const authUrl = host.authEndpoint authUrl.query = this.authQueryParams @@ -196,8 +197,8 @@ class AuthRequest { * @return {string} */ registerUrl () { - let host = this.accountManager.host - let signupUrl = url.parse(url.resolve(host.serverUri, '/register')) + const host = this.accountManager.host + const signupUrl = url.parse(url.resolve(host.serverUri, '/register')) signupUrl.query = this.authQueryParams @@ -210,8 +211,8 @@ class AuthRequest { * @return {string} */ loginUrl () { - let host = this.accountManager.host - let signupUrl = url.parse(url.resolve(host.serverUri, '/login')) + const host = this.accountManager.host + const signupUrl = url.parse(url.resolve(host.serverUri, '/login')) signupUrl.query = this.authQueryParams @@ -219,8 +220,8 @@ class AuthRequest { } sharingUrl () { - let host = this.accountManager.host - let sharingUrl = url.parse(url.resolve(host.serverUri, '/sharing')) + const host = this.accountManager.host + const sharingUrl = url.parse(url.resolve(host.serverUri, '/sharing')) sharingUrl.query = this.authQueryParams diff --git a/lib/requests/create-account-request.js b/lib/requests/create-account-request.js index 082773b82..b578880bb 100644 --- a/lib/requests/create-account-request.js +++ b/lib/requests/create-account-request.js @@ -55,13 +55,13 @@ class CreateAccountRequest extends AuthRequest { * @return {CreateOidcAccountRequest|CreateTlsAccountRequest} */ static fromParams (req, res) { - let options = AuthRequest.requestOptions(req, res) + const options = AuthRequest.requestOptions(req, res) - let locals = req.app.locals - let authMethod = locals.authMethod - let accountManager = locals.accountManager + const locals = req.app.locals + const authMethod = locals.authMethod + const accountManager = locals.accountManager - let body = req.body || {} + const body = req.body || {} if (body.username) { options.username = body.username.toLowerCase() @@ -85,7 +85,7 @@ class CreateAccountRequest extends AuthRequest { } static async post (req, res) { - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) try { request.validate() @@ -96,7 +96,7 @@ class CreateAccountRequest extends AuthRequest { } static get (req, res) { - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) return Promise.resolve() .then(() => request.renderForm()) @@ -107,9 +107,9 @@ class CreateAccountRequest extends AuthRequest { * Renders the Register form */ renderForm (error, data = {}) { - let authMethod = this.accountManager.authMethod + const authMethod = this.accountManager.authMethod - let params = Object.assign({}, this.authQueryParams, { + const params = Object.assign({}, this.authQueryParams, { enforceToc: this.enforceToc, loginUrl: this.loginUrl(), multiuser: this.accountManager.multiuser, @@ -141,8 +141,8 @@ class CreateAccountRequest extends AuthRequest { * @return {Promise} Resolves with newly created account instance */ async createAccount () { - let userAccount = this.userAccount - let accountManager = this.accountManager + const userAccount = this.userAccount + const accountManager = this.accountManager this.cancelIfUsernameInvalid(userAccount) this.cancelIfBlacklistedUsername(userAccount) @@ -169,13 +169,13 @@ class CreateAccountRequest extends AuthRequest { * @return {Promise} Chainable */ cancelIfAccountExists (userAccount) { - let accountManager = this.accountManager + const accountManager = this.accountManager return accountManager.accountExists(userAccount.username) .then(exists => { if (exists) { debug(`Canceling account creation, ${userAccount.webId} already exists`) - let error = new Error('Account already exists') + const error = new Error('Account already exists') error.status = 400 throw error } @@ -323,7 +323,7 @@ class CreateOidcAccountRequest extends CreateAccountRequest { * @return {UserAccount} */ sendResponse (userAccount) { - let redirectUrl = this.returnToUrl || userAccount.podUri + const redirectUrl = this.returnToUrl || userAccount.podUri this.response.redirect(redirectUrl) return userAccount @@ -395,7 +395,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest { return Promise.resolve() .then(() => { - let host = this.accountManager.host + const host = this.accountManager.host return WebIdTlsCertificate.fromSpkacPost(this.spkac, userAccount, host) .generateCertificate() }) @@ -445,7 +445,7 @@ class CreateTlsAccountRequest extends CreateAccountRequest { * @return {UserAccount} Chainable */ sendResponse (userAccount) { - let res = this.response + const res = this.response res.set('User', userAccount.webId) res.status(200) diff --git a/lib/requests/delete-account-confirm-request.js b/lib/requests/delete-account-confirm-request.js index eeaf048dc..4e5008103 100644 --- a/lib/requests/delete-account-confirm-request.js +++ b/lib/requests/delete-account-confirm-request.js @@ -30,13 +30,13 @@ class DeleteAccountConfirmRequest extends AuthRequest { * @return {DeleteAccountConfirmRequest} */ static fromParams (req, res) { - let locals = req.app.locals - let accountManager = locals.accountManager - let userStore = locals.oidc.users + const locals = req.app.locals + const accountManager = locals.accountManager + const userStore = locals.oidc.users - let token = this.parseParameter(req, 'token') + const token = this.parseParameter(req, 'token') - let options = { + const options = { accountManager, userStore, token, @@ -130,8 +130,8 @@ class DeleteAccountConfirmRequest extends AuthRequest { * @return {Promise} */ async deleteAccount (tokenContents) { - let user = this.accountManager.userAccountFrom(tokenContents) - let accountDir = this.accountManager.accountDirFor(user.username) + const user = this.accountManager.userAccountFrom(tokenContents) + const accountDir = this.accountManager.accountDirFor(user.username) debug('Preparing removal of account for user:', user) @@ -146,7 +146,7 @@ class DeleteAccountConfirmRequest extends AuthRequest { * @param [error] {Error} Optional error to display */ renderForm (error) { - let params = { + const params = { validToken: this.validToken, token: this.token } diff --git a/lib/requests/delete-account-request.js b/lib/requests/delete-account-request.js index 9fddcac3b..206fdf616 100644 --- a/lib/requests/delete-account-request.js +++ b/lib/requests/delete-account-request.js @@ -31,7 +31,7 @@ class DeleteAccountRequest extends AuthRequest { * @returns {Promise} */ async loadUser () { - let username = this.username + const username = this.username return this.accountManager.accountExists(username) .then(exists => { @@ -39,7 +39,7 @@ class DeleteAccountRequest extends AuthRequest { throw new Error('Account not found for that username') } - let userData = { username } + const userData = { username } return this.accountManager.userAccountFrom(userData) }) @@ -71,7 +71,7 @@ class DeleteAccountRequest extends AuthRequest { * @return {Promise} */ async sendDeleteLink (userAccount) { - let accountManager = this.accountManager + const accountManager = this.accountManager const recoveryEmail = await accountManager.loadAccountRecoveryEmail(userAccount) userAccount.email = recoveryEmail @@ -127,11 +127,11 @@ class DeleteAccountRequest extends AuthRequest { } static fromParams (req, res) { - let locals = req.app.locals - let accountManager = locals.accountManager - let username = this.parseParameter(req, 'username') + const locals = req.app.locals + const accountManager = locals.accountManager + const username = this.parseParameter(req, 'username') - let options = { + const options = { accountManager, response: res, username diff --git a/lib/requests/login-request.js b/lib/requests/login-request.js index 86318a583..fc5d533fd 100644 --- a/lib/requests/login-request.js +++ b/lib/requests/login-request.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-mixed-operators */ const debug = require('./../debug').authentication @@ -44,7 +45,7 @@ class LoginRequest extends AuthRequest { * @return {LoginRequest} */ static fromParams (req, res, authMethod) { - let options = AuthRequest.requestOptions(req, res) + const options = AuthRequest.requestOptions(req, res) options.authMethod = authMethod switch (authMethod) { @@ -99,7 +100,7 @@ class LoginRequest extends AuthRequest { static loginPassword (req, res) { debug('Logging in via username + password') - let request = LoginRequest.fromParams(req, res, PASSWORD_AUTH) + const request = LoginRequest.fromParams(req, res, PASSWORD_AUTH) return LoginRequest.login(request) } @@ -121,7 +122,7 @@ class LoginRequest extends AuthRequest { static loginTls (req, res) { debug('Logging in via WebID-TLS certificate') - let request = LoginRequest.fromParams(req, res, TLS_AUTH) + const request = LoginRequest.fromParams(req, res, TLS_AUTH) return LoginRequest.login(request) } @@ -158,11 +159,11 @@ class LoginRequest extends AuthRequest { */ postLoginUrl (validUser) { // Login request is part of an app's auth flow - if (/token|code/.test(this.authQueryParams['response_type'])) { + if (/token|code/.test(this.authQueryParams.response_type)) { return this.sharingUrl() // Login request is a user going to /login in browser } else if (validUser) { - return this.authQueryParams['redirect_uri'] || validUser.accountUri + return this.authQueryParams.redirect_uri || validUser.accountUri } } @@ -170,7 +171,7 @@ class LoginRequest extends AuthRequest { * Redirects the Login request to continue on the OIDC auth workflow. */ redirectPostLogin (validUser) { - let uri = this.postLoginUrl(validUser) + const uri = this.postLoginUrl(validUser) debug('Login successful, redirecting to ', uri) this.response.redirect(uri) } @@ -179,8 +180,8 @@ class LoginRequest extends AuthRequest { * Renders the login form */ renderForm (error, req) { - let queryString = req && req.url && req.url.replace(/[^?]+\?/, '') || '' - let params = Object.assign({}, this.authQueryParams, + const queryString = req && req.url && req.url.replace(/[^?]+\?/, '') || '' + const params = Object.assign({}, this.authQueryParams, { registerUrl: this.registerUrl(), returnToUrl: this.returnToUrl, diff --git a/lib/requests/password-change-request.js b/lib/requests/password-change-request.js index 5ac1a76a9..f8a6e9610 100644 --- a/lib/requests/password-change-request.js +++ b/lib/requests/password-change-request.js @@ -35,16 +35,16 @@ class PasswordChangeRequest extends AuthRequest { * @return {PasswordChangeRequest} */ static fromParams (req, res) { - let locals = req.app.locals - let accountManager = locals.accountManager - let userStore = locals.oidc.users + const locals = req.app.locals + const accountManager = locals.accountManager + const userStore = locals.oidc.users - let returnToUrl = this.parseParameter(req, 'returnToUrl') - let token = this.parseParameter(req, 'token') - let oldPassword = this.parseParameter(req, 'password') - let newPassword = this.parseParameter(req, 'newPassword') + const returnToUrl = this.parseParameter(req, 'returnToUrl') + const token = this.parseParameter(req, 'token') + const oldPassword = this.parseParameter(req, 'password') + const newPassword = this.parseParameter(req, 'newPassword') - let options = { + const options = { accountManager, userStore, returnToUrl, @@ -156,7 +156,7 @@ class PasswordChangeRequest extends AuthRequest { * @return {Promise} */ changePassword (tokenContents) { - let user = this.accountManager.userAccountFrom(tokenContents) + const user = this.accountManager.userAccountFrom(tokenContents) debug('Changing password for user:', user.webId) @@ -176,7 +176,7 @@ class PasswordChangeRequest extends AuthRequest { * @param [error] {Error} Optional error to display */ renderForm (error) { - let params = { + const params = { validToken: this.validToken, returnToUrl: this.returnToUrl, token: this.token diff --git a/lib/requests/password-reset-email-request.js b/lib/requests/password-reset-email-request.js index 441673092..a4e40c33a 100644 --- a/lib/requests/password-reset-email-request.js +++ b/lib/requests/password-reset-email-request.js @@ -29,13 +29,13 @@ class PasswordResetEmailRequest extends AuthRequest { * @return {PasswordResetEmailRequest} */ static fromParams (req, res) { - let locals = req.app.locals - let accountManager = locals.accountManager + const locals = req.app.locals + const accountManager = locals.accountManager - let returnToUrl = this.parseParameter(req, 'returnToUrl') - let username = this.parseParameter(req, 'username') + const returnToUrl = this.parseParameter(req, 'returnToUrl') + const username = this.parseParameter(req, 'username') - let options = { + const options = { accountManager, returnToUrl, username, @@ -118,7 +118,7 @@ class PasswordResetEmailRequest extends AuthRequest { * @returns {Promise} */ loadUser () { - let username = this.username + const username = this.username return this.accountManager.accountExists(username) .then(exists => { @@ -126,7 +126,7 @@ class PasswordResetEmailRequest extends AuthRequest { throw new Error('Account not found for that username') } - let userData = { username } + const userData = { username } return this.accountManager.userAccountFrom(userData) }) @@ -141,7 +141,7 @@ class PasswordResetEmailRequest extends AuthRequest { * @return {Promise} */ sendResetLink (userAccount) { - let accountManager = this.accountManager + const accountManager = this.accountManager return accountManager.loadAccountRecoveryEmail(userAccount) .then(recoveryEmail => { @@ -161,11 +161,11 @@ class PasswordResetEmailRequest extends AuthRequest { * @param error {Error} */ error (error) { - let res = this.response + const res = this.response debug(error) - let params = { + const params = { error: error.message, returnToUrl: this.returnToUrl, multiuser: this.accountManager.multiuser @@ -180,7 +180,7 @@ class PasswordResetEmailRequest extends AuthRequest { * Renders the 'send password reset link' form */ renderForm () { - let params = { + const params = { returnToUrl: this.returnToUrl, multiuser: this.accountManager.multiuser } diff --git a/lib/requests/sharing-request.js b/lib/requests/sharing-request.js index 01052eeba..8a52fc570 100644 --- a/lib/requests/sharing-request.js +++ b/lib/requests/sharing-request.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-mixed-operators, no-async-promise-executor */ const debug = require('./../debug').authentication @@ -46,7 +47,7 @@ class SharingRequest extends AuthRequest { * @return {LoginRequest} */ static fromParams (req, res) { - let options = AuthRequest.requestOptions(req, res) + const options = AuthRequest.requestOptions(req, res) return new SharingRequest(options) } @@ -102,12 +103,12 @@ class SharingRequest extends AuthRequest { if (req.body) { accessModes = req.body.access_mode || [] if (!Array.isArray(accessModes)) { - accessModes = [ accessModes ] + accessModes = [accessModes] } consented = req.body.consent } - let request = SharingRequest.fromParams(req, res) + const request = SharingRequest.fromParams(req, res) if (request.isUserLoggedIn()) { const appUrl = request.getAppUrl() @@ -198,8 +199,8 @@ class SharingRequest extends AuthRequest { // add new triples const application = new $rdf.BlankNode() - store.add($rdf.sym(webId), ACL('trustedApp'), application, webId) - store.add(application, ACL('origin'), origin, webId) + store.add($rdf.sym(webId), ACL('trustedApp'), application, new $rdf.NamedNode(webId)) + store.add(application, ACL('origin'), origin, new $rdf.NamedNode(webId)) accessModes.forEach(mode => { store.add(application, ACL('mode'), ACL(mode)) @@ -224,7 +225,7 @@ class SharingRequest extends AuthRequest { * Redirects the Login request to continue on the OIDC auth workflow. */ redirectPostSharing () { - let uri = this.postSharingUrl() + const uri = this.postSharingUrl() debug('Login successful, redirecting to ', uri) this.response.redirect(uri) } @@ -233,8 +234,8 @@ class SharingRequest extends AuthRequest { * Renders the login form */ renderForm (error, req, appOrigin) { - let queryString = req && req.url && req.url.replace(/[^?]+\?/, '') || '' - let params = Object.assign({}, this.authQueryParams, + const queryString = req && req.url && req.url.replace(/[^?]+\?/, '') || '' + const params = Object.assign({}, this.authQueryParams, { registerUrl: this.registerUrl(), returnToUrl: this.returnToUrl, diff --git a/lib/resource-mapper.js b/lib/resource-mapper.js index 0d21eeb42..0138ddcef 100644 --- a/lib/resource-mapper.js +++ b/lib/resource-mapper.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api, no-mixed-operators */ + const fs = require('fs') const URL = require('url') const { promisify } = require('util') @@ -94,8 +96,8 @@ class ResourceMapper { if (filePath.indexOf('/..') >= 0) { throw new Error('Disallowed /.. segment in URL') } - let isFolder = filePath.endsWith('/') - let isIndex = searchIndex && filePath.endsWith('/') + const isFolder = filePath.endsWith('/') + const isIndex = searchIndex && filePath.endsWith('/') // Create the path for a new resource let path @@ -120,7 +122,7 @@ class ResourceMapper { // Find a file with the same name (minus the dollar extension) let match = '' - if (match === '') { // always true to keep indentation + if (match === '') { // always true to keep indentation const files = await this._readdir(folder) // Search for files with the same name (disregarding a dollar extension) if (!isFolder) { diff --git a/lib/server-config.js b/lib/server-config.js index bf5c04315..11299881f 100644 --- a/lib/server-config.js +++ b/lib/server-config.js @@ -92,7 +92,7 @@ async function ensureWelcomePage (argv) { * @return {string} Path to the server config dir */ function initConfigDir (argv) { - let configPath = path.resolve(argv.configPath) + const configPath = path.resolve(argv.configPath) fs.mkdirp(configPath) return configPath @@ -108,8 +108,8 @@ function initConfigDir (argv) { * @return {string} Path to the views dir */ function initDefaultViews (configPath) { - let defaultViewsPath = path.join(__dirname, '../default-views') - let viewsPath = path.join(configPath, 'views') + const defaultViewsPath = path.join(__dirname, '../default-views') + const viewsPath = path.join(configPath, 'views') ensureDirCopyExists(defaultViewsPath, viewsPath) @@ -128,17 +128,17 @@ function initDefaultViews (configPath) { * (new account, email, server) */ function initTemplateDirs (configPath) { - let accountTemplatePath = ensureDirCopyExists( + const accountTemplatePath = ensureDirCopyExists( path.join(__dirname, '../default-templates/new-account'), path.join(configPath, 'templates', 'new-account') ) - let emailTemplatesPath = ensureDirCopyExists( + const emailTemplatesPath = ensureDirCopyExists( path.join(__dirname, '../default-templates/emails'), path.join(configPath, 'templates', 'emails') ) - let serverTemplatePath = ensureDirCopyExists( + const serverTemplatePath = ensureDirCopyExists( path.join(__dirname, '../default-templates/server'), path.join(configPath, 'templates', 'server') ) diff --git a/lib/services/email-service.js b/lib/services/email-service.js index d0fe448f7..7a93d59d1 100644 --- a/lib/services/email-service.js +++ b/lib/services/email-service.js @@ -104,7 +104,7 @@ class EmailService { sendWithTemplate (templateName, data) { return Promise.resolve() .then(() => { - let renderedEmail = this.emailFromTemplate(templateName, data) + const renderedEmail = this.emailFromTemplate(templateName, data) return this.sendMail(renderedEmail) }) @@ -119,7 +119,7 @@ class EmailService { * @return {Object} Rendered email object from template */ emailFromTemplate (templateName, data) { - let template = this.readTemplate(templateName) + const template = this.readTemplate(templateName) return Object.assign({}, template.render(data), data) } @@ -135,7 +135,7 @@ class EmailService { * @return {Object} */ readTemplate (templateName) { - let templateFile = this.templatePathFor(templateName) + const templateFile = this.templatePathFor(templateName) let template try { diff --git a/lib/services/token-service.js b/lib/services/token-service.js index 494bff9e2..1a3c92150 100644 --- a/lib/services/token-service.js +++ b/lib/services/token-service.js @@ -1,6 +1,6 @@ 'use strict' -const ulid = require('ulid') +const { ulid } = require('ulid') class TokenService { constructor () { @@ -26,7 +26,7 @@ class TokenService { throw new Error(`Invalid domain for tokens: ${domain}`) } - let tokenValue = this.tokens[domain][token] + const tokenValue = this.tokens[domain][token] if (tokenValue && now < tokenValue.exp) { return tokenValue diff --git a/lib/utils.js b/lib/utils.js index 56c23b6bd..45b28bb56 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,3 +1,5 @@ +/* eslint-disable node/no-deprecated-api */ + module.exports.pathBasename = pathBasename module.exports.hasSuffix = hasSuffix module.exports.serialize = serialize @@ -38,7 +40,7 @@ var ns = require('solid-namespace')($rdf) * @return {string} */ function fullUrlForReq (req) { - let fullUrl = url.format({ + const fullUrl = url.format({ protocol: req.protocol, host: req.get('host'), pathname: url.resolve(req.baseUrl, req.path), @@ -97,7 +99,7 @@ function pathBasename (fullpath) { } function hasSuffix (path, suffixes) { - for (let i in suffixes) { + for (const i in suffixes) { if (path.indexOf(suffixes[i], path.length - suffixes[i].length) !== -1) { return true } @@ -215,7 +217,7 @@ async function getQuota (root, serverUri) { */ async function overQuota (root, serverUri) { - let quota = await getQuota(root, serverUri) + const quota = await getQuota(root, serverUri) if (quota === Infinity) { return false } diff --git a/package-lock.json b/package-lock.json index c3aa2bc3f..2297ee8ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,26 +4,95 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@arcanis/slice-ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@arcanis/slice-ansi/-/slice-ansi-1.0.2.tgz", + "integrity": "sha512-lDL63z0W/L/WTgqrwVOuNyMAsTv+pvjybd21z9SWdStmQoXT59E/iVWwat3gYjcdTNBf6oHAMoyFm8dtjpXEYw==", + "dev": true, + "requires": { + "grapheme-splitter": "^1.0.4" + } + }, "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/core": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.5.tgz", + "integrity": "sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.5", + "@babel/types": "^7.10.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", "dev": true, "requires": { - "@babel/types": "^7.5.5", + "@babel/types": "^7.10.5", "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" }, "dependencies": { "jsesc": { @@ -41,42 +110,123 @@ } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.5.tgz", + "integrity": "sha512-HiqJpYD5+WopCXIAbQDG0zye5XYVvcO9w/DHp5GsaGkRUaamLj2bEtu6i8rnGGprAhHM3qidCMgp71HF4endhA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.5.tgz", + "integrity": "sha512-4P+CWMJ6/j1W915ITJaUkadLObmCRRSC234uctJfn/vHrsLNxsR8dwlcXv9ZhJWzl77awf+mWXSZEKt5t0OnlA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/types": "^7.4.4" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -100,10 +250,25 @@ "supports-color": "^5.3.0" } }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { @@ -118,9 +283,9 @@ } }, "@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", "dev": true }, "@babel/polyfill": { @@ -130,82 +295,60 @@ "requires": { "core-js": "^2.6.5", "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - } } }, "@babel/runtime": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", - "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", + "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, "@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" }, "dependencies": { @@ -217,6 +360,25 @@ } } }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -244,50 +406,97 @@ } }, "@peculiar/asn1-schema": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-1.0.3.tgz", - "integrity": "sha512-Tfgj9eNJ6cTKEtEuidKenLHMx/Q5M8KEE9hnohHqvdpqHJXWYr5RlT3GjAHPjGXy5+mr7sSfuXfzE6aAkEGN7A==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.0.8.tgz", + "integrity": "sha512-D8ZqT61DdzuXfrILNvtdf7MUcTY2o9WHwmF0WgTKPEGNY5SDxNAjBY3enuwV9SXcSuCAwWac9c9v0vsswB1NIw==", "requires": { - "asn1js": "^2.0.22", - "tslib": "^1.9.3" + "@types/asn1js": "^0.0.1", + "asn1js": "^2.0.26", + "pvtsutils": "^1.0.10", + "tslib": "^1.11.1" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "@peculiar/json-schema": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.9.tgz", - "integrity": "sha512-F2ST2y/IQPgY+1QMw1Q33sqJbGDCeO3lGqI69SL3Hgo0++7iHqprUB1QyxB/A7bN3tuM65MBxoM2JLbwh42lsQ==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", "requires": { - "tslib": "^1.10.0" + "tslib": "^2.0.0" } }, "@peculiar/webcrypto": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.0.22.tgz", - "integrity": "sha512-NP6H6ZGXUvJnQJCWzUgnRcQv+9nMCNwLUDhTwOxRUwPFvtHauMOl0oPTKUjbhInCMaE55gJqB4yc0YKbde6Exw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.1.2.tgz", + "integrity": "sha512-BkgD5iH2n3+Fdd/+xfhac8VbISo4MPvECPhK1kRpuYC7PnhxaJe2rpU7B4udvMeEL8lhJlvCWybo8Y7A29u/xQ==", "requires": { - "@peculiar/asn1-schema": "^1.0.3", - "@peculiar/json-schema": "^1.1.6", - "asn1js": "^2.0.26", - "pvtsutils": "^1.0.9", - "tslib": "^1.10.0", - "webcrypto-core": "^1.0.17" + "@peculiar/asn1-schema": "^2.0.8", + "@peculiar/json-schema": "^1.1.10", + "pvtsutils": "^1.0.10", + "tslib": "^2.0.0", + "webcrypto-core": "^1.1.2" } }, "@sindresorhus/is": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz", - "integrity": "sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.0.tgz", + "integrity": "sha512-n4J+zu52VdY43kdi/XdI9DzuMr1Mur8zFL5ZRG2opCans9aiFwkPxHYFEb5Xgy7n1Z4K6WfI4FpqUqsh3E8BPQ==", "dev": true }, + "@sinonjs/commons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", + "integrity": "sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@sinonjs/formatio": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-5.0.1.tgz", + "integrity": "sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^5.0.2" + } + }, + "@sinonjs/samsam": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.0.3.tgz", + "integrity": "sha512-QucHkc2uMJ0pFGjJUDP3F9dq5dx8QIaqISl9QgwLOh6P9yv877uONPGXh/OH/0zmM3tW1JjuJltAZV2l7zU+uQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, "@sinonjs/text-encoding": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==" }, "@snyk/cli-interface": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.8.0.tgz", - "integrity": "sha512-St/G39iJG1zQK15L24kcVYM2gmFc/ylBCcBqU2DMZKJKwOPccKLUO6s+dWIUXMccQ+DFS6TuHPvuAKQNi9C4Yg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.8.1.tgz", + "integrity": "sha512-pALcfgoY0hAavy/pBlDIqEu+FFC5m+D4bMnCwlQ26mObL/zzxp2+Ohx+HykCIom62u2J94SzAtRLFdm/2TgoOw==", "dev": true, "requires": { "@snyk/dep-graph": "1.19.0", @@ -317,10 +526,10 @@ } } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true } } @@ -351,14 +560,6 @@ "semver": "^7.3.2", "source-map-support": "^0.5.19", "tslib": "^1.11.1" - }, - "dependencies": { - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - } } }, "semver": { @@ -366,6 +567,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -415,6 +622,14 @@ "needle": "^2.5.0", "parse-link-header": "^1.0.1", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "@snyk/gemfile": { @@ -494,17 +709,27 @@ "restore-cursor": "^2.0.0" } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "color-name": "1.1.3" } }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -514,12 +739,24 @@ "escape-string-regexp": "^1.0.5" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -591,22 +828,13 @@ "requires": { "has-flag": "^3.0.0" } - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } } } }, "@snyk/java-call-graph-builder": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.10.0.tgz", - "integrity": "sha512-x3vKElHJRsPjlMBRACeD6kHtki54ffahYeAm4ny5epVpxm16/OT6f6AjNjPuX8DbxcauaD7wqirtc62OPH3YqA==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/@snyk/java-call-graph-builder/-/java-call-graph-builder-1.12.3.tgz", + "integrity": "sha512-eN32RcCq5J0Veo5NIbDUSb2KRNiVsZMt1w94bFYKxFt6F1tIoiv1CraXdTHSlgQosZ7tw93e8qdOKmQXOtK88Q==", "dev": true, "requires": { "@snyk/graphlib": "2.1.9-patch", @@ -622,25 +850,10 @@ "tslib": "^1.9.3" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true } } @@ -658,17 +871,6 @@ "dev": true, "requires": { "event-loop-spinner": "^2.0.0" - }, - "dependencies": { - "event-loop-spinner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-2.0.0.tgz", - "integrity": "sha512-1y4j/Mhttr8ordvHkbDsGzGrlQaSYJoXD/3YKUxiOXIk7myEn9UPfybEk/lLtrcU3D4QvCNmVUxVQaPtvAIaUw==", - "dev": true, - "requires": { - "tslib": "^1.10.0" - } - } } }, "@snyk/ruby-semver": { @@ -709,19 +911,13 @@ "dev": true } } - }, - "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", - "dev": true } } }, "@snyk/snyk-docker-pull": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@snyk/snyk-docker-pull/-/snyk-docker-pull-3.1.3.tgz", - "integrity": "sha512-3OmWFBoQ/y27HBsG+j47kigGdFS1Sc+XMc+7NSSQkQJZTfvH9wdxI835uew9f8JKWSNSHqLWgG7QVcByRSCfbA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@snyk/snyk-docker-pull/-/snyk-docker-pull-3.2.0.tgz", + "integrity": "sha512-uWKtjh29I/d0mfmfBN7w6RwwNBQxQVKrauF5ND/gqb0PVsKV22GIpkI+viWjI7KNKso6/B0tMmsv7TX2tsNcLQ==", "dev": true, "requires": { "@snyk/docker-registry-v2-client": "^1.13.5", @@ -730,6 +926,15 @@ "tmp": "^0.1.0" }, "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "tmp": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", @@ -742,26 +947,12 @@ } }, "@solid/acl-check": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@solid/acl-check/-/acl-check-0.2.1.tgz", - "integrity": "sha512-64UKYTzWjOc4xYrDFWX+okVPu8Sq5yD3RMA9PPSbzL8CmabImC+O5A+mV3PNpV/2glXh93UyxPJAhtOmWbi+yQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@solid/acl-check/-/acl-check-0.3.0.tgz", + "integrity": "sha512-w6Ym8w+h3sxvADzB5rsDIZhd9XuUJQuyybghkQlYQ5aSVS0zQ+7ZD9X7xR5DIGbKpgQTkmYyg065eyTLAyC03Q==", "requires": { - "rdflib": "^0.12.1", - "solid-namespace": "0.1.0" - }, - "dependencies": { - "rdflib": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-0.12.3.tgz", - "integrity": "sha1-K0IGamYJwGtAqQSFhJNix8uV6h4=", - "requires": { - "async": "^0.9.x", - "jsonld": "^0.4.5", - "n3": "^0.4.1", - "xmldom": "^0.1.22", - "xmlhttprequest": "^1.7.0" - } - } + "rdflib": "^1.3.1", + "solid-namespace": "^0.4.0" } }, "@solid/better-simple-slideshow": { @@ -800,6 +991,19 @@ "whatwg-url": "^7.1.0" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, "whatwg-url": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", @@ -813,188 +1017,76 @@ } }, "@solid/jose": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@solid/jose/-/jose-0.1.8.tgz", - "integrity": "sha512-JuP3z2Yuyolv7P0w7MPhjWltWbVzV0vHBFw+ZhxG2v2WOPdbGT+CvUMhCMdMG/csavceV+IpwMXMybMd8nC4sA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@solid/jose/-/jose-0.6.0.tgz", + "integrity": "sha512-w5HkO3cIyVaEbQ+7DtLhkVcNBNdeabvHHZknkSFHkjekiyFuA9QjdsiLNgiI8kqJqqIDRnPnmJhQ6ahyUYa1nw==", "requires": { - "@trust/json-document": "^0.1.4", - "@trust/webcrypto": "^0.9.2", - "base64url": "^3.0.0", - "text-encoding": "^0.6.4" + "@sinonjs/text-encoding": "^0.7.1", + "base64url": "^3.0.1", + "isomorphic-webcrypto": "^2.3.6" } }, "@solid/keychain": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@solid/keychain/-/keychain-0.1.3.tgz", - "integrity": "sha512-UvwXFNJbqubu72jsJk4AjtSgEi8JmVoWy0OJSyl+IbhgQr7z2KG6tqgNX+XDnS7+1E+ghHC7N48lHOMe/TqM6Q==", - "dev": true, + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@solid/keychain/-/keychain-0.3.0.tgz", + "integrity": "sha512-THOZFM9LSZHdUlSsxTTa2zdGFw9QxG/jesi4MyzgBuF+wFF3IlRkV1uhDbKBoPzgpPrLFOpV4rbsRFy5rvG9Jw==", "requires": { - "@trust/webcrypto": ">=0.9.2", - "base64url": "^3.0.0" + "@solid/jose": "^0.6.0", + "base64url": "^3.0.1" } }, "@solid/oidc-auth-manager": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@solid/oidc-auth-manager/-/oidc-auth-manager-0.20.0.tgz", - "integrity": "sha512-R1bRss6Itjvw92UevPD3Ar8qu6yJTHg9O/+TfpCctwojY/nhXuh9ozin0O0GbjiznM3AyS3UnR5iaFkChBgKIg==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@solid/oidc-auth-manager/-/oidc-auth-manager-0.21.0.tgz", + "integrity": "sha512-OhuU48zu66DtxRZ063gngsfQ1vqPOIxd8uipvNjI30CHaUMUcz5fOVNTZ8a9wjTn65oG5fwxreMHeImIy17RGQ==", "requires": { - "@solid/oidc-op": "^0.7.0", + "@solid/oidc-op": "^0.8.0", + "@solid/oidc-rp": "^0.11.0", "@solid/oidc-rs": "^0.5.0", - "@solid/solid-multi-rp-client": "^0.4.3", - "ajv": "^5.5.2", + "@solid/solid-multi-rp-client": "^0.5.0", + "ajv": "^6.12.3", "bcryptjs": "^2.4.3", - "fs-extra": "^6.0.1", + "fs-extra": "^9.0.1", "kvplus-files": "0.0.4", "li": "^1.3.0", - "node-fetch": "^2.1.2", - "rdflib": "^0.17.1", + "node-fetch": "^2.6.0", + "rdflib": "^1.2.3", "valid-url": "^1.0.9" + } + }, + "@solid/oidc-op": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@solid/oidc-op/-/oidc-op-0.8.0.tgz", + "integrity": "sha512-0Vg2SDLRDliXUBnd0nf8xXqd45p2LNpnQjYVPtxLdFYs+1azxfWW8PiT45/raO2BZfCv3li/sKa414KXWJA4og==", + "requires": { + "@solid/jose": "^0.6.0", + "@solid/keychain": "^0.3.0", + "base64url": "^3.0.1", + "debug": "^4.1.1", + "jsonwebtoken": "^8.5.1", + "jwk-thumbprint": "^0.1.3", + "jwk-to-pem": "^2.0.4", + "qs": "^6.9.4", + "whatwg-url": "^8.1.0" }, "dependencies": { - "@solid/jose": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@solid/jose/-/jose-0.5.0.tgz", - "integrity": "sha512-0Xy5dQvjRSA/mjp4ielwRz18eimqU/C+WDi3Zzj3WfdyRxTs1DeWLH/yPS1ecHgN8TAyw4gg6OM27Y0F8ygyxQ==", - "requires": { - "@sinonjs/text-encoding": "^0.7.1", - "base64url": "^3.0.1", - "isomorphic-webcrypto": "^2.3.2" - } - }, - "@solid/keychain": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@solid/keychain/-/keychain-0.2.0.tgz", - "integrity": "sha512-JPrpzHzEkhuD5CGdJRSNV3FNh1pkxJpnscPpuuFPuvRUh9KgdI3qUgIafHXAUDINc9HaTvQy6uo0NerVZSM8PQ==", - "requires": { - "base64url": "^3.0.1", - "isomorphic-webcrypto": "^2.3.2" - } - }, - "@solid/oidc-op": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@solid/oidc-op/-/oidc-op-0.7.0.tgz", - "integrity": "sha512-ATQkIxM+wcipgXO4wTxix+ovj1RKyXGkl0t9LSRhhWSfZ87E6551VY59I/JFjs7dSoeqmsLZcWwBtRYicMX+Fw==", - "requires": { - "@solid/jose": "^0.5.0", - "@solid/keychain": "^0.2.0", - "base64url": "^3.0.1", - "isomorphic-webcrypto": "^2.3.2", - "jsonwebtoken": "^8.5.1", - "jwk-thumbprint": "^0.1.3", - "jwk-to-pem": "^2.0.3", - "qs": "^6.9.0", - "whatwg-url": "^7.1.0" - } - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, "qs": { "version": "6.9.4", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, - "rdflib": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-0.17.1.tgz", - "integrity": "sha512-onUce6sUbvk74UwZ/Dw7sr/PKU3+e2HPk2ZV6YLVUqzSlSZagDOjis6o/AVf0sIsONKmJJLVB16B1Gi8qVaEpQ==", - "requires": { - "async": "^0.9.x", - "jsonld": "^0.4.5", - "n3": "^0.4.1", - "node-fetch": "^1.7.1", - "solid-auth-client": "^2.2.3", - "xmldom": "^0.1.22" - }, - "dependencies": { - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - } - } - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } } } }, - "@solid/oidc-op": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@solid/oidc-op/-/oidc-op-0.4.2.tgz", - "integrity": "sha512-GZ0GaMG0xgg8YiWM5LTkV9jDfa9dEljPpH3wJOHmsMRc29fLh0zcN6xrNQ0VlpEAVwVxLVE2CjhUOCyu0EqePw==", - "dev": true, - "requires": { - "@solid/jose": "0.1.8", - "@solid/keychain": "0.1.3", - "@trust/json-document": "^0.1.4", - "@trust/webcrypto": "0.9.2", - "base64url": "^3.0.0", - "pem-jwk": "^1.5.1", - "qs": "^6.5.2", - "whatwg-url": "^6.5.0" - } - }, "@solid/oidc-rp": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@solid/oidc-rp/-/oidc-rp-0.8.0.tgz", - "integrity": "sha512-AAHd+J1IiASDmqDQkU8ou8Gxmc7+VfpcgGFW1rCul/obCsNzSemwvEslxjstK7Yy725HtucoAbZN2BGKujeQAg==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@solid/oidc-rp/-/oidc-rp-0.11.0.tgz", + "integrity": "sha512-r0VDOoA6aXBKxT7ABDAAhQFTjmgn8XxpdZ2MgEBhflPi+ePlh5qGj5oJAm5nKdxSY3pm33GDLSC58tzWYAhZlA==", "requires": { - "@solid/jose": "0.1.8", - "@trust/json-document": "^0.1.4", - "@trust/webcrypto": "0.9.2", - "base64url": "^3.0.0", - "node-fetch": "^2.1.2", + "@solid/jose": "^0.6.0", + "base64url": "^3.0.1", + "node-fetch": "^2.6.0", "standard-http-error": "^2.0.1", - "text-encoding": "^0.6.4", - "whatwg-url": "^6.4.1" + "whatwg-url": "^8.1.0" } }, "@solid/oidc-rs": { @@ -1028,14 +1120,70 @@ "dev": true, "requires": { "@solid/oidc-rp": "^0.8.0" + }, + "dependencies": { + "@solid/jose": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@solid/jose/-/jose-0.1.8.tgz", + "integrity": "sha512-JuP3z2Yuyolv7P0w7MPhjWltWbVzV0vHBFw+ZhxG2v2WOPdbGT+CvUMhCMdMG/csavceV+IpwMXMybMd8nC4sA==", + "dev": true, + "requires": { + "@trust/json-document": "^0.1.4", + "@trust/webcrypto": "^0.9.2", + "base64url": "^3.0.0", + "text-encoding": "^0.6.4" + } + }, + "@solid/oidc-rp": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@solid/oidc-rp/-/oidc-rp-0.8.0.tgz", + "integrity": "sha512-AAHd+J1IiASDmqDQkU8ou8Gxmc7+VfpcgGFW1rCul/obCsNzSemwvEslxjstK7Yy725HtucoAbZN2BGKujeQAg==", + "dev": true, + "requires": { + "@solid/jose": "0.1.8", + "@trust/json-document": "^0.1.4", + "@trust/webcrypto": "0.9.2", + "base64url": "^3.0.0", + "node-fetch": "^2.1.2", + "standard-http-error": "^2.0.1", + "text-encoding": "^0.6.4", + "whatwg-url": "^6.4.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } } }, "@solid/solid-multi-rp-client": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@solid/solid-multi-rp-client/-/solid-multi-rp-client-0.4.4.tgz", - "integrity": "sha512-Ai3R7ySoZK9Bk/reRwyZWhb0uf5Jgb9y0ncKYwpQnYkuZK4P15aikKEQm7BiLNuNyGOL1O30zPy8oIp2lbENzA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@solid/solid-multi-rp-client/-/solid-multi-rp-client-0.5.0.tgz", + "integrity": "sha512-b+mfd1nDDZkmoqNE5bSYNMAeYRUNdPphZyJQCi+WEt5+4HfFXaJMLPAMjK/2/tEwMmLJvSSTJDYptcZDzjffwg==", "requires": { - "@solid/oidc-rp": "^0.8.0", + "@solid/oidc-rp": "^0.11.0", "kvplus-files": "0.0.4" } }, @@ -1051,12 +1199,14 @@ "@trust/json-document": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@trust/json-document/-/json-document-0.1.4.tgz", - "integrity": "sha1-sgI7HhRbp2hb0fNux7aRKJQAc+k=" + "integrity": "sha1-sgI7HhRbp2hb0fNux7aRKJQAc+k=", + "dev": true }, "@trust/keyto": { "version": "0.3.7", "resolved": "https://registry.npmjs.org/@trust/keyto/-/keyto-0.3.7.tgz", "integrity": "sha512-t5kWWCTkPgg24JWVuCTPMx7l13F7YHdxBeJkT1vmoHjROgiOIEAN8eeY+iRmP1Hwsx+S7U55HyuqSsECr08a8A==", + "dev": true, "requires": { "asn1.js": "^5.0.1", "base64url": "^3.0.1", @@ -1067,6 +1217,7 @@ "version": "0.9.2", "resolved": "https://registry.npmjs.org/@trust/webcrypto/-/webcrypto-0.9.2.tgz", "integrity": "sha512-5iMAVcGYKhqLJGjefB1nzuQSqUJTru0nG4CytpBT/GGp1Piz/MVnj2jORdYf4JBYzggCIa8WZUr2rchP2Ngn/w==", + "dev": true, "requires": { "@trust/keyto": "^0.3.4", "base64url": "^3.0.0", @@ -1075,6 +1226,14 @@ "text-encoding": "^0.6.1" } }, + "@types/asn1js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-0.0.1.tgz", + "integrity": "sha1-74uflwjLFjKhw6nNJ3F8qr55O8I=", + "requires": { + "@types/pvutils": "*" + } + }, "@types/cacheable-request": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", @@ -1090,8 +1249,7 @@ "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, "@types/debug": { "version": "4.1.5", @@ -1106,9 +1264,9 @@ "dev": true }, "@types/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, "requires": { "@types/minimatch": "*", @@ -1127,6 +1285,14 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", "dev": true }, + "@types/http-proxy": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.4.tgz", + "integrity": "sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q==", + "requires": { + "@types/node": "*" + } + }, "@types/js-yaml": { "version": "3.12.5", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.5.tgz", @@ -1149,9 +1315,14 @@ "dev": true }, "@types/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==" + "version": "14.0.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", + "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" + }, + "@types/pvutils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@types/pvutils/-/pvutils-0.0.2.tgz", + "integrity": "sha512-CgQAm7pjyeF3Gnv78ty4RBVIfluB+Td+2DR8iPaU0prF18pkzptHHP+DoKPfpsJYknKsVZyVsJEu5AuGgAqQ5w==" }, "@types/responselike": { "version": "1.0.0", @@ -1178,18 +1349,18 @@ } }, "@unimodules/core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-5.0.0.tgz", - "integrity": "sha512-PswccfzFIviX61Lm8h6/QyC94bWe+6cARwhzgzTCKa6aR6azmi4732ExhX4VxfQjJNHB0szYVXGXVEDsFkj+tQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@unimodules/core/-/core-5.3.0.tgz", + "integrity": "sha512-uGpkYE2zI0F1LTv+p6drzCHAZo8UFITxedHUH6pjWQBHdpTtae5cU7l3F/CzQ4WYU6SWhkzaB90/Ydf3DNTuLw==", "optional": true, "requires": { "compare-versions": "^3.4.0" } }, "@unimodules/react-native-adapter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-5.0.0.tgz", - "integrity": "sha512-qb5p5wUQoi3TRa/33aLLHSnS7sewV99oBxIo9gnzNI3VFzbOm3rsbTjOJNcR2hx0raUolTtnQT75VbgagVQx4w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@unimodules/react-native-adapter/-/react-native-adapter-5.4.0.tgz", + "integrity": "sha512-2c3hDWzfBAyDWNCkBziyXphmxRZvZ5J8oSMLRDohvj6DnQiHvnlgr/A4oberkjPSEve5fN4GA+eybcJrec08AA==", "optional": true, "requires": { "invariant": "^2.2.4", @@ -1198,25 +1369,26 @@ } }, "@yarnpkg/core": { - "version": "2.0.0-rc.30", - "resolved": "https://registry.npmjs.org/@yarnpkg/core/-/core-2.0.0-rc.30.tgz", - "integrity": "sha512-EMtSAi10ObT2d12YzT6bHyxEZ2p3CYgTtStQ5sZmTD4+iYKoOCBQX0z21PjWEzjeUnUCJnqZ/GAORIVkAUF0Fw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@yarnpkg/core/-/core-2.1.1.tgz", + "integrity": "sha512-qeBxz8nHjKAbGTP2ZcXBnXGfM7+cN0A73mIai/24uru1ayvCIgfjWL1uIj/MM+m+K5lJX0Dcn94ZBHWits9JWQ==", "dev": true, "requires": { - "@yarnpkg/fslib": "^2.0.0-rc.22", - "@yarnpkg/json-proxy": "^2.0.0-rc.9", - "@yarnpkg/libzip": "^2.0.0-rc.13", - "@yarnpkg/parsers": "^2.0.0-rc.13", - "@yarnpkg/pnp": "^2.0.0-rc.23", - "@yarnpkg/shell": "^2.0.0-rc.13", + "@arcanis/slice-ansi": "^1.0.2", + "@yarnpkg/fslib": "^2.1.0", + "@yarnpkg/json-proxy": "^2.1.0", + "@yarnpkg/libzip": "^2.1.0", + "@yarnpkg/parsers": "^2.1.0", + "@yarnpkg/pnp": "^2.1.0", + "@yarnpkg/shell": "^2.1.0", "camelcase": "^5.3.1", "chalk": "^3.0.0", - "clipanion": "^2.4.1", + "ci-info": "^2.0.0", + "clipanion": "^2.4.2", "cross-spawn": "7.0.3", "diff": "^4.0.1", "globby": "^10.0.1", "got": "^11.1.3", - "is-ci": "^2.0.0", "json-file-plus": "^3.3.1", "logic-solver": "^2.0.1", "micromatch": "^4.0.2", @@ -1231,25 +1403,6 @@ "tunnel": "^0.0.6" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -1260,144 +1413,27 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "@yarnpkg/fslib": { - "version": "2.0.0-rc.22", - "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.0.0-rc.22.tgz", - "integrity": "sha512-O6sF4ceVtY7oXcoL98qb9/Xj7bzZBYDmMLAWvbS/85atB+3//l47hfelQuvMa/p4lt1s+ZLjGehxPAbTmcGbSA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.1.0.tgz", + "integrity": "sha512-E+f8w5yQZnTf1soyTWy7qdf+GmHsY+A0yEN4Di44/Txk6XRIMruyc1ShDi93mOI6ilnXxD87rNms18zJ8WnspA==", "dev": true, "requires": { - "@yarnpkg/libzip": "^2.0.0-rc.13", + "@yarnpkg/libzip": "^2.1.0", "tslib": "^1.13.0" }, "dependencies": { @@ -1410,12 +1446,12 @@ } }, "@yarnpkg/json-proxy": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@yarnpkg/json-proxy/-/json-proxy-2.0.0-rc.9.tgz", - "integrity": "sha512-ndaNE2DtoSZDMD/mDNYWIMKV+bJsrUzFeqDlFrHN7A1b3XXgsxD3B/HxL5O5eZYttVNHj+tG0MjYCqmC8s0KdA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/json-proxy/-/json-proxy-2.1.0.tgz", + "integrity": "sha512-rOgCg2DkyviLgr80mUMTt9vzdf5RGOujQB26yPiXjlz4WNePLBshKlTNG9rKSoKQSOYEQcw6cUmosfOKDatrCw==", "dev": true, "requires": { - "@yarnpkg/fslib": "^2.0.0-rc.22", + "@yarnpkg/fslib": "^2.1.0", "tslib": "^1.13.0" }, "dependencies": { @@ -1428,9 +1464,9 @@ } }, "@yarnpkg/libzip": { - "version": "2.0.0-rc.13", - "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.0.0-rc.13.tgz", - "integrity": "sha512-DKAG6nhFHepKzoxsKSrNUiM4LWelx/APUU0YE/x+PRXHEcuGjL7Z4t/deRX1FxcICFZyshIQ4kZUNaTt3pXHNg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.1.0.tgz", + "integrity": "sha512-39c7KuSWcYUqVxlBLZwfqdD/D6lS+jplNVWd6uAnk8EpnacaYGJRegvkqWyfw5c8KHukNMeEGF5JHrXPZYBM0w==", "dev": true, "requires": { "@types/emscripten": "^1.38.0", @@ -1452,9 +1488,9 @@ "dev": true }, "@yarnpkg/parsers": { - "version": "2.0.0-rc.13", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-2.0.0-rc.13.tgz", - "integrity": "sha512-R6dJTiy6Bx33uH3kDXJ3MfjG6vWBman+L+3Ycdz5DQeTRyD+ABUtssgsM2gKnJ8KgOOV0BWoX5cpS5yWCa/tbg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-2.1.0.tgz", + "integrity": "sha512-75OYQ6PMs1C3zm+W+T1xhLyVDX78zXQGEVHpWd4o/QwpAbhneB3/5FXVGRzI3gjPPWWSb/pKOPB1S6p0xmQD2Q==", "dev": true, "requires": { "js-yaml": "^3.10.0", @@ -1470,20 +1506,20 @@ } }, "@yarnpkg/pnp": { - "version": "2.0.0-rc.23", - "resolved": "https://registry.npmjs.org/@yarnpkg/pnp/-/pnp-2.0.0-rc.23.tgz", - "integrity": "sha512-ROBvzkQ+7nGq4GWaPgKS7S7p2OFmChnoPy/I6wsBfCo2KAWyEW+xsSLrx9Tr4bzm4XVg44gAWLmx6ncR2V4fcw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/pnp/-/pnp-2.1.0.tgz", + "integrity": "sha512-b8NlB71EFifv1jDX47nFaRXrykROxHcS7YuGb2dQ+Gp9gqJ0thIaZ3yB9+qWF8acdWtNcMpjCug4xkfAAR5Odw==", "dev": true, "requires": { "@types/node": "^13.7.0", - "@yarnpkg/fslib": "^2.0.0-rc.22", + "@yarnpkg/fslib": "^2.1.0", "tslib": "^1.13.0" }, "dependencies": { "@types/node": { - "version": "13.13.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.12.tgz", - "integrity": "sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw==", + "version": "13.13.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.15.tgz", + "integrity": "sha512-kwbcs0jySLxzLsa2nWUAGOd/s21WU1jebrEdtzhsj1D4Yps1EOuyI1Qcu+FD56dL7NRNIJtDDjcqIG22NwkgLw==", "dev": true }, "tslib": { @@ -1495,66 +1531,25 @@ } }, "@yarnpkg/shell": { - "version": "2.0.0-rc.13", - "resolved": "https://registry.npmjs.org/@yarnpkg/shell/-/shell-2.0.0-rc.13.tgz", - "integrity": "sha512-W00zIxLDVOH5QgGWT61FhD80nW2Doy9Mc+vTwodlv1Suh/AqUnmtkn5k4O+JV+Ky6Qhn+NQsHdq/OV8Hd0CzQA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/shell/-/shell-2.1.0.tgz", + "integrity": "sha512-9i9ZWqeKHGV0DOfdxTVq5zl73Li8Fg947v57uLBEaytNF+HywkDfouNkg/6HfgBrpI0WH8OJ9Pz/uDaE5cpctw==", "dev": true, "requires": { - "@yarnpkg/fslib": "^2.0.0-rc.22", - "@yarnpkg/parsers": "^2.0.0-rc.13", - "clipanion": "^2.4.1", + "@yarnpkg/fslib": "^2.1.0", + "@yarnpkg/parsers": "^2.1.0", + "clipanion": "^2.4.2", "cross-spawn": "7.0.3", "fast-glob": "^3.2.2", "stream-buffers": "^3.0.2", "tslib": "^1.13.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -1588,21 +1583,10 @@ "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==" }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true }, "acorn-node": { "version": "1.8.2", @@ -1628,23 +1612,27 @@ "es6-promisify": "^5.0.0" } }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, "ansi-align": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", @@ -1660,6 +1648,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -1688,20 +1682,33 @@ } } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "requires": { + "type-fest": "^0.11.0" + } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } }, "ansicolors": { "version": "0.3.2", @@ -1715,13 +1722,23 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", "dev": true }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", "dev": true, "requires": { - "default-require-extensions": "^2.0.0" + "default-require-extensions": "^3.0.0" } }, "archy": { @@ -1739,41 +1756,45 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true }, "asmcrypto.js": { "version": "0.22.0", @@ -1789,13 +1810,14 @@ } }, "asn1.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.2.0.tgz", - "integrity": "sha512-Q7hnYGGNYbcmGrCPulXfkEw7oW7qjWeM4ZTALmgpuIcZLxyqqKYWxCZg2UBm8bklrnB4m2mGyJPWfoktdORD8A==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, "asn1js": { @@ -1804,13 +1826,6 @@ "integrity": "sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ==", "requires": { "pvutils": "^1.0.17" - }, - "dependencies": { - "pvutils": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz", - "integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==" - } } }, "assert": { @@ -1848,36 +1863,32 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, "ast-types": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==", "dev": true }, - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" - }, - "async-limiter": { + "astral-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "auth-header": { "version": "1.0.0", @@ -1890,9 +1901,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, "b64-lite": { "version": "1.4.0", @@ -1918,6 +1929,48 @@ "chalk": "^1.1.3", "esutils": "^2.0.2", "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -2512,6 +2565,13 @@ "browserslist": "^3.2.6", "invariant": "^2.2.2", "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "babel-preset-metalab": { @@ -2584,6 +2644,21 @@ "globals": "^9.18.0", "invariant": "^2.2.2", "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "babel-types": { @@ -2607,65 +2682,15 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "base-64": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", "integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs=" }, "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==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "base64url": { "version": "3.0.1", @@ -2685,6 +2710,12 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, "bl": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", @@ -2696,32 +2727,22 @@ "readable-stream": "^3.4.0" }, "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } } } }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" }, "body-parser": { "version": "1.19.0", @@ -2740,6 +2761,19 @@ "type-is": "~1.6.17" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -2773,22 +2807,6 @@ "widest-line": "^3.1.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -2799,67 +2817,11 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -2873,30 +2835,11 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" } }, "brorand": { @@ -2939,16 +2882,16 @@ "dev": true }, "browserify": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.3.0.tgz", - "integrity": "sha512-BWaaD7alyGZVEBBwSTYx4iJF5DswIGzK17o8ai9w4iKRbYpk3EOiprRHMRRA8DCZFmFeOdx7A385w2XdFvxWmg==", + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.1.tgz", + "integrity": "sha512-EQX0h59Pp+0GtSRb5rL6OTfrttlzv+uyaUVlK6GX3w11SQ0jKPKyjC/54RhPR2ib2KmfcELM06e8FxcI5XNU2A==", "requires": { "JSONStream": "^1.0.3", "assert": "^1.4.0", "browser-pack": "^6.0.1", "browser-resolve": "^1.11.0", "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", + "buffer": "~5.2.1", "cached-path-relative": "^1.0.0", "concat-stream": "^1.6.0", "console-browserify": "^1.1.0", @@ -2966,7 +2909,7 @@ "inherits": "~2.0.1", "insert-module-globals": "^7.0.0", "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", + "mkdirp-classic": "^0.5.2", "module-deps": "^6.0.0", "os-browserify": "~0.3.0", "parents": "^1.0.1", @@ -2980,7 +2923,7 @@ "shasum": "^1.0.0", "shell-quote": "^1.6.1", "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", + "stream-http": "^3.0.0", "string_decoder": "^1.1.1", "subarg": "^1.0.0", "syntax-error": "^1.1.1", @@ -2993,10 +2936,16 @@ "xtend": "^4.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } }, "punycode": { "version": "1.4.1", @@ -3004,9 +2953,9 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -3031,14 +2980,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } } } }, @@ -3105,45 +3046,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==" - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "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" - }, - "dependencies": { - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - } - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } } } }, @@ -3164,18 +3066,10 @@ "electron-to-chromium": "^1.3.47" } }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -3202,12 +3096,11 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, "busboy": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", - "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", + "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", "requires": { - "dicer": "0.2.5", - "readable-stream": "1.1.x" + "dicer": "0.3.0" } }, "bytes": { @@ -3215,22 +3108,6 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "cacheable-lookup": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", @@ -3269,36 +3146,28 @@ "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==" }, "caching-transform": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", - "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", - "dev": true, - "requires": { - "hasha": "^3.0.0", - "make-dir": "^2.0.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.4.2" - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "requires": { - "callsites": "^0.2.0" + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" } }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "camelize": { "version": "1.0.0", @@ -3306,9 +3175,9 @@ "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { - "version": "1.0.30001099", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001099.tgz", - "integrity": "sha512-sdS9A+sQTk7wKoeuZBN/YMAHVztUfVnjDi4/UV3sDE8xoh7YR12hKW+pIdB3oqKGwr9XaFL2ovfzt9w8eUI5CA==" + "version": "1.0.30001109", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001109.tgz", + "integrity": "sha512-4JIXRodHzdS3HdK8nSgIqXYLExOvG+D2/EenSvcub2Kp3QEADjo2v2oUn5g0n0D+UNwG9BtwKOyGcSq2qvQXvQ==" }, "canonicalize": { "version": "1.0.1", @@ -3321,49 +3190,48 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chai-as-promised": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-6.0.0.tgz", - "integrity": "sha1-GgKkM6byTa+sY7nJb6FoTbGqjaY=", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", "dev": true, "requires": { "check-error": "^1.0.2" } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chat-pane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chat-pane/-/chat-pane-2.2.0.tgz", - "integrity": "sha512-zK6cuIwM/YVj4oK6OeWItUyy/EtkAAmCPLTKmKPOVJPf4PLw4QFyo200Q3nnJJgvWq4qsrfq5TFRyzRYPPTGWg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/chat-pane/-/chat-pane-2.3.2.tgz", + "integrity": "sha512-TmcSJfTilk0Bz0VhiS3xdvcaZ4miP5CooEtRApzJqhY35p64pHjL5NJ3R1bJJb9zw5MY9Yp+nOSRLpm+4gm46g==", "requires": { - "solid-ui": "^2.1.1" + "solid-ui": "^2.2.0" } }, "check-error": { @@ -3391,6 +3259,22 @@ "integrity": "sha1-mJdNx+0e5MYin44wX6cxOmiFp/I=", "dev": true }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, "chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -3412,33 +3296,12 @@ "safe-buffer": "^5.0.1" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "cli-boxes": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", @@ -3446,11 +3309,11 @@ "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^3.1.0" } }, "cli-spinner": { @@ -3460,14 +3323,14 @@ "dev": true }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "clipanion": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-2.4.2.tgz", - "integrity": "sha512-kBCYtQKI4/R/zjierdwoDAsNUSvoh4pX2tseYxgLYQcKIpdPsHZrFWiQOfbe2Scd/btsqJEc4q6g55q0p5DZAw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-2.4.4.tgz", + "integrity": "sha512-KjyCBz8xplftHjIK/nOqq/9b3hPlXbAAo/AxoITrO4yySpQ6a9QSJDAfOx9PfcRUHteeqbdNxZKSPfeFqQ7plg==", "dev": true }, "cliui": { @@ -3487,6 +3350,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -3527,41 +3396,32 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "coffee-script": { "version": "1.12.7", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==" }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colorette": { "version": "1.2.1", @@ -3595,9 +3455,9 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.0.0.tgz", + "integrity": "sha512-s7EA+hDtTYNhuXkTlhqew4txMZVdszBmKWSPEMxGr8ru8JXR7bLUFIAtPhcSuFdJQ0ILMxnJi8GkQL0yvDy/YA==" }, "commondir": { "version": "1.0.1", @@ -3614,7 +3474,8 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -3622,48 +3483,14 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", - "readable-stream": "^2.2.2", + "readable-stream": "^3.0.2", "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "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" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "config-chain": { @@ -3687,35 +3514,6 @@ "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" - }, - "dependencies": { - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } } }, "console-browserify": { @@ -3729,13 +3527,19 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "contacts-pane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/contacts-pane/-/contacts-pane-2.2.0.tgz", - "integrity": "sha512-MURqt/woeFMT4zM0/gQJlPuWfeTX/x5qeBmDJhivVIWiinrs9/fyL1vLYpP44qAgUs23CVldzvavie47jD6UBg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/contacts-pane/-/contacts-pane-2.3.0.tgz", + "integrity": "sha512-lpdWbiffnJesrFaCsA5bs1pMwd3DccQedpWPT1rQDCV7U70RhZRzu2ndpDSD2aLPBjlkO0ZTrNRqNLxzo5BQ0A==", "requires": { - "solid-ui": "^2.1.1" + "solid-ui": "^2.2.0" } }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -3777,11 +3581,6 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, "core-js": { "version": "2.6.11", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", @@ -3801,27 +3600,6 @@ "vary": "^1" } }, - "cp-file": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", - "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "make-dir": "^2.0.0", - "nested-error-stacks": "^2.0.0", - "pify": "^4.0.1", - "safe-buffer": "^5.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -3857,12 +3635,12 @@ } }, "cross-env": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", - "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.2.tgz", + "integrity": "sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw==", "dev": true, "requires": { - "cross-spawn": "^6.0.5" + "cross-spawn": "^7.0.1" } }, "cross-fetch": { @@ -3874,16 +3652,14 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-browserify": { @@ -3928,21 +3704,6 @@ "requires": { "@babel/runtime": "^7.8.3", "is-in-browser": "^1.0.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", - "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - } } }, "css-what": { @@ -3951,19 +3712,9 @@ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, "csstype": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.11.tgz", - "integrity": "sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw==" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.13.tgz", + "integrity": "sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==" }, "dash-ast": { "version": "1.0.0", @@ -3985,11 +3736,11 @@ "dev": true }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "debug-log": { @@ -4001,12 +3752,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decompress-response": { "version": "6.0.0", @@ -4026,28 +3773,14 @@ } }, "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } + "type-detect": "^4.0.0" } }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -4061,12 +3794,12 @@ "dev": true }, "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", + "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", "dev": true, "requires": { - "strip-bom": "^3.0.0" + "strip-bom": "^4.0.0" } }, "defer-to-connect": { @@ -4083,43 +3816,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -4145,14 +3841,14 @@ } }, "deglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", - "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-4.0.1.tgz", + "integrity": "sha512-/g+RDZ7yf2HvoW+E5Cy+K94YhgcFgr6C8LuHZD1O5HoNPkf3KY6RfXJ0DBGlB/NkLi5gml+G9zqRzk9S0mHZCg==", "dev": true, "requires": { "find-root": "^1.0.0", "glob": "^7.0.5", - "ignore": "^3.0.9", + "ignore": "^5.0.0", "pkg-config": "^1.1.0", "run-parallel": "^1.1.2", "uniq": "^1.0.1" @@ -4204,18 +3900,17 @@ } }, "dicer": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", - "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", + "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", "requires": { - "readable-stream": "1.1.x", "streamsearch": "0.1.2" } }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, "diffie-hellman": { @@ -4235,20 +3930,12 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "dirty-chai": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/dirty-chai/-/dirty-chai-1.2.2.tgz", - "integrity": "sha1-eEleYZY19/5EIZqkyDeEm/GDFC4=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/dirty-chai/-/dirty-chai-2.0.1.tgz", + "integrity": "sha512-ys79pWKvDMowIDEPC6Fig8d5THiC0DJ2gmTeGzVAoEH18J8OzLud0Jh7I9IWg3NSk8x2UocznUuFmfHCXYZx9w==", "dev": true }, "docker-modem": { @@ -4261,43 +3948,6 @@ "readable-stream": "^3.5.0", "split-ca": "^1.0.1", "ssh2": "^0.8.7" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } } }, "dockerfile-ast": { @@ -4310,21 +3960,12 @@ } }, "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } + "esutils": "^2.0.2" } }, "dom-serializer": { @@ -4383,6 +4024,14 @@ "source-map-support": "^0.5.7", "tslib": "^1.10.0", "xml2js": "0.4.23" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "duplexer2": { @@ -4393,11 +4042,6 @@ "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -4445,12 +4089,6 @@ "stream-shift": "^1.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -4506,14 +4144,14 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.497", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.497.tgz", - "integrity": "sha512-sPdW5bUDZwiFtoonuZCUwRGzsZmKzcLM0bMVhp6SMCfUG+B3faENLx3cE+o+K0Jl+MPuNA9s9cScyFjOlixZpQ==" + "version": "1.3.514", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.514.tgz", + "integrity": "sha512-8vb8zKIeGlZigeDzNWWthmGeLzo5CC43Lc+CZshMs7UXFVMPNLtXJGa/txedpu3OJFrXXVheBwp9PqOJJlHQ8w==" }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -4531,10 +4169,9 @@ "dev": true }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", @@ -4542,13 +4179,23 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "requires": { - "iconv-lite": "~0.4.13" - } - }, + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4572,48 +4219,69 @@ "is-arrayish": "^0.2.1" } }, - "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", - "dev": true, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "dev": true }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", "dev": true, "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, "es6-promise": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz", @@ -4636,41 +4304,6 @@ } } }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -4700,157 +4333,460 @@ "source-map": "~0.6.1" } }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, "eslint": { - "version": "3.10.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.10.2.tgz", - "integrity": "sha1-yaEOi/bp1lZRIEd4xQM0Hx6sPOc=", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.4.6", - "debug": "^2.1.1", - "doctrine": "^1.2.2", - "escope": "^3.6.0", - "espree": "^3.3.1", - "estraverse": "^4.2.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.2.0", - "ignore": "^3.2.0", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~1.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - }, - "dependencies": { - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" } }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "once": "^1.3.0" + "color-name": "1.1.3" } }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "eslint-config-standard": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz", - "integrity": "sha1-06aKr8cZFjnn7kQec0hzkCY1QpI=", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true }, "eslint-config-standard-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.2.0.tgz", - "integrity": "sha1-wkDibtkZoRpCqk3oBZRys4Jo1iA=", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-8.1.0.tgz", + "integrity": "sha512-ULVC8qH8qCqbU792ZOO6DaiaZyHNS/5CZt3hKqHkEhVlhPEPN3nfBqqxJCyp59XrjIBZPu1chMYe9T2DXZ7TMw==", "dev": true }, + "eslint-import-resolver-node": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.0", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", + "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "dev": true, + "requires": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + } + }, "eslint-plugin-promise": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.4.2.tgz", - "integrity": "sha1-G+J5Pq/i0YtbEjuBNsJp+AT+cSI=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", "dev": true }, "eslint-plugin-react": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.7.1.tgz", - "integrity": "sha1-Gvlq6lRYVoJRV9l8G1DVqPtkpac=", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", + "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", "dev": true, "requires": { - "doctrine": "^1.2.2", - "jsx-ast-utils": "^1.3.3" + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.1.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.10.1" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + } } }, "eslint-plugin-standard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz", - "integrity": "sha1-NYlpn/nJF/LCX3apFmh/ZBw2n/M=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", + "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - } + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -4859,6 +4795,23 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", @@ -4869,38 +4822,36 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "event-loop-spinner": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-1.1.0.tgz", - "integrity": "sha512-YVFs6dPpZIgH665kKckDktEVvSBccSYJmoZUfhNUdv5d3Xv+Q+SKF4Xis1jolq9aBzuW1ZZhQh/m/zU/TPdDhw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-2.0.0.tgz", + "integrity": "sha512-1y4j/Mhttr8ordvHkbDsGzGrlQaSYJoXD/3YKUxiOXIk7myEn9UPfybEk/lLtrcU3D4QvCNmVUxVQaPtvAIaUw==", "dev": true, "requires": { "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "eventemitter3": { @@ -4935,49 +4886,63 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "extend-shallow": { + "path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { - "is-extendable": "^0.1.0" + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } }, "expo-random": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-8.0.0.tgz", - "integrity": "sha512-ukDC3eGSEliBsnobX1bQRAwti9GE8ZEW53AHFf1fVy+JuAhhZm+M5HW7T0ptdbLjm46VpTDGIO4vq+qxeXAl7g==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-8.2.1.tgz", + "integrity": "sha512-5qcR00xMONKXy6QyNWOcslD0Ka6FYE+5wDLxeG6sZYakBMZ+7CZqXIHU56z2oY3ZjrA6sqy5mJcj1naNOweHMw==", "optional": true, "requires": { "base64-js": "^1.3.0" @@ -5020,6 +4985,19 @@ "vary": "~1.1.2" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", @@ -5033,15 +5011,13 @@ } }, "express-handlebars": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.1.0.tgz", - "integrity": "sha512-7QlaXnSREMmN5P2o4gmpUZDfJlLtfBka9d6r7/ccXaU7rPp76odw9YYtwZYdIiha2JqwiaG6o2Wu6NZJQ0u7Fg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-5.1.0.tgz", + "integrity": "sha512-EHu7Lz1q3OOPSv1wyxN0pOMhAcljx0UUACrFAnSgoBdKc6YCBFl7qW3w6TQZ8d6kWA14xAH9pLMsR0N9vJ3iGw==", "requires": { - "glob": "^7.1.3", - "graceful-fs": "^4.1.2", - "handlebars": "^4.1.2", - "object.assign": "^4.1.0", - "promise": "^8.0.2" + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "handlebars": "^4.7.6" } }, "express-session": { @@ -5059,10 +5035,28 @@ "uid-safe": "~2.1.5" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" } } }, @@ -5071,92 +5065,14 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-1.1.1.tgz", - "integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=", - "requires": { - "extend": "^3.0.0", - "spawn-sync": "^1.0.15", - "tmp": "^0.0.29" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "extsprintf": { @@ -5165,9 +5081,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "3.2.4", @@ -5181,57 +5097,12 @@ "merge2": "^1.3.0", "micromatch": "^4.0.2", "picomatch": "^2.2.1" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -5254,22 +5125,20 @@ } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, "file-uri-to-path": { @@ -5279,24 +5148,11 @@ "dev": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -5311,6 +5167,21 @@ "parseurl": "~1.3.3", "statuses": "~1.5.0", "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "find-babel-config": { @@ -5323,14 +5194,14 @@ } }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } }, "find-root": { @@ -5340,24 +5211,49 @@ "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "dependencies": { "rimraf": { @@ -5371,12 +5267,18 @@ } } }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, "folder-pane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-2.2.0.tgz", - "integrity": "sha512-RjczSoVqUX0WXjFhwOlFaZsWaPCXnorUBTsocWNKWEGwJF61chdnj8t/a3i0UMMYOyXL58+3fZvTxT648I9RmQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-2.3.0.tgz", + "integrity": "sha512-BVHEaHzdUUmLQgQaeBN/UA3cp6qQNSRJsdI90jcVdDMyVVoM3uB3DftIOuYDIpeyIWOxwau9YHFwOzi+uKP1Dw==", "requires": { - "solid-ui": "^2.1.1" + "solid-ui": "^2.2.0" } }, "follow-redirects": { @@ -5384,31 +5286,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.1.tgz", "integrity": "sha512-tmRv0AVuR7ZyouUHLeNSiO6pqulF7dYa3s19c6t+wz9LD69/uSzdMxJ2S91nTI9U3rt/IldxpzMOFejp6f0hjg==" }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, "foreground-child": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - } + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" } }, "forever-agent": { @@ -5426,19 +5311,10 @@ "mime-types": "^2.1.12" } }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.x" - } - }, "formidable": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", - "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", + "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", "dev": true }, "forwarded": { @@ -5446,14 +5322,6 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -5468,15 +5336,10 @@ "readable-stream": "^2.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5502,6 +5365,12 @@ } } }, + "fromentries": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", + "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", + "dev": true + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -5509,12 +5378,25 @@ "dev": true }, "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "dependencies": { + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + } } }, "fs-minipass": { @@ -5531,6 +5413,13 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", @@ -5539,6 +5428,32 @@ "requires": { "readable-stream": "1.1.x", "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, "function-bind": { @@ -5546,28 +5461,22 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gar": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==" }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true }, "get-assigned-identifiers": { "version": "1.2.0", @@ -5595,10 +5504,16 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", "dev": true }, "get-stream": { @@ -5624,10 +5539,19 @@ "readable-stream": "2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "readable-stream": { @@ -5662,11 +5586,6 @@ } } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -5736,39 +5655,37 @@ "ignore": "^5.1.1", "merge2": "^1.2.3", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } } }, "got": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/got/-/got-11.4.0.tgz", - "integrity": "sha512-XysJZuZNVpaQ37Oo2LV90MIkPeYITehyy1A0QzO1JwOXm8EWuEf9eeGk2XuHePvLEGnm9AVOI37bHwD6KYyBtg==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/got/-/got-11.5.1.tgz", + "integrity": "sha512-reQEZcEBMTGnujmQ+Wm97mJs/OK6INtO6HmLI+xt3+9CvnRwWjXutUvb2mqr+Ao4Lu05Rx6+udx9sOQAmExMxA==", "dev": true, "requires": { - "@sindresorhus/is": "^2.1.1", + "@sindresorhus/is": "^3.0.0", "@szmarczak/http-timer": "^4.0.5", "@types/cacheable-request": "^6.0.1", "@types/responselike": "^1.0.0", "cacheable-lookup": "^5.0.3", "cacheable-request": "^7.0.1", "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.4.5", + "http2-wrapper": "^1.0.0-beta.5.0", "lowercase-keys": "^2.0.0", "p-cancelable": "^2.0.0", "responselike": "^2.0.0" } }, "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true }, "growl": { "version": "1.10.5", @@ -5825,11 +5742,11 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^6.5.5", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, @@ -5847,47 +5764,24 @@ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + } } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-yarn": { "version": "2.1.0", @@ -5903,26 +5797,6 @@ "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - } } }, "hash.js": { @@ -5935,18 +5809,33 @@ } }, "hasha": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", + "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", "dev": true, "requires": { - "is-stream": "^1.0.1" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "dependencies": { + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "hmac-drbg": { @@ -5959,20 +5848,36 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" + "lru-cache": "^6.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "htmlescape": { @@ -5991,31 +5896,6 @@ "entities": "^1.1.1", "inherits": "^2.0.1", "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "http-cache-semantics": { @@ -6071,18 +5951,25 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.5.tgz", + "integrity": "sha512-CKzML7u4RdGob8wuKI//H8Ein6wNTEQR7yjVEzPbhBLGdOfkfvgTnp2HLnniKBDP9QW4eG10/724iTWLBeER3g==", "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^4.0.0", - "lodash": "^4.17.5", - "micromatch": "^3.1.9" + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.19", + "micromatch": "^4.0.2" } }, "http-signature": { @@ -6096,9 +5983,9 @@ } }, "http2-wrapper": { - "version": "1.0.0-beta.4.7", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.4.7.tgz", - "integrity": "sha512-Lps+Stww4OdXyoQaHRiD1UG5v+iiM/QutahJrTw/0f3aGl52/lA5JZ7oVKwshln9SFUE54eT2denWhbEBFMcvQ==", + "version": "1.0.0-beta.5.2", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", + "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", "dev": true, "requires": { "quick-lru": "^5.1.1", @@ -6128,12 +6015,6 @@ "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -6156,9 +6037,9 @@ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", "dev": true }, "immediate": { @@ -6167,6 +6048,24 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", "dev": true }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -6179,6 +6078,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -6214,23 +6119,22 @@ } }, "inquirer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-1.2.3.tgz", - "integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=", - "requires": { - "ansi-escapes": "^1.1.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "external-editor": "^1.1.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "mute-stream": "0.0.6", - "pinkie-promise": "^2.0.0", - "run-async": "^2.2.0", - "rx": "^4.1.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, @@ -6249,14 +6153,48 @@ "through2": "^2.0.0", "undeclared-identifiers": "^1.1.2", "xtend": "^4.0.0" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, "intl-messageformat-parser": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.8.1.tgz", @@ -6292,22 +6230,22 @@ "dev": true }, "ip-range-check": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ip-range-check/-/ip-range-check-0.0.2.tgz", - "integrity": "sha1-YFyFloeqTxhGORjUYZDYs2maKTw=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ip-range-check/-/ip-range-check-0.2.0.tgz", + "integrity": "sha512-oaM3l/3gHbLlt/tCWLvt0mj1qUaI+STuRFnUvARGCujK9vvU61+2JsDpmkMzR4VsJhuFXWWgeKKVnwwoFfzCqw==", "requires": { "ipaddr.js": "^1.0.1" } }, "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz", + "integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==" }, "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is": { "version": "3.3.0", @@ -6315,23 +6253,11 @@ "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true }, "is-arrayish": { "version": "0.2.1", @@ -6339,6 +6265,15 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -6347,8 +6282,7 @@ "is-callable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", - "dev": true + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" }, "is-ci": { "version": "2.0.0", @@ -6359,23 +6293,10 @@ "ci-info": "^2.0.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" }, "is-deflate": { "version": "1.0.0", @@ -6383,46 +6304,21 @@ "integrity": "sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "is-docker": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", "dev": true }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", @@ -6454,32 +6350,19 @@ } }, "is-ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-2.0.0.tgz", - "integrity": "sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", "requires": { - "ip-regex": "^2.0.0" + "ip-regex": "^4.0.0" } }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", "dev": true }, - "is-my-json-valid": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", - "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-npm": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", @@ -6487,22 +6370,9 @@ "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-obj": { "version": "2.0.0", @@ -6516,29 +6386,18 @@ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", "requires": { - "isobject": "^3.0.1" + "has-symbols": "^1.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", "dev": true }, "is-stream": { @@ -6546,6 +6405,20 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -6554,7 +6427,8 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, "is-wsl": { "version": "2.2.0", @@ -6572,9 +6446,9 @@ "dev": true }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -6582,11 +6456,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", @@ -6608,9 +6477,9 @@ } }, "isomorphic-webcrypto": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.5.tgz", - "integrity": "sha512-xcX4NaD5PoLEVozpVCJWJJTif+g4BDBmyBgH9vBUqDdQG8e47t6fdRuOBQN3FFxHqnuPsw3OXf7yfhtxEpMp6w==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/isomorphic-webcrypto/-/isomorphic-webcrypto-2.3.6.tgz", + "integrity": "sha512-d1prB3b0UMWOao5DK3+O2Dr5ZJCakzB5Q+2kCWNkNuM9ln7VB8TSw2SwUjbnErzg7cgsYja+VPQaeBtXEojpew==", "requires": { "@peculiar/webcrypto": "^1.0.22", "@unimodules/core": "*", @@ -6631,171 +6500,122 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "issue-pane": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/issue-pane/-/issue-pane-2.3.0.tgz", - "integrity": "sha512-pJKmKgrDQrbHzVNPr9Mrk8JVu1KfEAQZAs+Wrr7vCXivJyGB4A6B6dPECsnpC0ysXmvQeozjaPb9170H2keNcw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/issue-pane/-/issue-pane-2.3.1.tgz", + "integrity": "sha512-UQirn1niIH/71JmzE20Fq7xdeMSWr/n3kZL/avORp8Sy5BwCoKWAJXFdiv4pq3X80ofgqC0NAJiwAw/9kEmv5A==", "requires": { - "pane-registry": "^2.1.0", - "rdflib": "^1.2.2", - "solid-ui": "^2.1.1" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", - "requires": { - "queue-microtask": "^1.1.2" - } - }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } + "pane-registry": "^2.2.1", + "rdflib": "^1.3.1", + "solid-ui": "^2.2.0" } }, "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", "dev": true, "requires": { - "append-transform": "^1.0.0" + "append-transform": "^2.0.0" } }, "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", - "dev": true - } + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" } }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "istanbul-lib-processinfo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", + "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "archy": "^1.0.0", + "cross-spawn": "^7.0.0", + "istanbul-lib-coverage": "^3.0.0-alpha.1", + "make-dir": "^3.0.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^3.3.3" }, "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", + "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" } }, "js-base64": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.1.tgz", - "integrity": "sha512-G5x2saUTupU9D/xBY9snJs3TxvwX8EkpLFiYlPpDt/VmMHOXprnSU1nxiTmFbijCX4BLF/cMRIfAcC5BiMYgFQ==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.3.tgz", + "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==" }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -6860,6 +6680,12 @@ "jsonify": "~0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -6884,13 +6710,16 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, "jsonld": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-0.4.12.tgz", - "integrity": "sha1-oC8gXVNBQU3xtthBTxuWenEgc+g=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-3.1.1.tgz", + "integrity": "sha512-GrqERUMZtMcdP8WgTt7drF3Ixf0dERA2Q4X3hTLyKt7CJTTQ5cM1vAHuX797piAejuh/KwNdKklKVB1kfYcJbw==", "requires": { - "es6-promise": "^2.0.0", - "pkginfo": "~0.4.0", - "request": "^2.61.0", + "canonicalize": "^1.0.1", + "lru-cache": "^5.1.1", + "object.fromentries": "^2.0.2", + "rdf-canonize": "^1.0.2", + "request": "^2.88.0", + "semver": "^6.3.0", "xmldom": "0.1.19" }, "dependencies": { @@ -6906,12 +6735,6 @@ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "jsonwebtoken": { "version": "8.5.1", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", @@ -6929,10 +6752,10 @@ "semver": "^5.6.0" }, "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -7096,10 +6919,14 @@ } }, "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } }, "jszip": { "version": "3.5.0", @@ -7113,12 +6940,6 @@ "set-immediate-shim": "~1.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -7151,6 +6972,12 @@ } } }, + "just-extend": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.1.0.tgz", + "integrity": "sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==", + "dev": true + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -7171,40 +6998,13 @@ } }, "jwk-to-pem": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.3.tgz", - "integrity": "sha512-T1MA0L3DVB2mOIZytZyNTdcAAOJscLLCi25dgzQtkHjTcuwpRW3BFnjj0eEpMORfJyZtFZ5wy++Ys6wsMolPsA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-2.0.4.tgz", + "integrity": "sha512-4CCK9UBHNWjWtfSHdyu3I6rA8vlN5cWqnVuwY0cOMyXtw6M1tP+yrM8GZpwk+P932Dc3cLag4d35B6CqyIf89A==", "requires": { "asn1.js": "^5.3.0", - "elliptic": "^6.5.2", + "elliptic": "^6.5.3", "safe-buffer": "^5.0.1" - }, - "dependencies": { - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "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" - } - } } }, "jws": { @@ -7225,17 +7025,23 @@ "json-buffer": "3.0.1" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, "kvplus-files": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/kvplus-files/-/kvplus-files-0.0.4.tgz", "integrity": "sha1-bxqmr2sKaThO0GQY4YSwnHDqNUE=", "requires": { "fs-extra": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + } } }, "labeled-stream-splicer": { @@ -7290,15 +7096,29 @@ } }, "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", + "parse-json": "^2.2.0", + "pify": "^2.0.0", "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } } }, "localstorage-memory": { @@ -7308,19 +7128,18 @@ "dev": true }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.assign": { "version": "4.2.0", @@ -7346,6 +7165,24 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, + "lodash.constant": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash.constant/-/lodash.constant-3.0.0.tgz", + "integrity": "sha1-v+Bczn5RWzEokl1jYhOEIL1iSRA=", + "dev": true + }, + "lodash.filter": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", + "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=", + "dev": true + }, + "lodash.flatmap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", + "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", + "dev": true + }, "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -7358,17 +7195,35 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=", + "dev": true + }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.has": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", + "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", + "dev": true + }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" }, + "lodash.isarray": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz", + "integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM=", + "dev": true + }, "lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -7386,6 +7241,12 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, "lodash.isinteger": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", @@ -7406,6 +7267,24 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=", + "dev": true + }, + "lodash.keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", + "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=", + "dev": true + }, + "lodash.map": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", + "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=", + "dev": true + }, "lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", @@ -7416,12 +7295,24 @@ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, + "lodash.reduce": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=", + "dev": true + }, "lodash.set": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", "dev": true }, + "lodash.size": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.size/-/lodash.size-4.2.0.tgz", + "integrity": "sha1-cf517T6r2yvLc6GwtPUcOS7ie4Y=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -7433,152 +7324,143 @@ "integrity": "sha1-O23qo31g+xFnE8RsXxfqGQ7EjWQ=", "dev": true }, - "logic-solver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/logic-solver/-/logic-solver-2.0.1.tgz", - "integrity": "sha1-6fpHAC612M2nYW1BY5uXVS62dL4=", - "dev": true, - "requires": { - "underscore": "^1.7.0" - } - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "macos-release": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.0.tgz", - "integrity": "sha512-ko6deozZYiAkqa/0gmcsz+p4jSy3gY7/ZsCEokPaYd8k+6/aXGkiTgr61+Owup7Sf+xjqW8u2ElhoM9SEcEfuA==", + "lodash.values": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", + "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=", "dev": true }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "mashlib": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.4.0.tgz", - "integrity": "sha512-WXCsyxl2aBFBt1/v/l7VGF7QzeIpr11sxbky7zKM7vQICAElI8Ag232czRvLVHuoqhdeo2DFkE4btWZnoSM5xA==", - "requires": { - "normalize.css": "^8.0.1", - "rdflib": "^1.2.3", - "solid-namespace": "^0.3.0", - "solid-panes": "^3.2.0", - "solid-ui": "^2.1.1" + "chalk": "^2.4.2" }, "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } + "color-convert": "^1.9.0" } }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { - "queue-microtask": "^1.1.2" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" + "color-name": "1.1.3" } }, - "solid-namespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.3.0.tgz", - "integrity": "sha512-IKHYI5KMnN2AkuIADDKOpRLvs8ynBu+hF+QpIGDRrFnogpYZaG09DqB8NCLMR2sOoNVcYkjfnEumlSTDfeVlLA==" + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, + "logic-solver": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/logic-solver/-/logic-solver-2.0.1.tgz", + "integrity": "sha1-6fpHAC612M2nYW1BY5uXVS62dL4=", + "dev": true, + "requires": { + "underscore": "^1.7.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "macos-release": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", + "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "mashlib": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.5.0.tgz", + "integrity": "sha512-WYz8nKtln42A+ygYD8RYumlPTT6n3CWvP9JSFHdbcgKwKOyGyJGACs4f4VpEtXBn0mUQ5cJaMW+tXtbF5WNm4A==", + "requires": { + "normalize.css": "^8.0.1", + "rdflib": "^1.3.1", + "solid-namespace": "^0.4.0", + "solid-panes": "^3.3.0", + "solid-ui": "^2.2.0" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -7595,11 +7477,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "meeting-pane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/meeting-pane/-/meeting-pane-2.2.0.tgz", - "integrity": "sha512-8Ay2PIW+0lt/+xG3ijQISzi9I4toXDQVFYHSE8pQJsKVjvHKxbgduXgGupg4eZLaZ66Nlwjuf4ymFHSkZ+lH3g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/meeting-pane/-/meeting-pane-2.3.0.tgz", + "integrity": "sha512-m9hAYT3Yx2e2nKxM4bJ7XCqFHFsUYOnuKDoJaC9gZLLJJWX/TdxPyc06NQb+7UKsG7PuSmQoxaHw03IZQrKITQ==", "requires": { - "solid-ui": "^2.1.1" + "solid-ui": "^2.2.0" } }, "merge-descriptors": { @@ -7607,15 +7489,6 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -7628,23 +7501,12 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, "miller-rabin": { @@ -7675,10 +7537,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mimic-response": { "version": "1.0.1", @@ -7717,14 +7578,6 @@ "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } } }, "minizlib": { @@ -7736,25 +7589,6 @@ "minipass": "^2.9.0" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdir-recursive": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/mkdir-recursive/-/mkdir-recursive-0.4.0.tgz", @@ -7768,76 +7602,51 @@ "minimist": "^1.2.5" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.0.1.tgz", + "integrity": "sha512-vefaXfdYI8+Yo8nPZQQi0QO2o+5q9UIMX1jZ1XMmK3+4+CQjc7+B0hPdUeglXiTlr8IHMVRo63IhO9Mzt6fxOg==", "dev": true, "requires": { + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", + "chokidar": "3.3.1", + "debug": "3.2.6", + "diff": "4.0.2", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "4.1.0", + "glob": "7.1.6", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ms": "2.1.2", + "object.assign": "4.1.0", + "promise.allsettled": "1.0.2", + "serialize-javascript": "3.0.0", + "strip-json-comments": "3.0.1", + "supports-color": "7.1.0", + "which": "2.0.2", + "wide-align": "1.1.3", + "workerpool": "6.0.0", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" }, "dependencies": { - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "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" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "ms": "^2.1.1" } } } @@ -7864,10 +7673,16 @@ "xtend": "^4.0.0" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } }, "readable-stream": { "version": "2.3.7", @@ -7899,9 +7714,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "msrcrypto": { "version": "1.5.8", @@ -7909,39 +7724,18 @@ "integrity": "sha512-ujZ0TRuozHKKm6eGbKHfXef7f+esIhEckmThVnz7RNyiOJd7a6MXj2JGBoL9cnPDW+JMG16MoTUh5X+XXjI66Q==" }, "mute-stream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.6.tgz", - "integrity": "sha1-SJYrGeFp/R38JAs/HnMXYnu8R9s=" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "n3": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/n3/-/n3-0.4.5.tgz", - "integrity": "sha1-W3DTq2ohyejUyb2io9TZCQm+tQg=" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.6.0.tgz", + "integrity": "sha512-wqnhi/NhD/O4Tt/SK1dgiC1hLJWG7nwmvh5n7wFDKlxI8QlmvyxmY1b9deVh1D08GCZJtDYvwdmJ5EdZXgp9bg==", + "requires": { + "queue-microtask": "^1.1.2" } }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -7960,6 +7754,12 @@ "yargs": "^3.19.0" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -7983,6 +7783,35 @@ "wrap-ansi": "^2.0.0" } }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -8035,12 +7864,6 @@ "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -8050,15 +7873,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", - "dev": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "netmask": { "version": "1.0.6", @@ -8066,90 +7883,63 @@ "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", "dev": true }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "nock": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/nock/-/nock-9.6.1.tgz", - "integrity": "sha512-EDgl/WgNQ0C1BZZlASOQkQdE6tAWXJi8QQlugqzN64JJkvZ7ILijZuG24r4vCC7yOfnm6HKpne5AGExLGCeBWg==", + "nise": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-4.0.4.tgz", + "integrity": "sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A==", "dev": true, "requires": { - "chai": "^4.1.2", - "debug": "^3.1.0", - "deep-equal": "^1.0.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.5", - "mkdirp": "^0.5.0", - "propagate": "^1.0.0", - "qs": "^6.5.1", - "semver": "^5.5.0" + "@sinonjs/commons": "^1.7.0", + "@sinonjs/fake-timers": "^6.0.0", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" }, "dependencies": { - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "isarray": "0.0.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true } } }, + "nock": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.0.3.tgz", + "integrity": "sha512-hDscKS5chEfyEiF8J1syz8mkkH6Wetp04ECAAPNdL5k6e6WmRgx9FZZNnCrjePNdykgiiPXORBcXbNmMzFOP5w==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash.set": "^4.3.2", + "propagate": "^2.0.0" + } + }, "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-forge": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", - "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz", + "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==" }, "node-mocks-http": { "version": "1.8.1", @@ -8168,10 +7958,20 @@ "type-is": "^1.6.18" } }, + "node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, + "requires": { + "process-on-spawn": "^1.0.0" + } + }, "node-rsa": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/node-rsa/-/node-rsa-0.4.2.tgz", "integrity": "sha1-1jkXKewWqDDtWjgEKzFX0tXXJTA=", + "dev": true, "requires": { "asn1": "0.2.3" }, @@ -8179,7 +7979,8 @@ "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true } } }, @@ -8194,9 +7995,9 @@ } }, "nodemailer": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-3.1.8.tgz", - "integrity": "sha1-/r+sy0vSc2eEc6MJxstLSi88SOM=" + "version": "6.4.11", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.4.11.tgz", + "integrity": "sha512-BVZBDi+aJV4O38rxsUh164Dk1NCqgh6Cm0rQSb9SK/DHGll/DrCMnycVDD7msJgZCnmVa8ASo8EZzR7jsgTukQ==" }, "normalize-package-data": { "version": "2.5.0", @@ -8208,8 +8009,28 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", @@ -8237,6 +8058,14 @@ "dev": true, "requires": { "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } } }, "nth-check": { @@ -8250,45 +8079,59 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "nyc": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", - "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "caching-transform": "^3.0.2", - "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.3", - "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" }, "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -8299,66 +8142,75 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true - } - } - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, "requires": { - "is-buffer": "^1.1.5" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "object-hash": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==", "dev": true }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -8370,12 +8222,38 @@ "object-keys": "^1.0.11" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, "requires": { - "isobject": "^3.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "oidc-op-express": { @@ -8409,14 +8287,17 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "requires": { + "mimic-fn": "^2.1.0" + } }, "open": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", - "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz", + "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==", "dev": true, "requires": { "is-docker": "^2.0.0", @@ -8424,25 +8305,17 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } + "word-wrap": "~1.2.3" } }, "os-browserify": { @@ -8450,12 +8323,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", @@ -8478,7 +8345,8 @@ "os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=" + "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", + "dev": true }, "os-tmpdir": { "version": "1.0.2", @@ -8508,28 +8376,31 @@ "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==" }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-try": { "version": "2.2.0", @@ -8551,23 +8422,6 @@ "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "pac-resolver": { @@ -8584,13 +8438,13 @@ } }, "package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", "dev": true, "requires": { "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", + "hasha": "^5.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" } @@ -8723,74 +8577,29 @@ "requires": { "lowercase-keys": "^1.0.0" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "pane-registry": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-2.1.1.tgz", - "integrity": "sha512-f1Ivhxu4178Cn2ZLbD669/k4WiWYK2Jq/ewxoR5a3ZYQYjq/rPGrhpYWFRFcj6Zja1rN0zg2Rn4EpvbHtCsyPw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-2.2.1.tgz", + "integrity": "sha512-4wsBHjUF3zDhEa70eIWI+JngRkt3azaLrtCSP7pQbDUQOK0xR47huNhUrQihsj9gLRLxoew6YqkM6P7NHxBWyw==", "requires": { - "rdflib": "^1.2.3" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", - "requires": { - "queue-microtask": "^1.1.2" - } - }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } + "rdflib": "^1.3.1" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" } }, "parents": { @@ -8827,13 +8636,12 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "^1.2.0" } }, "parse-link-header": { @@ -8858,11 +8666,6 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, "path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", @@ -8878,16 +8681,10 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -8906,13 +8703,10 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pathval": { "version": "1.1.0", @@ -8943,35 +8737,6 @@ "through2": "^2.0.3" } }, - "pem-jwk": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-1.5.1.tgz", - "integrity": "sha1-eoY3/S9nqCflfAxC4cI8P9Us+wE=", - "dev": true, - "requires": { - "asn1.js": "1.0.3" - }, - "dependencies": { - "asn1.js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-1.0.3.tgz", - "integrity": "sha1-KBuj7B8kSP52X5Kk7s+IP+E2S1Q=", - "dev": true, - "requires": { - "bn.js": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "bn.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-1.3.0.tgz", - "integrity": "sha1-DbTL+W+PI7dC9by50ap6mZSgXoM=", - "dev": true, - "optional": true - } - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -8987,17 +8752,85 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, "requires": { - "pinkie": "^2.0.0" + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } } }, "pkg-config": { @@ -9012,12 +8845,12 @@ } }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } }, "pkginfo": { @@ -9026,16 +8859,11 @@ "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, "pre-commit": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", @@ -9058,6 +8886,31 @@ "which": "^1.2.9" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", @@ -9066,6 +8919,12 @@ "requires": { "isexe": "^2.0.0" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, @@ -9102,18 +8961,28 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "dev": true, + "requires": { + "fromentries": "^1.2.0" + } + }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "promise": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.0.3.tgz", - "integrity": "sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, "requires": { - "asap": "~2.0.6" + "asap": "~2.0.3" } }, "promise-deferred": { @@ -9123,17 +8992,19 @@ "dev": true, "requires": { "promise": "^7.3.1" - }, - "dependencies": { - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - } + } + }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" } }, "promiseback": { @@ -9150,7 +9021,6 @@ "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "optional": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -9158,9 +9028,9 @@ } }, "propagate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-1.0.0.tgz", - "integrity": "sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, "proper-lockfile": { @@ -9179,12 +9049,12 @@ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" + "ipaddr.js": "1.9.1" } }, "proxy-agent": { @@ -9201,38 +9071,6 @@ "pac-proxy-agent": "^3.0.1", "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^4.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } } }, "proxy-from-env": { @@ -9248,9 +9086,9 @@ "dev": true }, "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "public-encrypt": { "version": "4.0.3", @@ -9313,13 +9151,25 @@ } }, "pvtsutils": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.0.9.tgz", - "integrity": "sha512-/kDsuCKPqJuIzn37w6+iN+TiSrN+zrwPEd7FjT61oNbRvceGdsS94fMEWZ4/h6QZU5EZhBMiV+79IYedroP/Yw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.0.10.tgz", + "integrity": "sha512-8ZKQcxnZKTn+fpDh7wL4yKax5fdl3UJzT8Jv49djZpB/dzPxacyN1Sez90b6YLdOmvIr9vaySJ5gw4aUA1EdSw==", "requires": { "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, + "pvutils": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz", + "integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==" + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -9336,9 +9186,9 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "queue-microtask": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.3.tgz", - "integrity": "sha512-zC1ZDLKFhZSa8vAdFbkOGouHcOUMgUAI/2/3on/KktpY+BaVqABkzDSsCSvJfmLbICOnrEuF9VIMezZf+T0mBA==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.4.tgz", + "integrity": "sha512-eY/4Obve9cE5FK8YvC1cJsm5cr7XvAurul8UtBDJ2PR1p5NmAwHtvAt5ftcLtwYRCUKNhxCneZZlxmUDFoSeKA==" }, "quick-lru": { "version": "5.1.1", @@ -9394,95 +9244,41 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - } - }, - "rdf-canonize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-1.0.3.tgz", - "integrity": "sha512-piLMOB5Q6LJSVx2XzmdpHktYVb8TmVTy8coXJBFtdkcMC96DknZOuzpAYqCWx2ERZX7xEW+mMi8/wDuMJS/95w==", - "requires": { - "node-forge": "^0.8.1", - "semver": "^5.6.0" }, "dependencies": { - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true } } }, - "rdf-ns": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rdf-ns/-/rdf-ns-0.1.0.tgz", - "integrity": "sha1-OKwyu0izydyulTTIWrSGRAi92BY=" + "rdf-canonize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-1.1.0.tgz", + "integrity": "sha512-DV06OnhVfl2zcZJQCt+YvU+hoZVgpyQpNFLeAmghq8RJybUxD3B4LRzlBquYS5k+LLd8/c3g5Gnhkqjw5qRMvg==", + "requires": { + "node-forge": "^0.9.1", + "semver": "^6.3.0" + } }, "rdflib": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-0.21.1.tgz", - "integrity": "sha512-NGcKNkeHCUKQwpbkmmNzcm+QwveCZSdb11EbaVW7XGMCwDrHni6f1AbqD5Hy0pdzRfMmidkAerORbsj02oPSdw==", - "requires": { - "@babel/runtime": "^7.4.4", - "async": "^0.9.x", - "jsonld": "^0.4.5", - "n3": "^0.4.1", - "solid-auth-cli": "^0.1.12", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.22" - }, - "dependencies": { - "solid-auth-cli": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/solid-auth-cli/-/solid-auth-cli-0.1.14.tgz", - "integrity": "sha512-G1xhi4hASPW5hib1UxN10rm0X2lTYqqNQELJ4neRjcM07qWnkKUG08Q4fMFz5xeKAWjDh8ytqhvq5M349/CZsw==", - "requires": { - "@solid/cli": "^0.1.1", - "async": "^2.6.1", - "isomorphic-fetch": "^2.2.1", - "jsonld": "^1.4.0", - "n3": "^1.0.3", - "solid-rest": "^1.0.2" - }, - "dependencies": { - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "jsonld": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.0.tgz", - "integrity": "sha512-a3bwbR0wqFstxKsGoimUIIKBdfJ+yb9kWK+WK7MpVyvfYtITMpUtF3sNoN1wG/W+jGDgya0ACRh++jtTozxtyQ==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - } - }, - "n3": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.2.1.tgz", - "integrity": "sha512-5va8zsh02owDul7+5bj35cGOzWU7DeJHwQK3F8NDKtiYqPgWcFTg/zLxJs1JeRF2n6j5PI/eR9DCokS7nLrevA==" - }, - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - } + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.3.1.tgz", + "integrity": "sha512-GOzfQcD+KhMx/pjw+QNXEAcSOfwNlNy59Hp0tor21l7HaAGiPCKMGNh3Ot2P5v/bzazmek1BG56JqNFIzUEyig==", + "requires": { + "@babel/runtime": "^7.10.3", + "async": "^3.2.0", + "jsonld": "^3.1.1", + "n3": "^1.4.0", + "xmldom": "^0.3.0" } }, "react-is": { - "version": "16.13.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", - "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==", - "optional": true + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-native-securerandom": { "version": "0.1.1", @@ -9501,11 +9297,6 @@ "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -9536,63 +9327,105 @@ } }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "^4.0.0", + "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" }, "dependencies": { - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true } } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { - "resolve": "^1.1.6" + "picomatch": "^2.0.7" } }, "recursive-readdir": { @@ -9609,9 +9442,9 @@ "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, "regenerator-transform": { "version": "0.10.1", @@ -9623,14 +9456,11 @@ "private": "^0.1.6" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true }, "regexpu-core": { "version": "2.0.0", @@ -9643,9 +9473,9 @@ } }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", "dev": true, "requires": { "rc": "^1.2.8" @@ -9682,20 +9512,10 @@ "es6-error": "^4.0.1" } }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -9704,7 +9524,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -9714,9 +9534,16 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } } }, "require-directory": { @@ -9731,33 +9558,15 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { "path-parse": "^1.0.6" } @@ -9769,16 +9578,11 @@ "dev": true }, "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -9789,19 +9593,14 @@ } }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -9814,9 +9613,9 @@ "dev": true }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" } @@ -9831,62 +9630,40 @@ } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "run-parallel": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, "rxjs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz", "integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==", - "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -9900,9 +9677,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-diff": { "version": "3.1.1", @@ -9911,14 +9688,6 @@ "dev": true, "requires": { "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } } }, "send": { @@ -9941,6 +9710,21 @@ "statuses": "~1.5.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -9948,6 +9732,12 @@ } } }, + "serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", + "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", + "dev": true + }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -9971,27 +9761,6 @@ "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -10024,18 +9793,18 @@ } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { @@ -10043,64 +9812,35 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "sinon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", - "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.0.2.tgz", + "integrity": "sha512-0uF8Q/QHkizNUmbK3LRFqx5cpTttEVXudywY9Uwzy8bTfZUhljZ7ARzSxnRHWYWtVTeh4Cw+tTb3iU21FQVO9A==", "dev": true, "requires": { - "diff": "^3.1.0", - "formatio": "1.2.0", - "lolex": "^1.6.0", - "native-promise-only": "^0.8.1", - "path-to-regexp": "^1.7.0", - "samsam": "^1.1.3", - "text-encoding": "0.6.4", - "type-detect": "^4.0.0" - }, - "dependencies": { - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - } + "@sinonjs/commons": "^1.7.2", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/formatio": "^5.0.1", + "@sinonjs/samsam": "^5.0.3", + "diff": "^4.0.2", + "nise": "^4.0.1", + "supports-color": "^7.1.0" } }, "sinon-chai": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", - "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.5.0.tgz", + "integrity": "sha512-IifbusYiQBpUxxFJkR3wTU68xzBN0+bxCScEaKMjBvAQERg6FnTTc1F17rseLb1tjmkJ23730AXpFI0c47FgAg==", "dev": true }, "slash": { @@ -10110,126 +9850,61 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "color-convert": "^1.9.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { - "kind-of": "^6.0.0" + "color-name": "1.1.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true }, "snyk": { - "version": "1.360.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.360.0.tgz", - "integrity": "sha512-Q0eqLOTGvXxSWhQCiOcasSJq8LyYkhnQa/MxxeULjy8VK06uWru9ytvTwan3lKMDDwCFExS3dXQHFUWVNzoxjw==", + "version": "1.369.2", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.369.2.tgz", + "integrity": "sha512-LgY0lHycWag6wVNH/B1FlM4CWyE+O55j7bMa5CtVp/W/id4DKglpYxKjN56Vb9f7krOFtxbQiksE1W70rJOUoQ==", "dev": true, "requires": { - "@snyk/cli-interface": "2.8.0", + "@snyk/cli-interface": "2.8.1", "@snyk/dep-graph": "1.18.3", "@snyk/gemfile": "1.2.0", "@snyk/graphlib": "2.1.9-patch", @@ -10252,12 +9927,12 @@ "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "3.1.0", - "snyk-docker-plugin": "3.13.0", - "snyk-go-plugin": "1.14.2", + "snyk-docker-plugin": "3.16.0", + "snyk-go-plugin": "1.16.0", "snyk-gradle-plugin": "3.5.1", "snyk-module": "3.1.0", - "snyk-mvn-plugin": "2.17.1", - "snyk-nodejs-lockfile-parser": "1.25.0", + "snyk-mvn-plugin": "2.18.2", + "snyk-nodejs-lockfile-parser": "1.26.3", "snyk-nuget-plugin": "1.18.1", "snyk-php-plugin": "1.9.0", "snyk-policy": "1.14.1", @@ -10307,31 +9982,25 @@ "supports-color": "^5.3.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "ms": "^2.1.1" + "color-name": "1.1.3" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "strip-ansi": { @@ -10351,6 +10020,12 @@ "requires": { "has-flag": "^3.0.0" } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -10363,73 +10038,40 @@ "@snyk/lodash": "4.17.15-patch", "debug": "^4.1.1", "nconf": "^0.10.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "snyk-docker-plugin": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-3.13.0.tgz", - "integrity": "sha512-sOfl0VOog8LxRvl/GUX2lNxXDY0EqgRq32nqPieG9Cq9e1f5h6EU3d8CmxyFo+MaHOOP7vTdaN8TUe2uuJ2Ysw==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-3.16.0.tgz", + "integrity": "sha512-i11WxMhsZxcFKn123LeA+u77NN7uWqWgPfQ6dvkACJnvouWHZidkOAxBOmYU49x8VS7dEQSe2Ym0bgr6EHn4cQ==", "dev": true, "requires": { "@snyk/rpm-parser": "^2.0.0", - "@snyk/snyk-docker-pull": "^3.1.3", + "@snyk/snyk-docker-pull": "^3.2.0", "debug": "^4.1.1", "docker-modem": "2.1.3", "dockerfile-ast": "0.0.19", - "event-loop-spinner": "^1.1.0", + "event-loop-spinner": "^2.0.0", "gunzip-maybe": "^1.4.2", + "mkdirp": "^1.0.4", "semver": "^6.1.0", "snyk-nodejs-lockfile-parser": "1.22.0", "tar-stream": "^2.1.0", "tmp": "^0.2.1", - "tslib": "^1" + "tslib": "^1", + "uuid": "^8.2.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, "snyk-nodejs-lockfile-parser": { @@ -10447,6 +10089,23 @@ "source-map-support": "^0.5.7", "tslib": "^1.9.3", "uuid": "^3.3.2" + }, + "dependencies": { + "event-loop-spinner": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-1.1.0.tgz", + "integrity": "sha512-YVFs6dPpZIgH665kKckDktEVvSBccSYJmoZUfhNUdv5d3Xv+Q+SKF4Xis1jolq9aBzuW1ZZhQh/m/zU/TPdDhw==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "tmp": { @@ -10457,6 +10116,12 @@ "requires": { "rimraf": "^3.0.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -10468,44 +10133,84 @@ "requires": { "toml": "^3.0.0", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "snyk-go-plugin": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.14.2.tgz", - "integrity": "sha512-r/uaM3gk/RF7m/VGYswxlnA6I+kMgK3eVPsPyf7400BhqF8noh8K7v10CEg67mHA4JM0l7dZASqejr/5kKw9ZQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.16.0.tgz", + "integrity": "sha512-XNGHEFyP+pCzcqmXnj5T/1Oy6AZzm2WkTSuUpohWQ/09ecMRCCv2yrr/kwMQemrKN4+7CoJS/9xfm3GnNlzVHA==", "dev": true, "requires": { + "@snyk/dep-graph": "1.19.3", "@snyk/graphlib": "2.1.9-patch", "debug": "^4.1.1", "snyk-go-parser": "1.4.1", - "tmp": "0.1.0", + "tmp": "0.2.0", "tslib": "^1.10.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "@snyk/dep-graph": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.3.tgz", + "integrity": "sha512-WJLUFKBokoFK5imi0t8Dkyj+uqtS/5Ziuf4oE/OOFX30UqP1ffMDkv9/3sqBJQVQ9FjdgsX3Cm8JZMtMlYRc6w==", "dev": true, "requires": { - "ms": "^2.1.1" + "@snyk/graphlib": "2.1.9-patch.2", + "lodash.isequal": "^4.5.0", + "object-hash": "^2.0.3", + "semver": "^6.0.0", + "source-map-support": "^0.5.19", + "tslib": "^1.13.0" + }, + "dependencies": { + "@snyk/graphlib": { + "version": "2.1.9-patch.2", + "resolved": "https://registry.npmjs.org/@snyk/graphlib/-/graphlib-2.1.9-patch.2.tgz", + "integrity": "sha512-BjJzOXDNzoEMBOjSks7vadu5f0c39SeorJMi9vUvvWM5dcE22CZqcN9VMRW5DYTifUJiCWszkm5TOyfYfB0bfg==", + "dev": true, + "requires": { + "lodash.clone": "^4.5.0", + "lodash.constant": "^3.0.0", + "lodash.filter": "^4.6.0", + "lodash.foreach": "^4.5.0", + "lodash.has": "^4.5.2", + "lodash.isarray": "^4.0.0", + "lodash.isempty": "^4.4.0", + "lodash.isfunction": "^3.0.9", + "lodash.isundefined": "^3.0.1", + "lodash.keys": "^4.2.0", + "lodash.map": "^4.6.0", + "lodash.reduce": "^4.6.0", + "lodash.size": "^4.2.0", + "lodash.transform": "^4.6.0", + "lodash.union": "^4.6.0", + "lodash.values": "^4.3.0" + } + } } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.0.tgz", + "integrity": "sha512-spsb5g6EiPmteS5TcOAECU3rltCMDMp4VMU2Sb0+WttN4qGobEkMAd+dkr1cubscN08JGNDX765dPbGImbG7MQ==", "dev": true, "requires": { - "rimraf": "^2.6.3" + "rimraf": "^3.0.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -10524,14 +10229,45 @@ "tslib": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "@snyk/cli-interface": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.8.0.tgz", + "integrity": "sha512-St/G39iJG1zQK15L24kcVYM2gmFc/ylBCcBqU2DMZKJKwOPccKLUO6s+dWIUXMccQ+DFS6TuHPvuAKQNi9C4Yg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" + "@snyk/dep-graph": "1.19.0", + "@snyk/graphlib": "2.1.9-patch", + "tslib": "^1.9.3" + }, + "dependencies": { + "@snyk/dep-graph": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.19.0.tgz", + "integrity": "sha512-/0phOICMk4hkX2KtZgi+4KNd5G9oYDIlxQDQk+ui2xl4gonPvK6Q5MFzHP7Xet1YY/XoU33ox41i+IO48qZ+zQ==", + "dev": true, + "requires": { + "@snyk/graphlib": "2.1.9-patch", + "lodash.isequal": "^4.5.0", + "object-hash": "^2.0.3", + "semver": "^6.0.0", + "source-map-support": "^0.5.19", + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", + "dev": true + } + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "chalk": { @@ -10544,60 +10280,6 @@ "supports-color": "^7.1.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -10606,12 +10288,6 @@ "requires": { "rimraf": "^3.0.0" } - }, - "tslib": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", - "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", - "dev": true } } }, @@ -10623,87 +10299,31 @@ "requires": { "debug": "^4.1.1", "hosted-git-info": "^3.0.4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", - "dev": true, - "requires": { - "lru-cache": "^5.1.1" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } } }, "snyk-mvn-plugin": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.17.1.tgz", - "integrity": "sha512-U7ZKrKVnUW2gcyYIzvc0w9nRYh4NXv+wShTIcs++ARCAJOG9A4nxh+ZRmINQ7Sy7EB2qLIRwN4Ssr17+y2mhuA==", + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.18.2.tgz", + "integrity": "sha512-A36YmfpeEXGsKoChm644DysKG40d5y5MZnldkpsbrLz37R3JMxkt4igMACZ9QJZAkiWjVs28hOKyyT1vuMPlHg==", "dev": true, "requires": { - "@snyk/cli-interface": "2.5.0", - "@snyk/java-call-graph-builder": "1.10.0", + "@snyk/cli-interface": "2.8.1", + "@snyk/java-call-graph-builder": "1.12.3", "debug": "^4.1.1", "needle": "^2.5.0", "tmp": "^0.1.0", "tslib": "1.11.1" }, "dependencies": { - "@snyk/cli-interface": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.5.0.tgz", - "integrity": "sha512-XMc2SCFH4RBSncZgoPb+BBlNq0NYpEpCzptKi69qyMpBy0VsRqIQqddedaazMCU1xEpXTytq6KMYpzUafZzp5Q==", - "dev": true, - "requires": { - "tslib": "^1.9.3" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "ms": "^2.1.1" + "glob": "^7.1.3" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "tmp": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", @@ -10722,16 +10342,17 @@ } }, "snyk-nodejs-lockfile-parser": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.25.0.tgz", - "integrity": "sha512-eikMzCCxwViIh885TMRgr5X1DjDYJI7eK+F9bqtpL/UuPealpnefUoH/LGicPtUSRknMcZvI4nzM0QSNMJ3+5w==", + "version": "1.26.3", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.26.3.tgz", + "integrity": "sha512-mBQ6vhnXAeyMxlnl9amjJWpA+/3qqXwM8Sj/P+9uH2TByOFLxdGzMNQFcl3q/H2yUdcs/epVdXJp09A2dK2glA==", "dev": true, "requires": { "@snyk/graphlib": "2.1.9-patch", - "@yarnpkg/core": "^2.0.0-rc.26", + "@yarnpkg/core": "^2.0.0-rc.29", "@yarnpkg/lockfile": "^1.1.0", "event-loop-spinner": "^2.0.0", "lodash.clonedeep": "^4.5.0", + "lodash.flatmap": "^4.5.0", "lodash.isempty": "^4.4.0", "lodash.set": "^4.3.2", "lodash.topairs": "^4.3.0", @@ -10743,14 +10364,23 @@ "yaml": "^1.9.2" }, "dependencies": { - "event-loop-spinner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-2.0.0.tgz", - "integrity": "sha512-1y4j/Mhttr8ordvHkbDsGzGrlQaSYJoXD/3YKUxiOXIk7myEn9UPfybEk/lLtrcU3D4QvCNmVUxVQaPtvAIaUw==", - "dev": true, - "requires": { - "tslib": "^1.10.0" - } + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -10768,22 +10398,7 @@ "tslib": "^1.11.2", "xml2js": "^0.4.17" }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, + "dependencies": { "jszip": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.3.0.tgz", @@ -10796,12 +10411,6 @@ "set-immediate-shim": "~1.0.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -10847,6 +10456,14 @@ "dev": true, "requires": { "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "snyk-php-plugin": { @@ -10900,25 +10517,10 @@ "integrity": "sha512-pF4HjZGSog75kGq7B1InK/wt/N08BuPATo+7HRfv7gZUzccebwv/fmWVGs/j6LvSiLWpCuGGhql51M/wcQsNzA==", "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "snyk-module": { @@ -10954,17 +10556,6 @@ "requires": { "@snyk/cli-interface": "^2.0.3", "tmp": "0.0.33" - }, - "dependencies": { - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - } } }, "snyk-resolve": { @@ -10985,12 +10576,6 @@ "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true } } }, @@ -11034,10 +10619,26 @@ "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "snyk-module": { @@ -11049,6 +10650,12 @@ "debug": "^3.1.0", "hosted-git-info": "^2.7.1" } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, @@ -11065,27 +10672,15 @@ "tslib": "^1.10.0" }, "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "ms": "^2.1.1" + "glob": "^7.1.3" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "tmp": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", @@ -11094,6 +10689,12 @@ "requires": { "rimraf": "^2.6.3" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, @@ -11127,10 +10728,20 @@ "ms": "^2.1.1" } }, - "ms": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true } } @@ -11187,35 +10798,6 @@ "lodash": "^4.17.14" } }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonld": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", @@ -11228,42 +10810,10 @@ "xmldom": "0.1.19" } }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", - "requires": { - "queue-microtask": "^1.1.2" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "solid-rest": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/solid-rest/-/solid-rest-1.2.1.tgz", - "integrity": "sha512-uYOgiUstLDXAeyAqIfOeI/0jmQ9S7ZpWpE5+8rKScgt3HXUOcAk+PXMkqx4BUfSMfVO84onsDzbHKWjyxXaMqQ==", - "requires": { - "concat-stream": "^2.0.0", - "cross-fetch": "^3.0.4", - "fs-extra": "^8.0.1", - "mime-types": "^2.1.24" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "xmldom": { "version": "0.1.19", @@ -11273,127 +10823,57 @@ } }, "solid-auth-client": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/solid-auth-client/-/solid-auth-client-2.4.1.tgz", - "integrity": "sha512-IkwuTpJz6WSJNxKy57V1zJdkjAgZue3DLzHhDSz6Rs/9TS4CZFAZJRUUS3Y5KjJw9R3k1TayiQDB21/kAtidFw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/solid-auth-client/-/solid-auth-client-2.5.0.tgz", + "integrity": "sha512-50uwi6e3yfGcNgu4VPMLsbCGkeZZBBSUng8OzY8YYKh/k/GVTGFMjisJRIlNJ6kyqL2dmaBtlwLkiAcGJh5ecA==", "requires": { - "@babel/runtime": "^7.0.0", - "@solid/oidc-rp": "^0.8.0", + "@babel/runtime": "^7.10.5", + "@solid/oidc-rp": "^0.11.0", "auth-header": "^1.0.0", - "commander": "^2.11.0", + "commander": "^6.0.0", "isomorphic-fetch": "^2.2.1" } }, - "solid-auth-tls": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/solid-auth-tls/-/solid-auth-tls-0.1.2.tgz", - "integrity": "sha1-FoBf9pUd/PNczfTw29JhaQsjvLo=" - }, "solid-namespace": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.1.0.tgz", - "integrity": "sha1-OqF86FOY808uZfyky9CxJnqwJZ0=", - "requires": { - "rdf-ns": "^0.1.0" - } + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.4.0.tgz", + "integrity": "sha512-uC91w8NiVJa951YcLl9bu75nmm99Pkq9JlcqQ2Bu04L4Rl/YXOh1zwObfkTrznoy2pfkshfkcNKxpmixOMA4jA==" }, "solid-panes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-3.2.0.tgz", - "integrity": "sha512-E4zKCorugeMJ6qERWIBBhlzIQz2/M8Ov/6xu9Y9RNRYEQh42QT9smgYy9M/GGZpo7UJxZwGljlb1VQV58O9QVg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-3.3.0.tgz", + "integrity": "sha512-t/ylH2V+iHiyj9zOhl2t6Ju2jSw5U10MlkdE3s4FrO2cwvOFuV6sS0mRj4vTqQi1BpCa2uTlWMaknwhnG3VvjA==", "requires": { "@babel/polyfill": "^7.10.4", "@solid/better-simple-slideshow": "^0.1.0", - "babel-preset-env": "^1.6.1", + "babel-preset-env": "^1.7.0", "babel-preset-metalab": "^1.0.0", - "chat-pane": "^2.2.0", - "contacts-pane": "^2.2.0", - "folder-pane": "^2.2.0", - "issue-pane": "^2.3.0", - "meeting-pane": "^2.2.0", + "chat-pane": "^2.3.2", + "contacts-pane": "^2.3.0", + "folder-pane": "^2.3.0", + "issue-pane": "^2.3.1", + "meeting-pane": "^2.3.0", "mime-types": "^2.1.27", - "pane-registry": "^2.1.0", - "rdflib": "^1.2.2", - "solid-namespace": "^0.3.0", - "solid-ui": "^2.1.1", - "source-pane": "^2.2.0" - }, - "dependencies": { - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", - "requires": { - "queue-microtask": "^1.1.2" - } - }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - }, - "solid-namespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.3.0.tgz", - "integrity": "sha512-IKHYI5KMnN2AkuIADDKOpRLvs8ynBu+hF+QpIGDRrFnogpYZaG09DqB8NCLMR2sOoNVcYkjfnEumlSTDfeVlLA==" - } + "pane-registry": "^2.2.1", + "rdflib": "^1.3.1", + "solid-auth-cli": "^1.0.14", + "solid-auth-client": "^2.5.0", + "solid-namespace": "^0.4.0", + "solid-ui": "^2.2.0", + "source-pane": "^2.2.1" } }, "solid-rest": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/solid-rest/-/solid-rest-1.0.7.tgz", - "integrity": "sha512-OiNKV1nW00RVdnd88HfCVIcY+LKI6VAc6DbY0Tujy5/eiURkCnxqAkMJXLd10lKmpQZ2NNYpsfBN/QWnoIBczA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/solid-rest/-/solid-rest-1.2.1.tgz", + "integrity": "sha512-uYOgiUstLDXAeyAqIfOeI/0jmQ9S7ZpWpE5+8rKScgt3HXUOcAk+PXMkqx4BUfSMfVO84onsDzbHKWjyxXaMqQ==", "requires": { "concat-stream": "^2.0.0", + "cross-fetch": "^3.0.4", "fs-extra": "^8.0.1", - "mime-types": "^2.1.24", - "node-fetch": "^2.6.0" + "mime-types": "^2.1.24" }, "dependencies": { - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -11412,146 +10892,46 @@ "graceful-fs": "^4.1.6" } }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" } } }, "solid-ui": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.1.1.tgz", - "integrity": "sha512-9z1GfdKFSbAEclE4LfO1DPPEMJMEZ540m+jRAJAZxmj4jg5MynO7JRDUvcsHJFbE0MRlZ3v8yTsARsOda82TqA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.2.0.tgz", + "integrity": "sha512-AkQtkqq3OjHsxoLt8yKC2O0yMPGHWuJrNTd8UJResBLxXhnKkO67tBiTlSaHEsPKlmeH1CmW+puDzBxfncDGLA==", "requires": { - "@babel/runtime": "^7.10.3", - "@types/node": "^13.13.12", + "@babel/runtime": "^7.10.5", "escape-html": "^1.0.3", "jss": "^10.3.0", "jss-preset-default": "^10.3.0", "mime-types": "^2.1.27", "node-uuid": "^1.4.7", - "pane-registry": "^2.1.1", - "rdflib": "^1.2.3", - "solid-auth-client": "^2.4.1", - "solid-auth-tls": "^0.1.2", - "solid-namespace": "^0.3.0", - "ts-jest": "^25.5.1" + "pane-registry": "^2.2.1", + "rdflib": "^1.3.1", + "solid-auth-client": "^2.5.0", + "solid-namespace": "^0.4.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.5.tgz", - "integrity": "sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@types/node": { - "version": "13.13.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.14.tgz", - "integrity": "sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g==" - }, - "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.5.0.tgz", - "integrity": "sha512-k4R/EOMnnRYFt+hXgqyKOHjzmshaLuHUFgrz5nsp9nAojCZuAHrro/DsIM2tS0Bgx6ed7DM5Ks3q2teJ8n7HnQ==", - "requires": { - "queue-microtask": "^1.1.2" - } - }, "node-uuid": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, - "rdflib": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.2.3.tgz", - "integrity": "sha512-/HJhBtIfeu6oKlkqLl7CswRkTNL/R+irMGlriav6xTpwqjHYHUh2aarmAbQmODW7Os6f6X+fGzKKe7lSKmQxlw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.8.0", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - }, - "solid-namespace": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.3.0.tgz", - "integrity": "sha512-IKHYI5KMnN2AkuIADDKOpRLvs8ynBu+hF+QpIGDRrFnogpYZaG09DqB8NCLMR2sOoNVcYkjfnEumlSTDfeVlLA==" } } }, "solid-ws": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/solid-ws/-/solid-ws-0.3.1.tgz", - "integrity": "sha512-j8B34hix67+2io6OzfjU9FZ2qcWFYMPUmUKjWfKEYuDw6OfQPZTXJ4rQXC4jf+tQx3eGR+yy/Bmss8gQ8kqdkg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/solid-ws/-/solid-ws-0.4.0.tgz", + "integrity": "sha512-5dYAVVcFUx3Wi74mSGsKnxB0Sn4zcxbGdeLPM5JB07S0F/FUaUfpgDN+TX5sHBYbfjNB4HMNecwNLrfWsXaNxw==", "requires": { - "debug": "^4.1.0", - "run-parallel": "^1.1.4", - "uuid": "^3.0.1", - "ws": "^7.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "debug": "^4.1.1", + "run-parallel": "^1.1.9", + "uuid": "^8.3.0", + "ws": "^7.3.1" } }, "source-map": { @@ -11559,18 +10939,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.19", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", @@ -11581,46 +10949,86 @@ "source-map": "^0.6.0" } }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, "source-pane": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/source-pane/-/source-pane-2.2.0.tgz", - "integrity": "sha512-rlW8fa6OH/+UQuEdviEwL82XpQ2Qr23mSU7UuStnN1S4elPqmmJZ/+7kvjeufXgereDeceUeu7RohLQL8qHl6g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/source-pane/-/source-pane-2.2.1.tgz", + "integrity": "sha512-iP3WMeDvEQwFdcBOeXoDwNkkmKqass/1fmbCFi5UvmRzXfCQuWuDbDsUG7fTxU9qTTgv1p8EcW2XbG0KynBBbw==", "requires": { - "solid-ui": "^2.1.1" + "solid-ui": "^2.2.0" } }, "spawn-sync": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", "integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=", + "dev": true, "requires": { "concat-stream": "^1.4.7", "os-shim": "^0.1.2" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "spawn-wrap": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", - "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", "dev": true, "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", "signal-exit": "^3.0.2", - "which": "^1.3.0" + "which": "^2.0.1" } }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -11628,15 +11036,15 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -11655,14 +11063,6 @@ "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11706,40 +11106,32 @@ } }, "standard": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/standard/-/standard-8.6.0.tgz", - "integrity": "sha1-Y1Eyvnv7VnwpIQBfMPnjUOR1Kq0=", + "version": "14.3.4", + "resolved": "https://registry.npmjs.org/standard/-/standard-14.3.4.tgz", + "integrity": "sha512-+lpOkFssMkljJ6eaILmqxHQ2n4csuEABmcubLTb9almFi1ElDzXb1819fjf/5ygSyePCq4kU2wMdb2fBfb9P9Q==", "dev": true, "requires": { - "eslint": "~3.10.2", - "eslint-config-standard": "6.2.1", - "eslint-config-standard-jsx": "3.2.0", - "eslint-plugin-promise": "~3.4.0", - "eslint-plugin-react": "~6.7.1", - "eslint-plugin-standard": "~2.0.1", - "standard-engine": "~5.2.0" + "eslint": "~6.8.0", + "eslint-config-standard": "14.1.1", + "eslint-config-standard-jsx": "8.1.0", + "eslint-plugin-import": "~2.18.0", + "eslint-plugin-node": "~10.0.0", + "eslint-plugin-promise": "~4.2.1", + "eslint-plugin-react": "~7.14.2", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "^12.0.0" } }, "standard-engine": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-5.2.0.tgz", - "integrity": "sha1-QAZgrlrM6K/U22D/IhSpGQrXkKM=", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-12.1.0.tgz", + "integrity": "sha512-DVJnWM1CGkag4ucFLGdiYWa5/kJURPONmMmk17p8FT5NE4UnPZB1vxWnXnRo2sPSL78pWJG8xEM+1Tu19z0deg==", "dev": true, "requires": { - "deglob": "^2.0.0", - "find-root": "^1.0.0", - "get-stdin": "^5.0.1", - "home-or-tmp": "^2.0.0", - "minimist": "^1.1.0", - "pkg-config": "^1.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "deglob": "^4.0.1", + "get-stdin": "^7.0.0", + "minimist": "^1.2.5", + "pkg-conf": "^3.1.0" } }, "standard-error": { @@ -11755,25 +11147,6 @@ "standard-error": ">= 1.1.0 < 2" } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -11793,11 +11166,6 @@ "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -11842,11 +11210,6 @@ "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -11877,49 +11240,14 @@ } }, "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", + "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", "requires": { "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "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" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" } }, "stream-shift": { @@ -11937,11 +11265,6 @@ "readable-stream": "^2.0.2" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -12017,32 +11340,53 @@ "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.0" } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-eof": { @@ -12052,9 +11396,9 @@ "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, "subarg": { @@ -12092,22 +11436,10 @@ "ms": "^2.1.1" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -12137,9 +11469,9 @@ } }, "supertest": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.4.2.tgz", - "integrity": "sha512-WZWbwceHUo2P36RoEIdXvmqfs47idNNZjCuJOqDz6rvtkk8ym56aU5oglORCpPeXGxT7l9rkJ41+O1lffQXYSA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-4.0.2.tgz", + "integrity": "sha512-1BAbvrOZsGA3YTCWqbmh14L0YEq0EGICX/nBnfkfVJn7SrxQV1I3pMYjSzG9y/7ZU2V9dWqyqk2POwxlb09duQ==", "dev": true, "requires": { "methods": "^1.1.2", @@ -12147,9 +11479,12 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "requires": { + "has-flag": "^4.0.0" + } }, "symbol-observable": { "version": "1.2.0", @@ -12165,33 +11500,27 @@ } }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, "is-fullwidth-code-point": { @@ -12200,32 +11529,24 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -12243,20 +11564,12 @@ "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", "yallist": "^3.0.3" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } } }, "tar-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", - "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", + "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", "dev": true, "requires": { "bl": "^4.0.1", @@ -12264,28 +11577,6 @@ "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - } } }, "temp-dir": { @@ -12309,6 +11600,12 @@ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -12319,26 +11616,26 @@ "dev": true }, "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" } }, "text-encoder-lite": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/text-encoder-lite/-/text-encoder-lite-1.0.1.tgz", - "integrity": "sha512-D+NrUlXDV6Ed9DgYkYqKOsUI/3QSCBzqGooxP2nt27yM7/bxdbEUO7DokP7R8Gwn4r2CNQon3A1Oehw7yAZBzA==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/text-encoder-lite/-/text-encoder-lite-2.0.0.tgz", + "integrity": "sha512-bo08ND8LlBwPeU23EluRUcO3p2Rsb/eN5EIfOVqfRmblNDEVKK5IzM9Qfidvo+odT0hhV8mpXQcP/M5MMzABXw==" }, "text-encoding": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=" + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true }, "text-table": { "version": "0.2.0", @@ -12358,17 +11655,6 @@ "dev": true, "requires": { "promise": ">=3.2 <8" - }, - "dependencies": { - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - } } }, "through": { @@ -12385,15 +11671,10 @@ "xtend": "~4.0.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -12444,65 +11725,30 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, "tmp": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", - "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "~1.0.1" + "os-tmpdir": "~1.0.2" } }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "toidentifier": { @@ -12517,27 +11763,20 @@ "dev": true }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" } }, "tree-kill": { @@ -12546,100 +11785,10 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "ts-jest": { - "version": "25.5.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", - "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "lodash.memoize": "4.x", - "make-error": "1.x", - "micromatch": "4.x", - "mkdirp": "0.x", - "semver": "6.x", - "yargs-parser": "18.x" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==" }, "tty-browserify": { "version": "0.0.1", @@ -12666,17 +11815,6 @@ "dev": true, "requires": { "n3": "^1.4.0" - }, - "dependencies": { - "n3": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.4.0.tgz", - "integrity": "sha512-aEo8Jc+ZM9GoBtt7/OW+7aczMh4wLdt1IUcT8JCgv/b+ko5PCvkR0793rzWdu7+wJmA93sNb/3yM+01i9pz6fA==", - "dev": true, - "requires": { - "queue-microtask": "^1.1.2" - } - } } }, "tweetnacl": { @@ -12684,12 +11822,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", - "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==", - "dev": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -12700,16 +11832,15 @@ } }, "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" }, "type-is": { "version": "1.6.18", @@ -12749,9 +11880,9 @@ } }, "ulid": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ulid/-/ulid-0.1.0.tgz", - "integrity": "sha1-kEQULStLe7JVHtfW4tMBxG4dNyU=" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", + "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==" }, "umd": { "version": "3.0.3", @@ -12776,17 +11907,6 @@ "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", "dev": true }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -12803,56 +11923,15 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, "update-notifier": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", @@ -12874,16 +11953,6 @@ "xdg-basedir": "^4.0.0" }, "dependencies": { - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -12893,36 +11962,6 @@ "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -12939,11 +11978,6 @@ "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz", "integrity": "sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==" }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -12969,20 +12003,6 @@ "prepend-http": "^2.0.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -13009,9 +12029,15 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true }, "valid-url": { "version": "1.0.9", @@ -13029,9 +12055,9 @@ } }, "validator": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-10.11.0.tgz", - "integrity": "sha512-X/p3UZerAIsbBfN/IwahhYaBbY68EN/UQBWHtsbXGT5bfrH/p4NQzUCG1kF/rtKaNpnJ7jAu6NGTdSNtyNIXMw==" + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz", + "integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw==" }, "vary": { "version": "1.1.2", @@ -13065,18 +12091,28 @@ "dev": true }, "webcrypto-core": { - "version": "1.0.17", - "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.0.17.tgz", - "integrity": "sha512-7jxTLgtM+TahBPErx/Dd2XvxFDfWJrHxjVeTSvIa4LSgiYrmCPlC2INiAMAfb8MbtHiwJKKqF5sPS0AWNjBbXw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.1.2.tgz", + "integrity": "sha512-LxM/dTcXr/ZnwwKLox0tGEOIqvP7KIJ4Hk/fFPX20tr1EgqTmpEFZinmu4FzoGVbs6e4jI1priQKCDrOBD3L6w==", "requires": { - "pvtsutils": "^1.0.9", - "tslib": "^1.10.0" + "@peculiar/asn1-schema": "^2.0.1", + "@peculiar/json-schema": "^1.1.10", + "asn1js": "^2.0.26", + "pvtsutils": "^1.0.10", + "tslib": "^1.11.2" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "webcrypto-shim": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.5.tgz", - "integrity": "sha512-mE+E00gulvbLjHaAwl0kph60oOLQRsKyivEFgV9DMM/3Y05F1vZvGq12hAcNzHRnYxyEOABBT/XMtwGSg5xA7A==" + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/webcrypto-shim/-/webcrypto-shim-0.1.6.tgz", + "integrity": "sha512-0o612s3S5z3IkDSRghIwd3Ul4X8NRmmZDpt6PWGI9gSM+nygVvrfzGjhIh4vwzlOJxYxS0fcFD1wh3yznuVzFg==" }, "webid": { "version": "0.3.11", @@ -13088,6 +12124,39 @@ "request": "^2.87.0" }, "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "jsonld": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-0.4.12.tgz", + "integrity": "sha1-oC8gXVNBQU3xtthBTxuWenEgc+g=", + "requires": { + "es6-promise": "^2.0.0", + "pkginfo": "~0.4.0", + "request": "^2.61.0", + "xmldom": "0.1.19" + }, + "dependencies": { + "xmldom": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", + "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" + } + } + }, + "n3": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/n3/-/n3-0.4.5.tgz", + "integrity": "sha1-W3DTq2ohyejUyb2io9TZCQm+tQg=" + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==" + }, "rdflib": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-0.2.11.tgz", @@ -13105,29 +12174,29 @@ } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" }, "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz", + "integrity": "sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==" }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz", + "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==", "requires": { "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^2.0.2", + "webidl-conversions": "^5.0.0" } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -13139,55 +12208,57 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "requires": { - "string-width": "^4.0.0" + "string-width": "^1.0.2 || 2" }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "ansi-regex": "^3.0.0" } } } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, "window-size": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", @@ -13203,11 +12274,23 @@ "execa": "^1.0.0" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "workerpool": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", + "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "dev": true + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -13234,6 +12317,27 @@ "color-convert": "^1.9.0" } }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -13268,32 +12372,30 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" } }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.1.tgz", - "integrity": "sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==", - "requires": { - "async-limiter": "^1.0.0" - } + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" }, "xdg-basedir": { "version": "4.0.0", @@ -13318,9 +12420,9 @@ "dev": true }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz", + "integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==" }, "xmlhttprequest": { "version": "1.8.0", @@ -13345,10 +12447,9 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yaml": { "version": "1.10.0", @@ -13357,9 +12458,9 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { "cliui": "^5.0.0", @@ -13371,7 +12472,7 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "yargs-parser": "^13.1.2" }, "dependencies": { "ansi-regex": { @@ -13380,12 +12481,46 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -13417,6 +12552,17 @@ "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } } } } diff --git a/package.json b/package.json index a218fdbe4..535a12b42 100644 --- a/package.json +++ b/package.json @@ -55,81 +55,82 @@ "homepage": "https://github.com/solid/node-solid-server", "bugs": "https://github.com/solid/node-solid-server/issues", "dependencies": { - "@solid/acl-check": "^0.2.1", - "@solid/oidc-auth-manager": "^0.20.0", - "body-parser": "^1.18.3", - "bootstrap": "^3.3.7", - "busboy": "^0.2.12", + "@solid/acl-check": "^0.3.0", + "@solid/oidc-auth-manager": "^0.21.0", + "body-parser": "^1.19.0", + "bootstrap": "^3.4.1", + "busboy": "^0.3.1", "cached-path-relative": "^1.0.2", "camelize": "^1.0.0", - "cheerio": "^1.0.0-rc.2", + "cheerio": "^1.0.0-rc.3", "colorette": "^1.2.1", - "commander": "^2.9.0", - "cors": "^2.7.1", - "debug": "^2.6.9", - "express": "^4.16.3", - "express-handlebars": "^3.1.0", - "express-session": "^1.15.6", - "extend": "^3.0.0", - "from2": "^2.1.0", - "fs-extra": "^2.1.0", - "get-folder-size": "^2.0.0", - "glob": "^7.1.1", - "global-tunnel-ng": "^2.1.0", - "handlebars": "^4.7.2", - "http-proxy-middleware": "^0.18.0", - "inquirer": "^1.0.2", - "into-stream": "^5.0.0", - "ip-range-check": "0.0.2", - "is-ip": "^2.0.0", - "li": "^1.0.1", - "mashlib": "^1.4.0", - "mime-types": "^2.1.11", + "commander": "^6.0.0", + "cors": "^2.8.5", + "debug": "^4.1.1", + "express": "^4.17.1", + "express-handlebars": "^5.1.0", + "express-session": "^1.17.1", + "extend": "^3.0.2", + "from2": "^2.3.0", + "fs-extra": "^9.0.1", + "get-folder-size": "^2.0.1", + "glob": "^7.1.6", + "global-tunnel-ng": "^2.7.1", + "handlebars": "^4.7.6", + "http-proxy-middleware": "^1.0.5", + "inquirer": "^7.3.3", + "into-stream": "^5.1.1", + "ip-range-check": "0.2.0", + "is-ip": "^3.1.0", + "li": "^1.3.0", + "mashlib": "^1.5.0", + "mime-types": "^2.1.27", "mkdir-recursive": "^0.4.0", - "negotiator": "^0.6.0", - "node-fetch": "^2.1.2", - "node-forge": "^0.7.4", - "nodemailer": "^3.1.4", + "negotiator": "^0.6.2", + "node-fetch": "^2.6.0", + "node-forge": "^0.9.1", + "nodemailer": "^6.4.11", "oidc-op-express": "^0.0.3", "owasp-password-strength-test": "^1.3.0", "proper-lockfile": "^4.1.1", - "rdflib": "^0.21.1", - "recursive-readdir": "^2.1.0", - "rimraf": "^2.7.1", - "solid-auth-client": "^2.3.1", - "solid-namespace": "^0.1.0", - "solid-ws": "^0.3.1", - "text-encoder-lite": "^1.0.1", - "the-big-username-blacklist": "^1.5.1", - "ulid": "^0.1.0", - "urijs": "^1.19.1", - "uuid": "^3.3.3", + "rdflib": "^1.3.1", + "recursive-readdir": "^2.2.2", + "rimraf": "^3.0.2", + "solid-auth-client": "^2.5.0", + "solid-namespace": "^0.4.0", + "solid-ws": "^0.4.0", + "text-encoder-lite": "^2.0.0", + "the-big-username-blacklist": "^1.5.2", + "ulid": "^2.3.0", + "urijs": "^1.19.2", + "uuid": "^8.3.0", "valid-url": "^1.0.9", - "validator": "^10.9.0", + "validator": "^13.1.1", "vhost": "^3.0.2", "webid": "^0.3.11" }, "devDependencies": { - "@solid/oidc-op": "^0.4.0", + "@solid/oidc-op": "^0.8.0", "@solid/solid-auth-oidc": "^0.3.0", - "chai": "^3.5.0", - "chai-as-promised": "^6.0.0", - "cross-env": "^5.2.1", - "dirty-chai": "^1.2.2", - "localstorage-memory": "^1.0.2", - "mocha": "^5.1.1", - "nock": "^9.0.14", - "node-mocks-http": "^1.7.0", - "nyc": "^14.1.0", + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "cross-env": "^7.0.2", + "dirty-chai": "^2.0.1", + "localstorage-memory": "^1.0.3", + "mocha": "^8.0.1", + "nock": "^13.0.3", + "node-mocks-http": "^1.8.1", + "nyc": "^15.1.0", "pre-commit": "^1.2.2", - "randombytes": "^2.0.1", - "sinon": "^2.1.0", - "sinon-chai": "^2.8.0", - "snyk": "^1.360.0", - "standard": "^8.6.0", - "supertest": "^3.0.0", - "turtle-validator": "^1.0.2", - "whatwg-url": "^6.1.0" + "randombytes": "^2.1.0", + "sinon": "^9.0.2", + "sinon-chai": "^3.5.0", + "snyk": "^1.369.2", + "solid-auth-cli": "^1.0.14", + "standard": "^14.3.4", + "supertest": "^4.0.2", + "turtle-validator": "^1.1.1", + "whatwg-url": "^8.1.0" }, "pre-commit": [ "standard" @@ -139,8 +140,8 @@ "solid": "node ./bin/solid", "standard": "standard '{bin,examples,lib,test}/**/*.js'", "validate": "node ./test/validate-turtle.js", - "nyc": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 nyc --reporter=text-summary mocha", - "mocha": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 mocha", + "nyc": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 nyc --reporter=text-summary mocha --recursive test/", + "mocha": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0 mocha --recursive test/", "test": "npm run standard && npm run validate && npm run nyc", "clean": "rimraf config/templates config/views", "reset": "rimraf .db data && npm run clean" diff --git a/test/integration/account-creation-oidc-test.js b/test/integration/account-creation-oidc-test.js index 6d2be533d..20457a508 100644 --- a/test/integration/account-creation-oidc-test.js +++ b/test/integration/account-creation-oidc-test.js @@ -80,14 +80,14 @@ describe('AccountManager (OIDC account creation tests)', function () { }) it('should not create WebID if no username is given', (done) => { - let subdomain = supertest('https://' + host) + const subdomain = supertest('https://' + host) subdomain.post('/api/accounts/new') .send('username=&password=12345') .expect(400, done) }) it('should not create WebID if no password is given', (done) => { - let subdomain = supertest('https://' + host) + const subdomain = supertest('https://' + host) subdomain.post('/api/accounts/new') .send('username=nicola&password=') .expect(400, done) @@ -112,7 +112,7 @@ describe('AccountManager (OIDC account creation tests)', function () { }) it('should not create WebID if T&C is not accepted', (done) => { - let subdomain = supertest('https://' + host) + const subdomain = supertest('https://' + host) subdomain.post('/api/accounts/new') .send('username=nicola&password=12345&acceptToc=') .expect(400, done) @@ -131,7 +131,7 @@ describe('AccountManager (OIDC account creation tests)', function () { var card = read(path.join('accounts/nicola.' + domain, 'profile/card$.ttl')) var cardAcl = read(path.join('accounts/nicola.' + domain, - 'profile/.acl')) + 'profile/.acl')) var prefs = read(path.join('accounts/nicola.' + domain, 'settings/prefs.ttl')) var inboxAcl = read(path.join('accounts/nicola.' + domain, diff --git a/test/integration/account-manager-test.js b/test/integration/account-manager-test.js index 4ebce7552..5bf4bc962 100644 --- a/test/integration/account-manager-test.js +++ b/test/integration/account-manager-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const path = require('path') const fs = require('fs-extra') @@ -26,18 +27,18 @@ afterEach(() => { describe('AccountManager', () => { describe('accountExists()', () => { - let host = SolidHost.from({ serverUri: 'https://localhost' }) + const host = SolidHost.from({ serverUri: 'https://localhost' }) describe('in multi user mode', () => { - let multiuser = true - let resourceMapper = new ResourceMapper({ + const multiuser = true + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', rootPath: process.cwd(), includeHost: multiuser }) - let store = new LDP({ multiuser, resourceMapper }) - let options = { multiuser, store, host } - let accountManager = AccountManager.from(options) + const store = new LDP({ multiuser, resourceMapper }) + const options = { multiuser, store, host } + const accountManager = AccountManager.from(options) it('resolves to true if a directory for the account exists in root', () => { // Note: test/resources/accounts/tim.localhost/ exists in this repo @@ -57,20 +58,20 @@ describe('AccountManager', () => { }) describe('in single user mode', () => { - let multiuser = false + const multiuser = false it('resolves to true if root .acl exists in root storage', () => { - let resourceMapper = new ResourceMapper({ + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: path.join(testAccountsDir, 'tim.localhost') }) - let store = new LDP({ + const store = new LDP({ multiuser, resourceMapper }) - let options = { multiuser, store, host } - let accountManager = AccountManager.from(options) + const options = { multiuser, store, host } + const accountManager = AccountManager.from(options) return accountManager.accountExists() .then(exists => { @@ -79,17 +80,17 @@ describe('AccountManager', () => { }) it('resolves to false if root .acl does not exist in root storage', () => { - let resourceMapper = new ResourceMapper({ + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: testAccountsDir }) - let store = new LDP({ + const store = new LDP({ multiuser, resourceMapper }) - let options = { multiuser, store, host } - let accountManager = AccountManager.from(options) + const options = { multiuser, store, host } + const accountManager = AccountManager.from(options) return accountManager.accountExists() .then(exists => { @@ -101,24 +102,24 @@ describe('AccountManager', () => { describe('createAccountFor()', () => { it('should create an account directory', () => { - let multiuser = true - let resourceMapper = new ResourceMapper({ + const multiuser = true + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: testAccountsDir }) - let store = new LDP({ multiuser, resourceMapper }) - let options = { host, multiuser, store, accountTemplatePath } - let accountManager = AccountManager.from(options) + const store = new LDP({ multiuser, resourceMapper }) + const options = { host, multiuser, store, accountTemplatePath } + const accountManager = AccountManager.from(options) - let userData = { + const userData = { username: 'alice', email: 'alice@example.com', name: 'Alice Q.' } - let userAccount = accountManager.userAccountFrom(userData) + const userAccount = accountManager.userAccountFrom(userData) - let accountDir = accountManager.accountDirFor('alice') + const accountDir = accountManager.accountDirFor('alice') return accountManager.createAccountFor(userAccount) .then(() => { @@ -128,10 +129,10 @@ describe('AccountManager', () => { expect(found).to.be.true }) .then(() => { - let profile = fs.readFileSync(path.join(accountDir, '/profile/card$.ttl'), 'utf8') + const profile = fs.readFileSync(path.join(accountDir, '/profile/card$.ttl'), 'utf8') expect(profile).to.include('"Alice Q."') - let rootAcl = fs.readFileSync(path.join(accountDir, '.acl'), 'utf8') + const rootAcl = fs.readFileSync(path.join(accountDir, '.acl'), 'utf8') expect(rootAcl).to.include('') }) diff --git a/test/integration/account-template-test.js b/test/integration/account-template-test.js index 930b97d28..834ce1db1 100644 --- a/test/integration/account-template-test.js +++ b/test/integration/account-template-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const path = require('path') const fs = require('fs-extra') @@ -26,7 +27,7 @@ describe('AccountTemplate', () => { it('should copy a directory', () => { return AccountTemplate.copyTemplateDir(templatePath, accountPath) .then(() => { - let rootAcl = fs.readFileSync(path.join(accountPath, '.acl'), 'utf8') + const rootAcl = fs.readFileSync(path.join(accountPath, '.acl'), 'utf8') expect(rootAcl).to.exist }) }) @@ -34,22 +35,22 @@ describe('AccountTemplate', () => { describe('processAccount()', () => { it('should process all the files in an account', () => { - let substitutions = { + const substitutions = { webId: 'https://alice.example.com/#me', email: 'alice@example.com', name: 'Alice Q.' } - let template = new AccountTemplate({ substitutions }) + const template = new AccountTemplate({ substitutions }) return AccountTemplate.copyTemplateDir(templatePath, accountPath) .then(() => { return template.processAccount(accountPath) }) .then(() => { - let profile = fs.readFileSync(path.join(accountPath, '/profile/card$.ttl'), 'utf8') + const profile = fs.readFileSync(path.join(accountPath, '/profile/card$.ttl'), 'utf8') expect(profile).to.include('"Alice Q."') - let rootAcl = fs.readFileSync(path.join(accountPath, '.acl'), 'utf8') + const rootAcl = fs.readFileSync(path.join(accountPath, '.acl'), 'utf8') expect(rootAcl).to.include('') }) diff --git a/test/integration/acl-oidc-test.js b/test/integration/acl-oidc-test.js index a64fa8553..05392d91a 100644 --- a/test/integration/acl-oidc-test.js +++ b/test/integration/acl-oidc-test.js @@ -8,7 +8,7 @@ const IDToken = require('@solid/oidc-op/src/IDToken') const ldnode = require('../../index') const port = 7777 -const serverUri = `https://localhost:7777` +const serverUri = 'https://localhost:7777' const rootPath = path.join(__dirname, '../resources/accounts-acl') const dbPath = path.join(rootPath, 'db') const oidcProviderPath = path.join(dbPath, 'oidc', 'op', 'provider.json') @@ -21,7 +21,7 @@ const user2 = 'https://nicola.localhost:7777/profile/card#me' let oidcProvider // To be initialized in the before() block -let userCredentials = { +const userCredentials = { // idp: https://localhost:7777 // web id: https://tim.localhost:7777/profile/card#me user1: '', @@ -31,7 +31,7 @@ let userCredentials = { function issueIdToken (oidcProvider, webId) { return Promise.resolve().then(() => { - let jwt = IDToken.issue(oidcProvider, { + const jwt = IDToken.issue(oidcProvider, { sub: webId, aud: [serverUri, 'client123'], azp: 'client123' @@ -91,13 +91,13 @@ describe('ACL with WebID+OIDC over HTTP', function () { const options = { url: timAccountUri + path, headers: { - 'accept': 'text/turtle', + accept: 'text/turtle', 'content-type': contentType } } if (user) { - let accessToken = userCredentials[user] - options.headers['Authorization'] = 'Bearer ' + accessToken + const accessToken = userCredentials[user] + options.headers.Authorization = 'Bearer ' + accessToken } return options diff --git a/test/integration/acl-tls-test.js b/test/integration/acl-tls-test.js index 4bd3c660f..1df29e229 100644 --- a/test/integration/acl-tls-test.js +++ b/test/integration/acl-tls-test.js @@ -20,7 +20,7 @@ var ldnode = require('../../index') var ns = require('solid-namespace')($rdf) const port = 7777 -const serverUri = `https://localhost:7777` +const serverUri = 'https://localhost:7777' const rootPath = path.join(__dirname, '../resources/acl-tls') const dbPath = path.join(rootPath, 'db') const configPath = path.join(rootPath, 'config') @@ -122,14 +122,14 @@ describe.skip('ACL with WebID+TLS', function () { var options = createOptions('/acl-tls/no-acl/', 'user1') request(options, function (error, response, body) { assert.equal(error, null) - assert.equal(response.headers['user'], 'https://user1.databox.me/profile/card#me') + assert.equal(response.headers.user, 'https://user1.databox.me/profile/card#me') done() }) }) it.skip('should return a 401 and WWW-Authenticate header without credentials', (done) => { rm('.acl') - let options = { + const options = { url: address + '/acl-tls/no-acl/', headers: { accept: 'text/turtle' } } diff --git a/test/integration/authentication-oidc-test.js b/test/integration/authentication-oidc-test.js index 77a74abb0..3207f2eeb 100644 --- a/test/integration/authentication-oidc-test.js +++ b/test/integration/authentication-oidc-test.js @@ -22,17 +22,17 @@ chai.use(require('dirty-chai')) describe('Authentication API (OIDC)', () => { let alice, bob // eslint-disable-line no-unused-vars - let aliceServerUri = 'https://localhost:7000' - let aliceWebId = 'https://localhost:7000/profile/card#me' - let configPath = path.join(__dirname, '../resources/config') - let aliceDbPath = path.join(__dirname, + const aliceServerUri = 'https://localhost:7000' + const aliceWebId = 'https://localhost:7000/profile/card#me' + const configPath = path.join(__dirname, '../resources/config') + const aliceDbPath = path.join(__dirname, '../resources/accounts-scenario/alice/db') - let userStorePath = path.join(aliceDbPath, 'oidc/users') - let aliceUserStore = UserStore.from({ path: userStorePath, saltRounds: 1 }) + const userStorePath = path.join(aliceDbPath, 'oidc/users') + const aliceUserStore = UserStore.from({ path: userStorePath, saltRounds: 1 }) aliceUserStore.initCollections() - let bobServerUri = 'https://localhost:7001' - let bobDbPath = path.join(__dirname, + const bobServerUri = 'https://localhost:7001' + const bobDbPath = path.join(__dirname, '../resources/accounts-scenario/bob/db') const trustedAppUri = 'https://trusted.app' @@ -100,8 +100,8 @@ describe('Authentication API (OIDC)', () => { describe('Login by Username and Password (POST /login/password)', () => { // Logging in as alice, to alice's pod - let aliceAccount = UserAccount.from({ webId: aliceWebId }) - let alicePassword = '12345' + const aliceAccount = UserAccount.from({ webId: aliceWebId }) + const alicePassword = '12345' beforeEach(() => { aliceUserStore.initCollections() @@ -443,11 +443,11 @@ describe('Authentication API (OIDC)', () => { describe('with trusted app and no cookie', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -457,12 +457,12 @@ describe('Authentication API (OIDC)', () => { before(done => { var malcookie = cookie.replace(/nssidp\.sid=(\S+)/, 'nssidp.sid=l33th4x0rzp0wn4g3;') alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -471,12 +471,12 @@ describe('Authentication API (OIDC)', () => { describe('with trusted app and correct cookie', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', cookie) - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 200', () => expect(response).to.have.property('status', 200)) @@ -519,8 +519,8 @@ describe('Authentication API (OIDC)', () => { }) describe('Two Pods + Web App Login Workflow', () => { - let aliceAccount = UserAccount.from({ webId: aliceWebId }) - let alicePassword = '12345' + const aliceAccount = UserAccount.from({ webId: aliceWebId }) + const alicePassword = '12345' let auth let authorizationUri, loginUri, authParams, callbackUri @@ -532,7 +532,7 @@ describe('Authentication API (OIDC)', () => { before(() => { auth = new SolidAuthOIDC({ store: localStorage, window: { location: {} } }) - let appOptions = { + const appOptions = { redirectUri: 'https://app.example.com/callback' } @@ -551,8 +551,8 @@ describe('Authentication API (OIDC)', () => { fs.removeSync(path.join(aliceDbPath, 'users/users')) fs.removeSync(path.join(aliceDbPath, 'oidc/op/tokens')) - let clientId = auth.currentClient.registration['client_id'] - let registration = `_key_${clientId}.json` + const clientId = auth.currentClient.registration.client_id + const registration = `_key_${clientId}.json` fs.removeSync(path.join(aliceDbPath, 'oidc/op/clients', registration)) }) @@ -604,9 +604,9 @@ describe('Authentication API (OIDC)', () => { // Login page should contain the relevant auth params as hidden fields authParams.forEach((value, key) => { - let hiddenField = `` + const hiddenField = `` - let fieldRegex = new RegExp(hiddenField) + const fieldRegex = new RegExp(hiddenField) expect(pageText).to.match(fieldRegex) @@ -642,7 +642,7 @@ describe('Authentication API (OIDC)', () => { // Step 6: User shares with the app accessing certain things it('should consent via the /sharing form', () => { - loginFormFields += `&access_mode=Read&access_mode=Write&consent=true` + loginFormFields += '&access_mode=Read&access_mode=Write&consent=true' return fetch(aliceServerUri + '/sharing', { method: 'POST', @@ -654,23 +654,23 @@ describe('Authentication API (OIDC)', () => { }, credentials: 'include' }) - .then(res => { - expect(res.status).to.equal(302) - postSharingUri = res.headers.get('location') - // cookie = res.headers.get('set-cookie') - - // Successful login gets redirected back to /authorize and then - // back to app - expect(postSharingUri.startsWith(aliceServerUri + '/authorize')) - .to.be.true() - return fetch(postSharingUri, { redirect: 'manual', headers: { cookie } }) - }) - .then(res => { + .then(res => { + expect(res.status).to.equal(302) + postSharingUri = res.headers.get('location') + // cookie = res.headers.get('set-cookie') + + // Successful login gets redirected back to /authorize and then + // back to app + expect(postSharingUri.startsWith(aliceServerUri + '/authorize')) + .to.be.true() + return fetch(postSharingUri, { redirect: 'manual', headers: { cookie } }) + }) + .then(res => { // User gets redirected back to original app - expect(res.status).to.equal(302) - callbackUri = res.headers.get('location') - expect(callbackUri.startsWith('https://app.example.com#')) - }) + expect(res.status).to.equal(302) + callbackUri = res.headers.get('location') + expect(callbackUri.startsWith('https://app.example.com#')) + }) }) // Step 7: Web App extracts tokens from the uri hash fragment, uses @@ -678,7 +678,7 @@ describe('Authentication API (OIDC)', () => { it('should use id token from the callback uri to access shared resource (no origin)', () => { auth.window.location.href = callbackUri - let protectedResourcePath = bobServerUri + '/shared-with-alice.txt' + const protectedResourcePath = bobServerUri + '/shared-with-alice.txt' return auth.initUserFromResponse(auth.currentClient) .then(webId => { @@ -691,7 +691,7 @@ describe('Authentication API (OIDC)', () => { return fetch(protectedResourcePath, { headers: { - 'Authorization': 'Bearer ' + bearerToken + Authorization: 'Bearer ' + bearerToken } }) }) @@ -708,7 +708,7 @@ describe('Authentication API (OIDC)', () => { it('should use id token from the callback uri to access shared resource (untrusted origin)', () => { auth.window.location.href = callbackUri - let protectedResourcePath = bobServerUri + '/shared-with-alice.txt' + const protectedResourcePath = bobServerUri + '/shared-with-alice.txt' return auth.initUserFromResponse(auth.currentClient) .then(webId => { @@ -721,8 +721,8 @@ describe('Authentication API (OIDC)', () => { return fetch(protectedResourcePath, { headers: { - 'Authorization': 'Bearer ' + bearerToken, - 'Origin': 'https://untrusted.example.com' // shouldn't be allowed if strictOrigin is set to true + Authorization: 'Bearer ' + bearerToken, + Origin: 'https://untrusted.example.com' // shouldn't be allowed if strictOrigin is set to true } }) }) @@ -732,12 +732,12 @@ describe('Authentication API (OIDC)', () => { }) it('should not be able to reuse the bearer token for bob server on another server', () => { - let privateAliceResourcePath = aliceServerUri + '/private-for-alice.txt' + const privateAliceResourcePath = aliceServerUri + '/private-for-alice.txt' return fetch(privateAliceResourcePath, { headers: { // This is Alice's bearer token with her own Web ID - 'Authorization': 'Bearer ' + bearerToken + Authorization: 'Bearer ' + bearerToken } }) .then(res => { diff --git a/test/integration/authentication-oidc-with-strict-origins-turned-off-test.js b/test/integration/authentication-oidc-with-strict-origins-turned-off-test.js index e2a5cf489..7e1b71cd3 100644 --- a/test/integration/authentication-oidc-with-strict-origins-turned-off-test.js +++ b/test/integration/authentication-oidc-with-strict-origins-turned-off-test.js @@ -25,15 +25,15 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { const aliceServerPort = 7010 const aliceServerUri = `https://localhost:${aliceServerPort}` const aliceWebId = `https://localhost:${aliceServerPort}/profile/card#me` - let configPath = path.join(__dirname, '../resources/config') - let aliceDbPath = path.join(__dirname, '../resources/accounts-strict-origin-off/alice/db') - let userStorePath = path.join(aliceDbPath, 'oidc/users') - let aliceUserStore = UserStore.from({ path: userStorePath, saltRounds: 1 }) + const configPath = path.join(__dirname, '../resources/config') + const aliceDbPath = path.join(__dirname, '../resources/accounts-strict-origin-off/alice/db') + const userStorePath = path.join(aliceDbPath, 'oidc/users') + const aliceUserStore = UserStore.from({ path: userStorePath, saltRounds: 1 }) aliceUserStore.initCollections() const bobServerPort = 7011 const bobServerUri = `https://localhost:${bobServerPort}` - let bobDbPath = path.join(__dirname, '../resources/accounts-strict-origin-off/bob/db') + const bobDbPath = path.join(__dirname, '../resources/accounts-strict-origin-off/bob/db') const trustedAppUri = 'https://trusted.app' @@ -97,8 +97,8 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('Login by Username and Password (POST /login/password)', () => { // Logging in as alice, to alice's pod - let aliceAccount = UserAccount.from({ webId: aliceWebId }) - let alicePassword = '12345' + const aliceAccount = UserAccount.from({ webId: aliceWebId }) + const alicePassword = '12345' beforeEach(() => { aliceUserStore.initCollections() @@ -151,10 +151,10 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and no origin set', () => { before(done => { alice.get('/private-for-alice.txt') - .end((err, res) => { - response = res - done(err) - }) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -163,11 +163,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Our own origin, no agent auth before(done => { alice.get('/private-for-alice.txt') - .set('Origin', aliceServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Origin', aliceServerUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -176,11 +176,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Configuration for originsAllowed but no auth before(done => { alice.get('/private-for-alice.txt') - .set('Origin', 'https://apps.solid.invalid') - .end((err, res) => { - response = res - done(err) - }) + .set('Origin', 'https://apps.solid.invalid') + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -189,11 +189,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Not authenticated but also wrong origin, before(done => { alice.get('/private-for-alice.txt') - .set('Origin', bobServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Origin', bobServerUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -201,11 +201,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and trusted app', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -216,11 +216,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and no origin set', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', cookie) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 200', () => expect(response).to.have.property('status', 200)) @@ -228,12 +228,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and our origin', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', cookie) - .set('Origin', aliceServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .set('Origin', aliceServerUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 200', () => expect(response).to.have.property('status', 200)) @@ -241,12 +241,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and trusted origin', () => { before(done => { alice.get('/') - .set('Cookie', cookie) - .set('Origin', 'https://apps.solid.invalid') // TODO: Should we configure the server with that? Should it matter? - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .set('Origin', 'https://apps.solid.invalid') // TODO: Should we configure the server with that? Should it matter? + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -254,12 +254,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and untrusted origin', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', cookie) - .set('Origin', bobServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .set('Origin', bobServerUri) + .end((err, res) => { + response = res + done(err) + }) }) // Even if origin checking is disabled, then this should return a 401 because cookies should not be trusted cross-origin @@ -270,12 +270,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Trusted apps are not supported when strictOrigin check is turned off before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', cookie) - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', cookie) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -291,11 +291,11 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and no origin set', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -303,12 +303,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and our origin', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .set('Origin', aliceServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .set('Origin', aliceServerUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -316,12 +316,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and trusted origin', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .set('Origin', 'https://apps.solid.invalid') - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .set('Origin', 'https://apps.solid.invalid') + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -329,12 +329,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and untrusted origin', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .set('Origin', bobServerUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .set('Origin', bobServerUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -343,12 +343,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { describe('and trusted app', () => { before(done => { alice.get('/private-for-alice.txt') - .set('Cookie', malcookie) - .set('Origin', trustedAppUri) - .end((err, res) => { - response = res - done(err) - }) + .set('Cookie', malcookie) + .set('Origin', trustedAppUri) + .end((err, res) => { + response = res + done(err) + }) }) it('should return a 401', () => expect(response).to.have.property('status', 401)) @@ -392,8 +392,8 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { }) describe('Two Pods + Web App Login Workflow', () => { - let aliceAccount = UserAccount.from({ webId: aliceWebId }) - let alicePassword = '12345' + const aliceAccount = UserAccount.from({ webId: aliceWebId }) + const alicePassword = '12345' let auth let authorizationUri, loginUri, authParams, callbackUri @@ -404,7 +404,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { before(() => { auth = new SolidAuthOIDC({ store: localStorage, window: { location: {} } }) - let appOptions = { + const appOptions = { redirectUri: 'https://app.example.com/callback' } @@ -423,8 +423,8 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { fs.removeSync(path.join(aliceDbPath, 'users/users')) fs.removeSync(path.join(aliceDbPath, 'oidc/op/tokens')) - let clientId = auth.currentClient.registration['client_id'] - let registration = `_key_${clientId}.json` + const clientId = auth.currentClient.registration.client_id + const registration = `_key_${clientId}.json` fs.removeSync(path.join(aliceDbPath, 'oidc/op/clients', registration)) }) @@ -476,9 +476,9 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Login page should contain the relevant auth params as hidden fields authParams.forEach((value, key) => { - let hiddenField = `` + const hiddenField = `` - let fieldRegex = new RegExp(hiddenField) + const fieldRegex = new RegExp(hiddenField) expect(pageText).to.match(fieldRegex) @@ -514,7 +514,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { // Step 6: User consents to the app accessing certain things it('should consent via the /sharing form', () => { - loginFormFields += `&access_mode=Read&access_mode=Write&consent=true` + loginFormFields += '&access_mode=Read&access_mode=Write&consent=true' return fetch(aliceServerUri + '/sharing', { method: 'POST', @@ -526,24 +526,24 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { }, credentials: 'include' }) - .then(res => { - expect(res.status).to.equal(302) - let postLoginUri = res.headers.get('location') - let cookie = res.headers.get('set-cookie') + .then(res => { + expect(res.status).to.equal(302) + const postLoginUri = res.headers.get('location') + const cookie = res.headers.get('set-cookie') - // Successful login gets redirected back to /authorize and then - // back to app - expect(postLoginUri.startsWith(aliceServerUri + '/authorize')) - .to.be.true() + // Successful login gets redirected back to /authorize and then + // back to app + expect(postLoginUri.startsWith(aliceServerUri + '/authorize')) + .to.be.true() - return fetch(postLoginUri, { redirect: 'manual', headers: { cookie } }) - }) - .then(res => { + return fetch(postLoginUri, { redirect: 'manual', headers: { cookie } }) + }) + .then(res => { // User gets redirected back to original app - expect(res.status).to.equal(302) - callbackUri = res.headers.get('location') - expect(callbackUri.startsWith('https://app.example.com#')) - }) + expect(res.status).to.equal(302) + callbackUri = res.headers.get('location') + expect(callbackUri.startsWith('https://app.example.com#')) + }) }) // Step 6: Web App extracts tokens from the uri hash fragment, uses @@ -551,7 +551,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { it('should use id token from the callback uri to access shared resource (no origin)', () => { auth.window.location.href = callbackUri - let protectedResourcePath = bobServerUri + '/shared-with-alice.txt' + const protectedResourcePath = bobServerUri + '/shared-with-alice.txt' return auth.initUserFromResponse(auth.currentClient) .then(webId => { @@ -564,7 +564,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { return fetch(protectedResourcePath, { headers: { - 'Authorization': 'Bearer ' + bearerToken + Authorization: 'Bearer ' + bearerToken } }) }) @@ -580,7 +580,7 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { it('should use id token from the callback uri to access shared resource (untrusted origin)', () => { auth.window.location.href = callbackUri - let protectedResourcePath = bobServerUri + '/shared-with-alice.txt' + const protectedResourcePath = bobServerUri + '/shared-with-alice.txt' return auth.initUserFromResponse(auth.currentClient) .then(webId => { @@ -593,8 +593,8 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { return fetch(protectedResourcePath, { headers: { - 'Authorization': 'Bearer ' + bearerToken, - 'Origin': 'https://untrusted.example.com' // shouldn't matter if strictOrigin is set to false + Authorization: 'Bearer ' + bearerToken, + Origin: 'https://untrusted.example.com' // shouldn't matter if strictOrigin is set to false } }) }) @@ -609,12 +609,12 @@ describe('Authentication API (OIDC) - With strict origins turned off', () => { }) it('should not be able to reuse the bearer token for bob server on another server', () => { - let privateAliceResourcePath = aliceServerUri + '/private-for-alice.txt' + const privateAliceResourcePath = aliceServerUri + '/private-for-alice.txt' return fetch(privateAliceResourcePath, { headers: { // This is Alice's bearer token with her own Web ID - 'Authorization': 'Bearer ' + bearerToken + Authorization: 'Bearer ' + bearerToken } }) .then(res => { diff --git a/test/integration/capability-discovery-test.js b/test/integration/capability-discovery-test.js index 13cfd52f8..227ea0f83 100644 --- a/test/integration/capability-discovery-test.js +++ b/test/integration/capability-discovery-test.js @@ -1,3 +1,5 @@ +/* eslint-disable no-unused-expressions */ + const Solid = require('../../index') const path = require('path') const { cleanDir } = require('../utils') @@ -8,11 +10,11 @@ const expect = require('chai').expect describe('API', () => { let alice - let aliceServerUri = 'https://localhost:5000' - let configPath = path.join(__dirname, '../resources/config') - let aliceDbPath = path.join(__dirname, + const aliceServerUri = 'https://localhost:5000' + const configPath = path.join(__dirname, '../resources/config') + const aliceDbPath = path.join(__dirname, '../resources/accounts-scenario/alice/db') - let aliceRootPath = path.join(__dirname, '../resources/accounts-scenario/alice') + const aliceRootPath = path.join(__dirname, '../resources/accounts-scenario/alice') const serverConfig = { sslKey: path.join(__dirname, '../keys/key.pem'), @@ -72,13 +74,13 @@ describe('API', () => { it('includes an apps config section', (done) => { const config = { apps: { - 'signin': '/signin/', - 'signup': '/signup/' + signin: '/signin/', + signup: '/signup/' }, webid: false } const solid = Solid(config) - let server = supertest(solid) + const server = supertest(solid) server.get('/.well-known/solid') .end(function (err, req) { expect(req.body.apps).to.exist diff --git a/test/integration/cors-proxy-test.js b/test/integration/cors-proxy-test.js index c4f643e55..eb4f58c76 100644 --- a/test/integration/cors-proxy-test.js +++ b/test/integration/cors-proxy-test.js @@ -22,7 +22,7 @@ describe('CORS Proxy', () => { let headers nock('https://example.org').get('/').reply(function (uri, body) { headers = this.req.headers - return 200 + return [200] }) server.get('/proxy?uri=https://example.org/') .expect(200) @@ -83,10 +83,10 @@ describe('CORS Proxy', () => { nock('https://example.org') .get('/') .reply(function (uri, req) { - if (this.req.headers['accept'] !== 'text/turtle') { + if (this.req.headers.accept !== 'text/turtle') { throw Error('Accept is received on the header') } - if (this.req.headers['test'] && this.req.headers['test'] === 'test1') { + if (this.req.headers.test && this.req.headers.test === 'test1') { return [200, 'YES'] } else { return [500, 'empty'] @@ -107,7 +107,7 @@ describe('CORS Proxy', () => { nock('https://example.org').get('/').reply(200) server.get('/proxy/?uri=https://example.org/') .expect((a) => { - assert.equal(a.header['link'], null) + assert.equal(a.header.link, null) }) .expect(200, done) }) diff --git a/test/integration/header-test.js b/test/integration/header-test.js index d8ec2753b..98515a8e6 100644 --- a/test/integration/header-test.js +++ b/test/integration/header-test.js @@ -59,8 +59,9 @@ describe('Header handler', () => { function describeHeaderTest (label, { resource, headers }) { describe(`a resource that is ${label}`, () => { // Retrieve the response headers - let response = {} - before(async () => { + const response = {} + before(async function () { + this.timeout(10000) // FIXME: https://github.com/solid/node-solid-server/issues/1443 const { headers } = await request.get(resource) response.headers = headers }) diff --git a/test/integration/http-copy-test.js b/test/integration/http-copy-test.js index a90a03852..82860eb47 100644 --- a/test/integration/http-copy-test.js +++ b/test/integration/http-copy-test.js @@ -58,12 +58,12 @@ describe('HTTP COPY API', function () { var copyTo = '/sampleUser1Container/nicola-copy.jpg' var uri = address + copyTo var options = createOptions('COPY', uri, 'user1') - options.headers[ 'Source' ] = copyFrom + options.headers.Source = copyFrom request(uri, options, function (error, response) { assert.equal(error, null) assert.equal(response.statusCode, 201) - assert.equal(response.headers[ 'location' ], copyTo) - let destinationPath = path.join(__dirname, '../resources/accounts/localhost', copyTo) + assert.equal(response.headers.location, copyTo) + const destinationPath = path.join(__dirname, '../resources/accounts/localhost', copyTo) assert.ok(fs.existsSync(destinationPath), 'Resource created via COPY should exist') done() @@ -75,7 +75,7 @@ describe('HTTP COPY API', function () { var copyTo = '/sampleUser1Container/invalid-resource-copy' var uri = address + copyTo var options = createOptions('COPY', uri, 'user1') - options.headers[ 'Source' ] = copyFrom + options.headers.Source = copyFrom request(uri, options, function (error, response) { assert.equal(error, null) assert.equal(response.statusCode, 404) diff --git a/test/integration/http-test.js b/test/integration/http-test.js index db8f6c663..6b67673e4 100644 --- a/test/integration/http-test.js +++ b/test/integration/http-test.js @@ -328,7 +328,7 @@ describe('HTTP APIs', function () { .expect('content-type', /text\/turtle/) .expect(200) .expect((res) => { - let kb = rdf.graph() + const kb = rdf.graph() rdf.parse(res.text, kb, 'https://localhost/', 'text/turtle') assert(kb.match( @@ -473,8 +473,8 @@ describe('HTTP APIs', function () { describe('PUT API', function () { var putRequestBody = fs.readFileSync(path.join(__dirname, '../resources/sampleContainer/put1.ttl'), { - 'encoding': 'utf8' - }) + encoding: 'utf8' + }) it('should create new resource', function (done) { server.put('/put-resource-1.ttl') .send(putRequestBody) @@ -588,12 +588,12 @@ describe('HTTP APIs', function () { var postRequest1Body = fs.readFileSync(path.join(__dirname, '../resources/sampleContainer/put1.ttl'), { - 'encoding': 'utf8' - }) + encoding: 'utf8' + }) var postRequest2Body = fs.readFileSync(path.join(__dirname, '../resources/sampleContainer/post2.ttl'), { - 'encoding': 'utf8' - }) + encoding: 'utf8' + }) it('should create new resource', function (done) { server.post('/post-tests/') .send(postRequest1Body) @@ -703,8 +703,8 @@ describe('HTTP APIs', function () { }) it('should create a container with a name hex decoded from the slug', (done) => { - let containerName = 'Film%4011' - let expectedDirName = '/post-tests/Film@11/' + const containerName = 'Film%4011' + const expectedDirName = '/post-tests/Film@11/' server.post('/post-tests/') .set('slug', containerName) .set('content-type', 'text/turtle') @@ -715,7 +715,7 @@ describe('HTTP APIs', function () { try { assert.equal(res.headers.location, expectedDirName, 'Uri container names should be encoded') - let createdDir = fs.statSync(path.join(__dirname, '../resources', expectedDirName)) + const createdDir = fs.statSync(path.join(__dirname, '../resources', expectedDirName)) assert(createdDir.isDirectory(), 'Container should have been created') } catch (err) { return done(err) @@ -736,8 +736,8 @@ describe('HTTP APIs', function () { let response before(() => server.post('/post-tests/') - .set('content-type', 'text/turtle; charset=utf-8') - .then(res => { response = res }) + .set('content-type', 'text/turtle; charset=utf-8') + .then(res => { response = res }) ) it('is assigned an URL with the .ttl extension', () => { @@ -750,9 +750,9 @@ describe('HTTP APIs', function () { let response before(() => server.post('/post-tests/') - .set('slug', 'slug1') - .set('content-type', 'text/turtle; charset=utf-8') - .then(res => { response = res }) + .set('slug', 'slug1') + .set('content-type', 'text/turtle; charset=utf-8') + .then(res => { response = res }) ) it('is assigned an URL with the .ttl extension', () => { @@ -764,8 +764,8 @@ describe('HTTP APIs', function () { let response before(() => server.post('/post-tests/') - .set('content-type', 'text/html; charset=utf-8') - .then(res => { response = res }) + .set('content-type', 'text/html; charset=utf-8') + .then(res => { response = res }) ) it('is assigned an URL with the .html extension', () => { @@ -778,9 +778,9 @@ describe('HTTP APIs', function () { let response before(() => server.post('/post-tests/') - .set('slug', 'slug2') - .set('content-type', 'text/html; charset=utf-8') - .then(res => { response = res }) + .set('slug', 'slug2') + .set('content-type', 'text/html; charset=utf-8') + .then(res => { response = res }) ) it('is assigned an URL with the .html extension', () => { diff --git a/test/integration/ldp-test.js b/test/integration/ldp-test.js index fbbf82079..193f1159a 100644 --- a/test/integration/ldp-test.js +++ b/test/integration/ldp-test.js @@ -77,18 +77,18 @@ describe('LDP', function () { describe('getGraph', () => { it('should read and parse an existing file', () => { - let uri = 'https://localhost:8443/resources/sampleContainer/example1.ttl' + const uri = 'https://localhost:8443/resources/sampleContainer/example1.ttl' return ldp.getGraph(uri) .then(graph => { assert.ok(graph) - let fullname = $rdf.namedNode('http://example.org/stuff/1.0/fullname') - let match = graph.match(null, fullname) + const fullname = $rdf.namedNode('http://example.org/stuff/1.0/fullname') + const match = graph.match(null, fullname) assert.equal(match[0].object.value, 'Dave Beckett') }) }) it('should throw a 404 error on a non-existing file', (done) => { - let uri = 'https://localhost:8443/resources/nonexistent.ttl' + const uri = 'https://localhost:8443/resources/nonexistent.ttl' ldp.getGraph(uri) .catch(error => { assert.ok(error) @@ -100,18 +100,18 @@ describe('LDP', function () { describe('putGraph', () => { it('should serialize and write a graph to a file', () => { - let originalResource = '/resources/sampleContainer/example1.ttl' - let newResource = '/resources/sampleContainer/example1-copy.ttl' + const originalResource = '/resources/sampleContainer/example1.ttl' + const newResource = '/resources/sampleContainer/example1-copy.ttl' - let uri = 'https://localhost:8443' + originalResource + const uri = 'https://localhost:8443' + originalResource return ldp.getGraph(uri) .then(graph => { - let newUri = 'https://localhost:8443' + newResource + const newUri = 'https://localhost:8443' + newResource return ldp.putGraph(graph, newUri) }) .then(() => { // Graph serialized and written - let written = read('sampleContainer/example1-copy.ttl') + const written = read('sampleContainer/example1-copy.ttl') assert.ok(written) }) // cleanup @@ -320,7 +320,7 @@ describe('LDP', function () { ) .map(d => { return d.uri }) - let expectedStatements = [ + const expectedStatements = [ 'http://www.w3.org/ns/iana/media-types/text/turtle#Resource', 'http://www.w3.org/ns/ldp#Resource' ] diff --git a/test/integration/oidc-manager-test.js b/test/integration/oidc-manager-test.js index e57ad2375..9294b7100 100644 --- a/test/integration/oidc-manager-test.js +++ b/test/integration/oidc-manager-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const chai = require('chai') const expect = chai.expect @@ -17,17 +18,17 @@ describe('OidcManager', () => { describe('fromServerConfig()', () => { it('should result in an initialized oidc object', () => { - let serverUri = 'https://localhost:8443' - let host = SolidHost.from({ serverUri }) + const serverUri = 'https://localhost:8443' + const host = SolidHost.from({ serverUri }) - let saltRounds = 5 - let argv = { + const saltRounds = 5 + const argv = { host, dbPath, saltRounds } - let oidc = OidcManager.fromServerConfig(argv) + const oidc = OidcManager.fromServerConfig(argv) expect(oidc.rs.defaults.query).to.be.true expect(oidc.clients.store.backend.path.endsWith('db/oidc/rp/clients')) diff --git a/test/integration/params-test.js b/test/integration/params-test.js index cd1d1b323..cb64d74d3 100644 --- a/test/integration/params-test.js +++ b/test/integration/params-test.js @@ -52,7 +52,7 @@ describe('LDNODE params', function () { }) describe('passed', function () { - var ldp = ldnode({root: './test/resources/', webid: false}) + var ldp = ldnode({ root: './test/resources/', webid: false }) var server = supertest(ldp) it('should fallback on current working directory', function () { @@ -78,7 +78,7 @@ describe('LDNODE params', function () { }) describe('ui-path', function () { - let rootPath = './test/resources/' + const rootPath = './test/resources/' var ldp = ldnode({ root: rootPath, apiApps: path.join(__dirname, '../resources/sampleContainer'), @@ -97,7 +97,7 @@ describe('LDNODE params', function () { var ldpHttpsServer const port = 7777 - const serverUri = `https://localhost:7777` + const serverUri = 'https://localhost:7777' const rootPath = path.join(__dirname, '../resources/accounts-acl') const dbPath = path.join(rootPath, 'db') const configPath = path.join(rootPath, 'config') diff --git a/test/integration/patch-sparql-update-test.js b/test/integration/patch-sparql-update-test.js index 7ee9b2c44..a3e43dd63 100644 --- a/test/integration/patch-sparql-update-test.js +++ b/test/integration/patch-sparql-update-test.js @@ -51,16 +51,42 @@ describe('PATCH through application/sparql-update', function () { }) it('should delete a single triple from a pad document', function (done) { - var expected = '@prefix : .\n@prefix dc: .\n@prefix c: .\n@prefix n: .\n@prefix p: .\n@prefix ic: .\n@prefix XML: .\n@prefix flow: .\n@prefix ui: .\n@prefix ind: .\n@prefix mee: .\n\n:id1477502276660 dc:author c:i; n:content ""; p:next :this.\n\n:id1477522707481\n ic:dtstart "2016-10-26T22:58:27Z"^^XML:dateTime;\n flow:participant c:i;\n ui:backgroundColor "#c1d0c8".\n:this\n a p:Notepad;\n dc:author c:i;\n dc:created "2016-10-25T15:44:42Z"^^XML:dateTime;\n dc:title "Shared Notes";\n p:next :id1477502276660.\nind:this flow:participation :id1477522707481; mee:sharedNotes :this.\n\n' + var expected = `\ +@prefix : . +@prefix dc: . +@prefix mee: . +@prefix c: . +@prefix XML: . +@prefix p: . +@prefix ind: . +@prefix n: . +@prefix flow: . +@prefix ic: . +@prefix ui: . + +:id1477502276660 dc:author c:i; n:content ""; p:next :this. + +:id1477522707481\n ic:dtstart "2016-10-26T22:58:27Z"^^XML:dateTime; + flow:participant c:i; + ui:backgroundColor "#c1d0c8". +:this + a p:Notepad; + dc:author c:i; + dc:created "2016-10-25T15:44:42Z"^^XML:dateTime; + dc:title "Shared Notes"; + p:next :id1477502276660. +ind:this flow:participation :id1477522707481; mee:sharedNotes :this. + +` write(`\n\ @prefix dc: . - @prefix meeting: . - @prefix card: . - @prefix xsd: . + @prefix mee: . + @prefix c: . + @prefix XML: . @prefix p: . - @prefix in: . + @prefix ind: . @prefix n: . @prefix flow: . @prefix ic: . @@ -68,24 +94,24 @@ describe('PATCH through application/sparql-update', function () { <#this> dc:author - card:i; + c:i; dc:created - "2016-10-25T15:44:42Z"^^xsd:dateTime; + "2016-10-25T15:44:42Z"^^XML:dateTime; dc:title "Shared Notes"; a p:Notepad; p:next <#id1477502276660>. - in:this flow:participation <#id1477522707481>; meeting:sharedNotes <#this> . - <#id1477502276660> dc:author card:i; n:content ""; p:indent 1; p:next <#this> . + ind:this flow:participation <#id1477522707481>; mee:sharedNotes <#this> . + <#id1477502276660> dc:author c:i; n:content ""; p:indent 1; p:next <#this> . <#id1477522707481> ic:dtstart - "2016-10-26T22:58:27Z"^^xsd:dateTime; + "2016-10-26T22:58:27Z"^^XML:dateTime; flow:participant - card:i; + c:i; ui:backgroundColor "#c1d0c8".\n`, - 'sampleContainer/existingTriple.ttl') + 'sampleContainer/existingTriple.ttl') server.post('/existingTriple.ttl') .set('content-type', 'application/sparql-update') @@ -107,19 +133,19 @@ describe('PATCH through application/sparql-update', function () { it('should update a resource using SPARQL-query using `prefix`', function (done) { write( '@prefix schema: .\n' + - '@prefix profile: .\n' + + '@prefix pro: .\n' + '# a schema:Person ;\n' + '<#> a schema:Person ;\n' + - ' profile:first_name "Tim" .\n', + ' pro:first_name "Tim" .\n', 'sampleContainer/prefixSparql.ttl') server.post('/prefixSparql.ttl') .set('content-type', 'application/sparql-update') .send('@prefix rdf: .\n' + '@prefix schema: .\n' + - '@prefix profile: .\n' + + '@prefix pro: .\n' + '@prefix ex: .\n' + - 'DELETE { <#> profile:first_name "Tim" }\n' + - 'INSERT { <#> profile:first_name "Timothy" }') + 'DELETE { <#> pro:first_name "Tim" }\n' + + 'INSERT { <#> pro:first_name "Timothy" }') .expect(200) .end(function (err, res, body) { assert.equal( diff --git a/test/integration/patch-test.js b/test/integration/patch-test.js index f7649cf54..e4aecd149 100644 --- a/test/integration/patch-test.js +++ b/test/integration/patch-test.js @@ -40,7 +40,7 @@ describe('PATCH', () => { describe('with a patch document', () => { describe('with an unsupported content type', describePatch({ path: '/read-write.ttl', - patch: `other syntax`, + patch: 'other syntax', contentType: 'text/other' }, { // expected: status: 415, @@ -49,7 +49,7 @@ describe('PATCH', () => { describe('containing invalid syntax', describePatch({ path: '/read-write.ttl', - patch: `invalid syntax` + patch: 'invalid syntax' }, { // expected: status: 400, text: 'Patch document syntax error' @@ -57,7 +57,7 @@ describe('PATCH', () => { describe('without relevant patch element', describePatch({ path: '/read-write.ttl', - patch: `<> a solid:Patch.` + patch: '<> a solid:Patch.' }, { // expected: status: 400, text: 'No patch for https://tim.localhost:7777/read-write.ttl found' @@ -65,7 +65,7 @@ describe('PATCH', () => { describe('with neither insert nor delete', describePatch({ path: '/read-write.ttl', - patch: `<> solid:patches .` + patch: '<> solid:patches .' }, { // expected: status: 400, text: 'Patch should at least contain inserts or deletes' @@ -424,7 +424,7 @@ describe('PATCH', () => { // Creates a PATCH test for the given resource with the given expected outcomes function describePatch ({ path, exists = true, patch, contentType = 'text/n3' }, - { status = 200, text, result }) { + { status = 200, text, result }) { return () => { const filename = `patch${path}` var originalContents @@ -446,10 +446,10 @@ describe('PATCH', () => { var response before((done) => { request.patch(path) - .set('Content-Type', contentType) - .send(`@prefix solid: .\n${patch}`) - .then(res => { response = res }) - .then(done, done) + .set('Content-Type', contentType) + .send(`@prefix solid: .\n${patch}`) + .then(res => { response = res }) + .then(done, done) }) // Verify the response's status code and body text diff --git a/test/integration/quota-test.js b/test/integration/quota-test.js index 941963fae..d4893e4a8 100644 --- a/test/integration/quota-test.js +++ b/test/integration/quota-test.js @@ -1,3 +1,5 @@ +/* eslint-disable no-unused-expressions */ + var expect = require('chai').expect const getQuota = require('../../lib/utils').getQuota const overQuota = require('../../lib/utils').overQuota diff --git a/test/integration/validate-tts.js b/test/integration/validate-tts.js index 1b45ebd92..ae4d5e2dd 100644 --- a/test/integration/validate-tts.js +++ b/test/integration/validate-tts.js @@ -11,7 +11,7 @@ const server = setupSupertestServer({ }) const invalidTurtleBody = fs.readFileSync(path.join(__dirname, '../resources/invalid1.ttl'), { - 'encoding': 'utf8' + encoding: 'utf8' }) describe('HTTP requests with invalid Turtle syntax', () => { diff --git a/test/resources/accounts-acl/db/oidc/op/clients/_key_055bd7af37f092a8ccdca75fec9ee4bc.json b/test/resources/accounts-acl/db/oidc/op/clients/_key_055bd7af37f092a8ccdca75fec9ee4bc.json deleted file mode 100644 index 6786c1dae..000000000 --- a/test/resources/accounts-acl/db/oidc/op/clients/_key_055bd7af37f092a8ccdca75fec9ee4bc.json +++ /dev/null @@ -1 +0,0 @@ -{"client_id":"055bd7af37f092a8ccdca75fec9ee4bc","client_secret":"0975bff497dbf280df1e5e7bd96b42fc","redirect_uris":["https://tim.localhost:7777/api/oidc/rp/https%3A%2F%2Ftim.localhost%3A7777"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://tim.localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://tim.localhost:7777/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file diff --git a/test/resources/accounts-acl/db/oidc/op/clients/_key_7f1be9aa47bb1372b3bc75e91da352b4.json b/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json similarity index 60% rename from test/resources/accounts-acl/db/oidc/op/clients/_key_7f1be9aa47bb1372b3bc75e91da352b4.json rename to test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json index 3277453cb..86a5e811d 100644 --- a/test/resources/accounts-acl/db/oidc/op/clients/_key_7f1be9aa47bb1372b3bc75e91da352b4.json +++ b/test/resources/accounts-acl/db/oidc/op/clients/_key_77bb3b35edb1f3f7b887c25d1211a491.json @@ -1 +1 @@ -{"client_id":"7f1be9aa47bb1372b3bc75e91da352b4","client_secret":"c48b13e77bd58f8d7208f34cde22e898","redirect_uris":["https://localhost:7777/api/oidc/rp/https%3A%2F%2Flocalhost%3A7777"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7777/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file +{"redirect_uris":["https://localhost:7777/api/oidc/rp/https%3A%2F%2Flocalhost%3A7777"],"client_id":"77bb3b35edb1f3f7b887c25d1211a491","client_secret":"98e44615d114b211dbafbf021d9d02aa","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7777/goodbye"]} \ No newline at end of file diff --git a/test/resources/accounts-acl/db/oidc/op/provider.json b/test/resources/accounts-acl/db/oidc/op/provider.json index 50d51fbf5..d2cd6fbd4 100644 --- a/test/resources/accounts-acl/db/oidc/op/provider.json +++ b/test/resources/accounts-acl/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:7777", - "authorization_endpoint": "https://localhost:7777/authorize", - "token_endpoint": "https://localhost:7777/token", - "userinfo_endpoint": "https://localhost:7777/userinfo", "jwks_uri": "https://localhost:7777/jwks", - "registration_endpoint": "https://localhost:7777/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:7777/session", "end_session_endpoint": "https://localhost:7777/logout", + "authorization_endpoint": "https://localhost:7777/authorize", + "token_endpoint": "https://localhost:7777/token", + "userinfo_endpoint": "https://localhost:7777/userinfo", + "registration_endpoint": "https://localhost:7777/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json b/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json index 1443bcc7a..fd7a4d3a6 100644 --- a/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json +++ b/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7777.json @@ -1 +1 @@ -{"provider":{"url":"https://localhost:7777","configuration":{"issuer":"https://localhost:7777","authorization_endpoint":"https://localhost:7777/authorize","token_endpoint":"https://localhost:7777/token","userinfo_endpoint":"https://localhost:7777/userinfo","jwks_uri":"https://localhost:7777/jwks","registration_endpoint":"https://localhost:7777/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7777/session","end_session_endpoint":"https://localhost:7777/logout"},"jwks":{"keys":[{"kid":"ohtdSKLCdYs","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"gI5JLLhVFG8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1ZHTLTyLbQs","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"AVS5efNiEEM","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"ZVFUPkFyy18","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"mROehy7CZO4","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"it1Z6EDEV5g","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"7f1be9aa47bb1372b3bc75e91da352b4","client_secret":"c48b13e77bd58f8d7208f34cde22e898","redirect_uris":["https://localhost:7777/api/oidc/rp/https%3A%2F%2Flocalhost%3A7777"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7777/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3Nzc3Iiwic3ViIjoiN2YxYmU5YWE0N2JiMTM3MmIzYmM3NWU5MWRhMzUyYjQiLCJhdWQiOiI3ZjFiZTlhYTQ3YmIxMzcyYjNiYzc1ZTkxZGEzNTJiNCJ9.DNCfFeM-NyvWuZHQNJlVl8gFJaRh0vOZgoUX-88sGeFR0k9KS9poySBX8hNuZ3Lrnx-_A98dH1HbVijXHSC8pn4y1Lzmh-cnM-p8u5NWGxNuZt1uLHj8hdNJW7iY4cIFvCfKq3-eblDVbyTDfIJBGPq5x0kVZ2GC1M6Qo4mufNGiHncZ_QiZDW4l9VRM6mzZ0exoiHU00YwIUaa9rGepOefPuoEqOCE7RIxUrdc3Mwa_qgyDbJj3XO58r9JHMQYP9mcweTvLV9mth-B-Azo0kp4pC4TZSEb-5VPRnDgQME-boxDJIbsNP4LfgNSWqHhp5ZLuz2AzJJVsZH8-qbGPkA","registration_client_uri":"https://localhost:7777/register/7f1be9aa47bb1372b3bc75e91da352b4","client_id_issued_at":1491941281,"client_secret_expires_at":0}} +{"provider":{"url":"https://localhost:7777","configuration":{"issuer":"https://localhost:7777","jwks_uri":"https://localhost:7777/jwks","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"token_types_supported":["legacyPop","dpop"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7777/session","end_session_endpoint":"https://localhost:7777/logout","authorization_endpoint":"https://localhost:7777/authorize","token_endpoint":"https://localhost:7777/token","userinfo_endpoint":"https://localhost:7777/userinfo","registration_endpoint":"https://localhost:7777/register","keys":{"descriptor":{"id_token":{"signing":{"RS256":{"alg":"RS256","modulusLength":2048},"RS384":{"alg":"RS384","modulusLength":2048},"RS512":{"alg":"RS512","modulusLength":2048}},"encryption":{}},"token":{"signing":{"RS256":{"alg":"RS256","modulusLength":2048},"RS384":{"alg":"RS384","modulusLength":2048},"RS512":{"alg":"RS512","modulusLength":2048}},"encryption":{}},"userinfo":{"encryption":{}},"register":{"signing":{"RS256":{"alg":"RS256","modulusLength":2048}}}},"jwks":{"keys":[{"kid":"ohtdSKLCdYs","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"gI5JLLhVFG8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1ZHTLTyLbQs","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"AVS5efNiEEM","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"ZVFUPkFyy18","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"mROehy7CZO4","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"it1Z6EDEV5g","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","key_ops":["verify"],"ext":true}]},"id_token":{"signing":{"RS256":{"privateJwk":{"kid":"v-cHHQPNDvo","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","d":"pv-ULqejr_iYV8Ipm2yTv3_Lnu0GnZrjB0eW8u1Tr0Z8LSlALWn5b0DOgFXcl6iRebym5M9Hs6qLeSlMS2a-1rM5HVUR_x_RuLwojHbXPXsct-raoymD66xs8iLJw1f3uF5RTpn2fkR1ycHww-bO92hUdx6Y5Rdqfk5ZkMncuRIJI4PHrYcSxaGogl5JNL_Bzza5Sb8-GGV0Ef5wB9S4CM2VUgLj2r5RzwpezcrIA0w9TnbtEdA5EEdHG997jgQhp-fSUPKMtKrRRFJy_JqIYRUi4SOLP_gJYO_qpJlb9pxVQMVnhhXTnso-pSCfsxCTxRjb176BahlG3kuNTiwXKQ","p":"5JrtuYCK4-apgRriDLC2_LpVjlnioLoHHUGyYh8SZPwpOzDoQI3EOIZyFM0X9hRMBWoNXjgCUGhdwwAfw24JgKSx_Obni3pRVz69skm-Ee1dCRlDGi91B9q3-cNJG0qJI9mIPIRp2PCCvXToC48PVDkBm3t7zdzRPaosu_YWkrM","q":"yI-68nioykS5WrcvjKpsGke7O7MZ22sj9EGtPBRgoxSrDzZK9MutnM_9_vMYPGZy1cN8Ade1-Jw7qA8w8ZESeu5E4cQkArgpdVG34EEDz61A5SYf4GkD-qJ803TxZcmfqfGX-REoKUNafLaNbhQsOHrhrdN2oH-CZq2KrVHCt2U","dp":"zMGn49sqi-5yLF0z00IE5GDReOsxfdyhuqa5bAGArErfc1De9dMEycxCKjd5GsQbQ042IwnvqK2SLbLSwGyyvjLF6Uu4YMlySb68khBS2iPMjPW_kJipLhvNZTxxIqykISQaTnobhGAH-kHYBWJhzIIy2lzECyOZlq3x23kTxtk","dq":"etoP2ZavTbbrEvZC2hdKQI7P0bHTlOP8EhJo2vRgfYSbg6XuJCTfI78EBrdBkT3v-aDUxQwtGywYHsmvYUlL2KE68FAE_uVv_70etO8eNogZyEOiIwQwu8XsUFrBw2fNtXuXa6lmwF_RfbMUzujsbWxX8PInKAjzB5Il8CS08UE","qi":"GBJ90AkXHhbgiL4yk9w6MtQxi1F8XRHBpG3t97Aj1we14pITY56vpEJi97gUjsRsH9DZqzIFV62CSF0VMWaxxRX3c6yuUtJMBSq9Skpvipjwatlz3jxHGP26IFSO9b-NpidM9_egK5mYlGuNY0N1CN-7Lw_Rpt8cvrvvi2tB41c","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"ohtdSKLCdYs","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","key_ops":["verify"],"ext":true}},"RS384":{"privateJwk":{"kid":"5Rhg743p3K8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","d":"vvMZLzmQ7APUR0Jz6YiBRdmSZVX-D5ZcRVXJvZbDYeLpuA7W6Nfqk3kKmNLJ-PbV1AQP86OypU4IHJJcLYP_VKpt8Xnq5GItqPZQmBtPRLMSzVF8_UIzS1xORKGkEIWGUy-gyfIWUHnfRnFS8l2tlgLE_5H12YMgg4AuJKY_WkxJSedTKwr4K0COthvbMREqIGbNg9JJhJh54K2FtuNNqn4iycaYCNveunWekRBMpzL2IGsjECGtI4NSrjtneWpIY71pggG87QGduYGVgbdBYFSnJlgbCjN7bQNzpI8v7uE4eM7q6tphJMasVjCS1TGIuNZDl_-vfyCySkNlSvIyAQ","p":"6sPjPxcGVwAX1ADLxs7YRN_1U1xYUV_UenzTAnaNac5W8s-AQDoW7_6oCD3s0EmBRWsT_jhGbDUyMgJa0ZASa3nJVqXdYTrrxaBcOktUpLvq2cRgcxLkH_CYdT6yQMeUIjnAg5z-Rkjg0lvWPvqi-IVKDcoFUuF2sjGJjeF9d3k","q":"5_m_mSjbVM9ZGvvr-XDAybD3z2JPft1PjCISHcNdTe0-gu4z7VXNnIgynhD0JIee8UpEnBrPFOd7raPxY-y4wdYF-zE3gvl9IOveG793uPctvbWtQSYpcZuPWodn8t-3LvZNq5kLZLCSUIrgTJiwIS7v5Ihc5fxVuyJSYHeBtWE","dp":"4yrZ4lqtT9JPPF3o0V-l9j-gbCGXdGZ-fGf85w1AmXmIuTwApiWPvHt2rUL-vC3kYP_UQNLDkkGHaMzOhKocqNMX-DhXl5YkPv-FPwNVzHHqNv7HNZK6HA37-LfKVNTKirPHjZOEmQ48PlGPZzGwMTsJBX7O1_xDlvpIWHoxpkE","dq":"KQC8HRZbrmH4HgzpaO3FJeFh7AY0hvgXV22uRhSCKYQFyJ7SDuFbto9cYxQcE1jlf0DhX7ZdZBSGh-qygDcXcSujYwMQDNaMh4UpfT4aq1cFfsLeHOXh7XLRo-7LMOLaPjLLB8nFeca8FgB2JRPYDgV94ac4xG4VuT4X0XVOOAE","qi":"gVHniXGKh_ewcrZRRei-ujdYm-htsGYGjmCyXXQ_RVJYz9tauSzmBQPGfE088Wp4ybyTv0exZ_MnizFDHIpP6TWt_Dg5uYWP2UHbKdwdAs8nA9NSXdUFtyE06HsYx-Rd8APYl6A0oCjENweAx7xq9R4zbdMdZpmpX8v2N5WSZN0","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"gI5JLLhVFG8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","key_ops":["verify"],"ext":true}},"RS512":{"privateJwk":{"kid":"WHTKUBTBjl0","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","d":"nRMhd1yDQ3PjLQpLSRnM3hEu5kfJBi41tX77GrchDgs36AocKsYwPqLKjB3FVcGRQpPbQamtv4ArmCzlQdW3uhIZRKhpqZ5Fwr_WG5uWyM_ZWL6b33n3KHVWONzSp1id9jmtoicSlQUANKVSw_CDqmlvbDiKrLpqEyCTkGClG1XCMpTRq0IA_D19ZORd3XvdBePN1H2djX9Lh6ODW39iVdoDkj8b46STakIbu9rHUwA8ZusGd671JnXB4OemX71MCi677_GN1r5buWc8puFV8mrv-kYfk4hPyXQqZAqo9AbgoNbRb62OoWhs5mzmPYoxLyGNeUOedqefmSCQbQl1gQ","p":"5yAwbWvBFS3Wtgd4ncPQRkEqPVjaKU3u5VWdytdZylkGNVfB95WJiBJmLa1_arlMmKLuZlHAzgNDmd7_R0F6Bd8_mLynaxk3MTzsrawk17HTXkPX5k9jm8XDc1F6wvK9kL2Xc41DCvalWt6QMQXzJdQNJWy-mJx0He5CrULMHNc","q":"zXJhNeBWNg8s9QGufel8Mlewbu_e2cQVsolZZOgXlkj8_IbeRzH0PeHbzbSmabv4tJ36X579ddK5MSpL81sZ5ZbuPFYVVJCb4jzVtDFfNcgkM0OfRj_2F_T1JI2H1WKwHowTyQiXVp8xrECUg0DzkMpH-lse7fkrrS0-Vne92ME","dp":"lF6Wl_efWJA3kF0Vcfmc_yygCAe87N0JqhEfHXLHQl2J3b57VwuY4VAmZdZFwGY5pJabgfWjVtzDjciYic6fnZtmAQ_CTb8_Lg2VRhwG_qw6Kv5UX5XBNONsh9_bdcBMLtl2mwgo7KXPGplbaQ0PvM32rnqzk9aDuB8WkJEb5Ls","dq":"X7WQaev33blWJVHCO3BBZqaJUDU5KVP7E7B-z8575oxcJzyhYqN3-Dg3EO6-s_VY2LPcBx3nUDN6CNh-h4GCX_3fQIaN61Zu-IeEuyxhAYoaqzMuiSiU-fYpGf1BMXyHNcPmF7qD3lvNZUS0qyzgCyzhOVWn5A83dLbmGpwv-kE","qi":"pD0kXsVUjZWnDoExmpB2QnQcSP_op-OPebrLqHVzsXBZfpkf4Do48yrnL0BjI825008dDDq3fHXxWR42Vc27zHDvkaqg9ZJpCQIOpY2jKT1jYZ-HYqQeqvXCDSHM11hfkce0OaBGhcWCKaOX3-wB8sDmD-8K3DpCTuplXCGBeWU","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"1ZHTLTyLbQs","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","key_ops":["verify"],"ext":true}}},"encryption":{}},"token":{"signing":{"RS256":{"privateJwk":{"kid":"wrLgRGiRzLQ","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","d":"iI67yDEBeSXXpvqvQgVtHtTUf5rj2DaRVmiFqZIy6eN5dQdoNVq4LNwua3mIjZR5di1se7Vpwqe_E_6mt94IWnXwTiDDze_Y00glOQnJ9BHr53Enl5x6Rtjf555wFmRJ1-Gt3tgMfnpxWiHhwlQ6AMGjDeht9PB4lOCeXPjPUUvbkKKKBWBtVw-8e9hPZdJFjmMU_bmYL9i-gXMf6xWn4JLkrO-lVDvAqG7jlHdFN49HFBxFuxw-T4DY0GTd8OfnOBSWGaleADncTaUKL6dvXwgNtnes_PPKUfJ6BTgYpmM_4HhWMuuosarxhJAwkGoWu7LRm4W_jy5QUDFIVqTj4Q","p":"6MBN0ZdNba70Y3lEijgyYDE2oFtLFs3b9HtmLpr4_vQ-b0o4iasQO5bYmVW54rDvP_rCyBDs7uZUvoqeYD-xRYiPDErS5AzoeVNDoFS29fC2mNVPSqNBFOcRnqSMStuvAQwYR0zkYuCz1paAbLTZuiEmamNKx9Sxt4-FrEq6uqc","q":"xyHr9MFcb5VYir3d2_yRs0glIk_LNgT5uqv6R2I49iD-Z-w6EBen7M1ttkqXWA3J_kIufM75MwDjTpOFjO1Q7GVCVV5T4W9vs34Ko3u4jPJziECeIFV1ZDfyHk813eGhaGh9R_oqHe47vE2wBeRPzpIWj3ZG8yOrSTbn7eOEzG8","dp":"4zfRAHqPuTMiG_YoBjOEYknJBVT6giGnyA2rnHXn_KWeSfEQLr2UFEhX3aFF3dtTRYddHgj_9N1g_769jELBoZsF4z8skDtVvBOgImZxUrmS2LLtPHURtQE7Pz9uQioit4gCL6EOGMU6a5Pzfaw0HbP9F8ElIN4wPH3dRmyRzGM","dq":"iqVFog4XC-HR2hfEJuy9jTQIFtGzzRK9xYkEIztyKXxjZXwGGTo_QxLs9mUM5tQC9bKip2d7_lT57rWr4KlDFLST8NhSUr3B6hkx0w3LOud8JTvIXP7jUznYq92-xZPZS9akk77MIDbFBKCalB-YqVzxtEVHtPX6xmkiJnGo_qU","qi":"ZqcNWxzQ7lI4JxsQQhKTFAghR6J7QJMaqiiTrUiaWOSlB33kRKEdv3s1LAfMNdbGr3zl-Buhj5LOX-tPvWSV4ua9GumiHOr90Nm_WiTAJT2gbtXKToaJHSk_BeKN_8feak0Mvzwxphv8xz6C96NbXwDIDTV5YQweRFvQY5Mpmho","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"AVS5efNiEEM","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","key_ops":["verify"],"ext":true}},"RS384":{"privateJwk":{"kid":"1IGzLGffBQI","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","d":"qLX9ra72QELyDjg-k-Ql8ILfTFZjsn9X7QxJZLJn-e0ytgM0X-2blYj7nBC4mpTRlolJjtADVIBNCd5ryWJw8iAQwyhXz0mmMhWtQ4qml5mhI9B1RNoOOPFdcgQQEACcZ2bk-MP_HuoLm8Ju6XMsUvv0FfcXB9xtJkicEMdkGEe3uchr384r5t38ffaC-8ZA9enSoHBZwRaxFlt3i1TAGFwwQNeIsssrXJrUXi-YlZqmXaRf2Gl0fboXboFLXaWTN5RfD1iQ1zUBg55XswpkJhyR6D81XZLrTK-jOEbrhrclj5jujtk5TeqYrIZtMBNUwgRGzFkczkcNCWilFqX0aQ","p":"1RzqSRl2tZQrvDYVJIkufxtI-GvXVjIZYM2TUkCinAoHKN7QlwwL0QAXamr144v9JCGbMEIjcFo16Rj1Py77jLjE15ybdZpHqz3Gy_htjp0ySHJMI-T5Bxm5JxuPQLYj3k9Bhik-HcsQxJHKPXUZqpDDh-ivySd4UuGBpKOZXSc","q":"zc_wXz6sqrSHQPH6Yrr6oVJPmvwzBFv05g4NvWwoATZavuGo2-BdkqZVVaTPwBEB-BBgWz_VBhn48sV0gqN6mZOI9897HraPIwoNX1eWvfqPliMmbj9bHB99ZZtPqLcA6JXt3pISdE8mfEUHm65tUdvZ7l9wlU_RcHXdOS_javs","dp":"K9w3m7PR6q0EE0hOMabKGv7Slc4cE3FcJ8AngdYroVGvB4pUA8JG7EzIhO5ejOZSwwznk5cJFCZ80eyBDO_udZfRa06f8CRAe83LDE-kvKU9pAtiAEEvv3Zb1OCnKvpRh39oTORQFHGmkc4vgVaIYcJJe7837n5hFS20MN46wiE","dq":"mC1qZGJpNYdqgqDpLFtouiOsbMKRzmVX_Uri6e6w3cSc8IrWWk3ZoneOnVbRrghlVlB1jsLx9iL6KjfJ4FaUbj3ihqlJNfpyd8wU-yw-b5Z22OKApf_-lBrMk3Z1PiCicVd6nJmRP6LOqBA6gehFOMPArjqvehecmvTrcD9yfkU","qi":"BAG5sXbnpXWa0kUNCFgsX6YREYvSkrdeCLnpUHSw0ydU9xLswRBiQaYjoTWNHG1IfiSU-ascFqW-xZGlTEi8HDKamxZqYDyxvUMpYvSOleeMEK7Ieq580FQlzNHQ3supNMr6WK0cHsxs0dw3MBFkI4k7QknB5-mOLNvPD-F57Dc","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"ZVFUPkFyy18","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","key_ops":["verify"],"ext":true}},"RS512":{"privateJwk":{"kid":"zVgFtyyWWik","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","d":"taDca0jd5D7AfSYS5ea7vqZgvDPhEaBGfBMBxhXE1XRXkwSfbcQ8XbTjlWgvTOZcovxPInELJUFUv8SqEQqi-4YnM_M7LcwEFiUSjXGfOWYelgFYmh80YPMlZ3ZEVlaeDPzwy9DPH3Wc3RKrM0CV9cQiOMcy2hmZneCztEvFbohMI8bXFYeZRA-i7qJH9N3Cj_9iqGlKqnSEBl59IJX6FacX8EVi6FwCXWpJI5b6afab0dHBeZBjN-ZqRtR_kf78gaTSUKySJNrCoXpAun2HvYFXJYrt0byWho9wKt5x35SF3jcJ-DwEzjlCP9kZfw8XVPORh4tXKlbu_IrH0Ia-QQ","p":"_jIqpz116Ae6tqpH_HN5eT-ywJOHN_RJWbETsguBEWXjxJFdsP_M_34Rl1_T2Cz97iqde40IgkiCw2naUupwDdzY3DrmH0l8Z5nM6hyteRS14Y3z3GhX9Z_3BdsLSd76gpQdbN2C8QlG8OAHW0xT-6vYwo2sYHhEdBdmnBGIs4s","q":"yBdQ6sU6Px5M4sL3KR9cBTxOXJit-9Y8wdHPaSbmAZY-zVXTBWR0geLG_Dkx_c3NncSrSwWUlSVjLg-MG0EWr1W_dEjBWvAFjvCRqNoaZNFkOU_j9LG6zVyR6XPihENglaYZF3pKVDOjSqT2j0OIztcenHxd3sTE0BVBvEoedZU","dp":"3Cwdr7_XaYOQYPl64pouhCv9Kzpda8TG584t7hBy2dvz_eWfTlkyebX7jK7u8hZ-V5VH1KUi0p31zUbZWOpA5nD80Tye6EihXabky37NbsvWgiiPKcCjN1g4ATVqQLDHMOUT26C98wMDFE4ncRfawmlllZZa0TA6soc2VEYHruM","dq":"VIKEiqQCleYWUzBFc_jqxMtTzYgu887omnQjRiZHvyPWIqO9HOnwy2sc4CrIEop57cjDEEyrFNNVsH6gjmJPUn7E_jg8ckwuDNFOtCJqQ2qtCgfUH-VxIIuYlSF86qAKiyo8Ls5X1nh4324NNTUw8yuooi9k9lHlTn2r5froIoE","qi":"1YMuA45Yn4yHMa_B4xbRdnXdKehWJlSiksNfTbNINUqvLwOQDhCqVaPoamde4tS2nzT-ZQTxrp5jQqFGjgjTm0-p2EIFdzjs0NtLMDeEuMiHaxp7Ov1LpjdffTn_WknFgQtkjgygg2e5XQrEWDSzqNeV06blIbnegk1YnE6c8Lg","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"mROehy7CZO4","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","key_ops":["verify"],"ext":true}}},"encryption":{}},"userinfo":{"encryption":{}},"register":{"signing":{"RS256":{"privateJwk":{"kid":"wySK0UGZma8","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","d":"pIK2-QeajDDD5wWTn8AGqhs5JOgTv4lDQL6t1i_8HqFxZNloba8DWrOeJS9_yOP9maCkdQAoS83TzWFOcf7fOFWEAAYNen86ifyCbIA8T63W0t9l1FnuBsMoI9dVUD5nbQKWVGc9Vflo4W65cTineM3ur2TA7TcTrZALHGpQ3hU9hSLPzPmazeeNKSEwy-euD3Cjm85FLdlNHrk6Leb65zbOs6fumxwUVaBq-KmyK7EerUPeAUh0K4Xy0BFt1L1x9XI4unZDG4HfR177eDS_vvL_N20KzFWZvbWJeuiwGZn2NwIeaA0kIcVHpd3gUrEy9DaV4tsrfhsUZb6apylSgQ","p":"_9tQNveciKNBxgX9GepZ3G5VLMQhjkvInIlA-seE2moudpsPnnZqk2ZEc0Zl7XTeoTv1fBczUZx06H4hj0gdAhkHPLUJz0YtasXyRSX53aDICacj4rJYw78a-eSJ3tBKkbDV0Q24MkDY3p3MlVAAycxwLS0wHPc7GPQwPa7K39c","q":"xbR0fb0vrARDTZB51sU15L9tzSvPNwkt1O07lZolgoFdDgX_0ADgqv0iHgSlBQR9hoKHTqeEAjbkxRHBmv2KIhH_cLcESMU4JkTs-j1kz5diprfuutWWvs57XjCvewbbp59l3lZFc54WeXjzBWTSxvaXTlwBlCwJHAJiF1Dw83E","dp":"SdcfpV183apQNzhPPYV2_bkR9-N607hnY1XxXO7sFqUCV9SUg2UliPjA1IwCqq9J-Tp2tKN1eh4vV1HfmZx0UsCqaAjPlfRo8yHBs9cr75yRXsfQAYL7PzMONASTDa0LeFSSwMy21joE3OqpuoXmVFceIMuj0RhBBAilS4gAoO0","dq":"Zd1XlB2w_Vlo8AL7s9wCq6yyP19OMdYp5iahZ7B3mSlcL8iJiLubBp7MQFk2SUKKBo8kdjM7ggSUlLFUZq4xyOIrEgFKVNBA4P7sdvbBBXDDpJDqkRtRw1gSGnLNR38-F7y6OPeMa0jN3aKi3GmZbGhLh1VCfvy9aNAViFvs-hE","qi":"xy8cIuP9Y_vwX7mOYftqv_NofI37EEBxPdqX-CeEIigflsbmaWSVADql6t-XODgK7PcbepRpxcx4AuRPBGFULvPNgEGy5YtdSSF8RwNt3GhK_d5Hh71-hs0WQ_dZ5yFMXJDTg2RpcsZwn65mN1gcc7a7qYZwciYsa1Ynmj36xmw","key_ops":["sign"],"ext":true},"publicJwk":{"kid":"it1Z6EDEV5g","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","key_ops":["verify"],"ext":true}}}},"jwkSet":"{\"keys\":[{\"kid\":\"ohtdSKLCdYs\",\"kty\":\"RSA\",\"alg\":\"RS256\",\"n\":\"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"gI5JLLhVFG8\",\"kty\":\"RSA\",\"alg\":\"RS384\",\"n\":\"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"1ZHTLTyLbQs\",\"kty\":\"RSA\",\"alg\":\"RS512\",\"n\":\"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"AVS5efNiEEM\",\"kty\":\"RSA\",\"alg\":\"RS256\",\"n\":\"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"ZVFUPkFyy18\",\"kty\":\"RSA\",\"alg\":\"RS384\",\"n\":\"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"mROehy7CZO4\",\"kty\":\"RSA\",\"alg\":\"RS512\",\"n\":\"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true},{\"kid\":\"it1Z6EDEV5g\",\"kty\":\"RSA\",\"alg\":\"RS256\",\"n\":\"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w\",\"e\":\"AQAB\",\"key_ops\":[\"verify\"],\"ext\":true}]}"}},"jwks":{"keys":[{"kid":"ohtdSKLCdYs","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"gI5JLLhVFG8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1ZHTLTyLbQs","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"AVS5efNiEEM","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"ZVFUPkFyy18","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"mROehy7CZO4","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"it1Z6EDEV5g","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{},"registration":{"redirect_uris":["https://localhost:7777/api/oidc/rp/https%3A%2F%2Flocalhost%3A7777"],"client_id":"77bb3b35edb1f3f7b887c25d1211a491","client_secret":"98e44615d114b211dbafbf021d9d02aa","response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7777/goodbye"],"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3Nzc3IiwiYXVkIjoiNzdiYjNiMzVlZGIxZjNmN2I4ODdjMjVkMTIxMWE0OTEiLCJzdWIiOiI3N2JiM2IzNWVkYjFmM2Y3Yjg4N2MyNWQxMjExYTQ5MSJ9.tsVH74TFAdSVehKm2xbGeVoL3ZAQhldzL7w_HRsAcKcdHW-i9VZfcfKjBff1IHlFEw2LzEHupSzRmQG0H8Hmat3MohWIlySDVkM1mRsze8VsBOmAP_APSRfP-rVftcrb-hbmRtOES0j7za7xd2_GJ0eouOHjw9pk48w5W1ABT-G4Q86kSmkjSlu1Jsk2Hgs6gfFd9IS0kT_m25fSKAaqFr5-vzsdzqsX6YhLBGELLf2ii88Syw60JEDSY6EjRMc3nO4RXtymLdBKDvEOAn_I9_4z1h1W3d5rtPHKUcthVCNffnwcBAKGGqwfrPNVm7x8sfTY8MlpXdM_f3pukZizkw","registration_client_uri":"https://localhost:7777/register/77bb3b35edb1f3f7b887c25d1211a491","client_id_issued_at":1596011465,"client_secret_expires_at":0},"store":{}} \ No newline at end of file diff --git a/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Ftim.localhost%3A7777.json b/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Ftim.localhost%3A7777.json deleted file mode 100644 index b59876fe8..000000000 --- a/test/resources/accounts-acl/db/oidc/rp/clients/_key_https%3A%2F%2Ftim.localhost%3A7777.json +++ /dev/null @@ -1 +0,0 @@ -{"provider":{"url":"https://tim.localhost:7777","configuration":{"issuer":"https://localhost:7777","authorization_endpoint":"https://localhost:7777/authorize","token_endpoint":"https://localhost:7777/token","userinfo_endpoint":"https://localhost:7777/userinfo","jwks_uri":"https://localhost:7777/jwks","registration_endpoint":"https://localhost:7777/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":"","claims_parameter_supported":false,"request_parameter_supported":false,"request_uri_parameter_supported":true,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7777/session","end_session_endpoint":"https://localhost:7777/logout"},"jwks":{"keys":[{"kid":"ohtdSKLCdYs","kty":"RSA","alg":"RS256","n":"sxljNM34KhyDZIXX6mjR0GIbs8Z_IzeBfoFDlkxhdf2Tigl_mCZEnc88fBp619e4l3D_t5GfyR0ZWQuhmCUTY8AJuKqdyuV_jU59nvut_izKydgNxBHGeFMd9abG-PTuq6iE3qEyr8A04KAsZZh2Zact5i6Xvb6N1GB4HDMU3LUAcUwkB6QhCpC4BPzwrTQ8DJZEz1O-_cZj9Y60gFvEo1NCLY6ZppYCfI5wqQhaQJ3jsG0TM03w4w2mcWALrIRoCrt-FIVqKHlKaeiioQALlj3Hdv38hljZtO7FykPqZE4N0nn7T1KQyj2LNCYDU_-ibTwdWm9yagdGuEWPCGvVnw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"gI5JLLhVFG8","kty":"RSA","alg":"RS384","n":"1LvKSpE6v2nhiIdErilavuIRu7aFc3Sej72jtDYAZze6R4dl3-nNnuaNBj8dD3PU16ZD8HQrLKTV6W77udl2yAjar-ZcVpItf7VUX_dCQsRehe7LVC_NgiBVFz88JI_rFF3F2WLC4rIXujv5XdG2v7UyV-KAODrPgY5-jfDJOv11_Klrrpekrtlk98STu71HJYTQR9CzQnMtxBVCOXOIVPVaexnV6gKBSrRtgKHqJxt8FRU3j6xYBwAdeDZaUyeHyUAz2oZkEHmNxoxEj-6yqaTf53AEf3EKbzYHCr4puRJx3H05ZLHkRoUG8utl7CxDsSQPDbwnk2jPufFSmPvR2Q","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1ZHTLTyLbQs","kty":"RSA","alg":"RS512","n":"uXwK4QaRFmscFO4Sa5nKr5PwL2mWBL9e-omB2cCqqB2V6e7VHq5A_ybEFKXcXDGJKxxc2fHo_PNclUAqIr9Qa98nkQt0bd_F2QxtCqPc-3WcUoe3s3TIVNIOWwp93OAlabBkuNfb7dxnpUjYeGzIs-G7EPhON_5x0h2sC0r3v3Ev_J1mwrR3z9tpUzaODqmI2LKdc3Tu9Ha09CWzb4uRTXC4eVIJoEMxOelvxn6l8CMWLuv2XPaw-pMv33WK4QKfmnwJWO5TLvF2SaYR31oEL3GeG-SwIFTek1xX3cdeNljqsYCzHGHd4PxSqJGI3BPqn55FPCbdx46ZMmlOz_ImFw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"AVS5efNiEEM","kty":"RSA","alg":"RS256","n":"tQxTzwMoSCCRkiNUyp7CABfMZn8LU56axO31ErnW9qDZ4uuPdSO96nqHBU2JoMbnUjFQ9hufAt3UJPHDDD8kNoOOgEZb-CWnb_349oHb8bn7aIOpX1peukndSJ6Nt8SBvbARkb4ErI2b7V9588R8kPwVdW65BAK4ub1lc4EewKJWv4nVIvtp9m_qlohV321rru573hS3BI5qOX2NY1m_Abz4sBGqJVR1o95MqR2IYUeCSORPj34GSdHNUipMVJrouI7LAoO9dNhCu1q8Efy-Sn1YuCgEyTy_AMDuVgBgf1AHssXRymbE6A_IKys2ZxYZPYAUZflyffdUX9qmhtACaQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"ZVFUPkFyy18","kty":"RSA","alg":"RS384","n":"q1VCGGAL3arQ5tG9vMefKaHC9EXJLlJYu7Lgk_8RBPKJ8yejiTkU7xRWwJowK9kLsyYTHvCsJlGc-phNyEAE58QoqmQGePbr80H_q-7fF3H85UsQ5XFg2A06KQYT3dLn57Qzsf-qlJKwrVR3Rrz1XoxYY-IgEHPad86xW5PlwPKiNY1ZaWsOjdeBccsgfCeG5tn13a3GY5BoX90w7b8ly_BsL904-_Yeog_deesQ39oE_XKpORBnDxvUjFtPJIpaPMCHEqAKiVXH_dZrcGUevs9xvDl2Odiku7pUam3atzNQENKwB9HMDjATVdYZfelF9cllDVAUXKFHMenwqoV7PQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"mROehy7CZO4","kty":"RSA","alg":"RS512","n":"xq5YLUgQU82zwNtjw6xTbkAxpTp56_lnLy33srWPlZeFypbT8p2hC-918Vn08j-NuvzUeqarFLv7xBUZWrV2ilho_IYQWBZdMYCraBtDoLglctJtb6RzRG7rF0KsiyxsTwLCZ5UwcGpc_ZIrcDTRkmHvgqfA-KKpK_hIAwGC7rwNPDK0E26vuiaH85wnanQaWfdHzHFPW-cUWFbmjOZIQh0XHQSPnjE2JYX7rWWKga_8Oq7CUF_ArEF-8qTGL59GwS4OFcilvwyb53ANHy2bOEidRZCGQo6Kh2EjyjBHNB_YAiOLwfeTstb0fbDfWbfmdO3lW_-lBuGnQMPY5ukG5w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"it1Z6EDEV5g","kty":"RSA","alg":"RS256","n":"xZgfW761Mad1PHSOINv6kU13aiueEn19Ko3CR5EiuyuO5v8uJMfV24Mg8JTOxq9GuLIzte4CMg-5kFxQVopkqYZ8TP3eHAW6kWbh4j-C3I8vUJiA6LWGblFUsMg_sWvjwMPK4oF2bNeqGSVXSOtg3PMuBdV5wB4IBDikTovgSSbQ2gfgkEil94jOh0_bjzDXMDH6dv8Ong2Fj_bfWUg3MKcm6yVTCwCfqlfgNpcEqm6m3SVVpQRVxvlbsPmBt61w3QgOwC68rTD1BRVsH_DyL8DVsQKsg3PAbKqqNY0HM5YS9VPdFFxKYHiX7hZuNmtcPWDStxWSQNrvn4aaw5Xi5w","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"055bd7af37f092a8ccdca75fec9ee4bc","client_secret":"0975bff497dbf280df1e5e7bd96b42fc","redirect_uris":["https://tim.localhost:7777/api/oidc/rp/https%3A%2F%2Ftim.localhost%3A7777"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://tim.localhost:7777","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://tim.localhost:7777/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3Nzc3Iiwic3ViIjoiMDU1YmQ3YWYzN2YwOTJhOGNjZGNhNzVmZWM5ZWU0YmMiLCJhdWQiOiIwNTViZDdhZjM3ZjA5MmE4Y2NkY2E3NWZlYzllZTRiYyJ9.WuCn29IYlBTlDwJlA49MTKV7KQORVD7ZhY3OC3BI1NeC9kMmPfHebzvXq2Ms52jGZbJDWXfqwHYwW4osd-g0FI4s-9H4kJxxrqTJSQ6_pqlFbCst_4Ul7UIBcL-JUrBlYFG_DD30w3IOoVYJmV6nW6MMYzcQ8Mi-d-4Iqi7lJ3-kFGwUSgZ4-9PXVGd1Ps3TdCrN6qN6_y0d6K8qkneK0ERMWy7YnvdA8gxVoc6oVfIqB4FTLIhjQFcAc11hEXv9Z1m-aHfhEmUpDr8zHQRQbsCcDLt-UKl66bg7iv9jBqZfcuswRXNprWtXC_jjLUhLosWbKc-Gmz3jHV6UxwevQQ","registration_client_uri":"https://localhost:7777/register/055bd7af37f092a8ccdca75fec9ee4bc","client_id_issued_at":1498596175,"client_secret_expires_at":0}} \ No newline at end of file diff --git a/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_2d7c299a1aa8e8cadb6a0bb93b6e7873.json b/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_2d7c299a1aa8e8cadb6a0bb93b6e7873.json deleted file mode 100644 index 491a9fb87..000000000 --- a/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_2d7c299a1aa8e8cadb6a0bb93b6e7873.json +++ /dev/null @@ -1 +0,0 @@ -{"client_id":"2d7c299a1aa8e8cadb6a0bb93b6e7873","client_secret":"b2926a0f21cec49c906b7b7956cc44ce","redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7000/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file diff --git a/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_370f34992ebf2d00bc6b4a2bd3dd77fd.json b/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_370f34992ebf2d00bc6b4a2bd3dd77fd.json deleted file mode 100644 index d68fbeca4..000000000 --- a/test/resources/accounts-scenario/alice/db/oidc/op/clients/_key_370f34992ebf2d00bc6b4a2bd3dd77fd.json +++ /dev/null @@ -1 +0,0 @@ -{"client_id":"370f34992ebf2d00bc6b4a2bd3dd77fd","client_secret":"1fbd9aa5561f242e7f9b1f95910a722d","redirect_uris":["https://localhost:7001/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7001/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file diff --git a/test/resources/accounts-scenario/alice/db/oidc/op/provider.json b/test/resources/accounts-scenario/alice/db/oidc/op/provider.json index 1a9a5a909..9e30b9486 100644 --- a/test/resources/accounts-scenario/alice/db/oidc/op/provider.json +++ b/test/resources/accounts-scenario/alice/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:7000", - "authorization_endpoint": "https://localhost:7000/authorize", - "token_endpoint": "https://localhost:7000/token", - "userinfo_endpoint": "https://localhost:7000/userinfo", "jwks_uri": "https://localhost:7000/jwks", - "registration_endpoint": "https://localhost:7000/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:7000/session", "end_session_endpoint": "https://localhost:7000/logout", + "authorization_endpoint": "https://localhost:7000/authorize", + "token_endpoint": "https://localhost:7000/token", + "userinfo_endpoint": "https://localhost:7000/userinfo", + "registration_endpoint": "https://localhost:7000/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json b/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json deleted file mode 100644 index 64bca5b70..000000000 --- a/test/resources/accounts-scenario/alice/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +++ /dev/null @@ -1 +0,0 @@ -{"provider":{"url":"https://localhost:7000","configuration":{"issuer":"https://localhost:7000","authorization_endpoint":"https://localhost:7000/authorize","token_endpoint":"https://localhost:7000/token","userinfo_endpoint":"https://localhost:7000/userinfo","jwks_uri":"https://localhost:7000/jwks","registration_endpoint":"https://localhost:7000/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7000/session","end_session_endpoint":"https://localhost:7000/logout"},"jwks":{"keys":[{"kid":"exSw1tC0jPw","kty":"RSA","alg":"RS256","n":"stiawfAYMau0L6VtUt2DCt9ytp0JnpjBlf8oujcPJsZ7IGNl4cq9VDEkm6WKxiaQ5aHwjrIF4EtW97Q1LwUIloiLgYvgBj6ADV1Zfa7-KDIoSE1nH1Uz8NWbPwaJ4dsjDQUa8EOGPAHjw1zgmCnOd70lIvqM8MnNjg9haut3tUhrILOmo3ubExawkvtp7GdiUqwSGo5K7s1WcKP4nQgd8SNxVMBFAyWC380_ZXcPL9SKgDsw9DIExmMVDjmaPn4orF3zivqVfU0VHi7z6ObNnBia2U6FK-M-j1-nPVNXW2En2xrtJ-nnGoAzasQ__GkC0XpYLyjv_4kuGkEFUwN1Bw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"XHWy74gIj2o","kty":"RSA","alg":"RS384","n":"rPDDwDbxtk6wV4cVi5jhTDMyP6MisKZypSm6-JQ1sMGjY2TcwVAMugIsDdY6hpcWvfGR8uJymCmnNvHrYOKsMqCEmexXoGBg-gqsuitjzxQUQfmulcD5MGrbsuGVpmuPKQ9lkT0BjdTplKtrKvBqIrdWCIp5wivh0NxI3tqb7eEzMc1rJQ781SKlQAxM5BLghLoZpdUiyHl1sKYH5ofs7Qqn-MBagFMtmy8Fl0YrnX2CSKM6xwGOlqm6dbVGpLiOdBLzfL-9ICyg1zurxWOUSIKosBY_dNUdx3e9QdsbHD74kKCEYe-BEvgj8t_dnEST_8g4hmxEeevOdSuAkDE-eQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1pWK9Xv5qtw","kty":"RSA","alg":"RS512","n":"2Pxvhef0LSwCNFjBnBnTeRnN_kc1G_frzLCTqyPMow8jICVmK_-44QlOi860J12rnSGYi-UWOtg5ZRTnNCAakMnXtqajjPQ4PxmcMkrkdCfhyShYMjmqTICGUPfOujX3d_oc3l-SSpBeQdpSejecaoyIAmR4Ra7x37PWiZgw2b3Ss-TMeL8iufc6221gNDAzmOlQmVby0SXz43Jf1WbUnRLBygAGmcD18CSawNSQL2lZMRtaFlTikZ5Nz9dbzUS5U8btg99u9cOL1wL6xLnMX2MdYImF_ThtDdFW-Q3_Xj8xYJIUinMKSyPofk0yOD5F0OcjR2IIp828BO42htb8lQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"hE56feUj3HU","kty":"RSA","alg":"RS256","n":"5UAby9SJp2vDnV8ZIq7E5HHtGYKbAVwTmzYSxbdcMBhJScoY2HX2-N8cqZNIf6RhE7ipimVkbYeXXX795DtnbCN9Jcl8iKbWBLDe6ozHyQ-ZEuzdWe8gSi6HGwCW3ECfN8dXUbS72BIvID1KAe2LoQQuyRx1A9nlHQCJao31w7-y17h-j13_X5YhmVBYmLwmQI-3yOI4AYGFgwEuuS347X6bDk4IoSSLVieM65SAL9djs_ZzIyXrV5BEf7eY-zCazRt7vdqn11W_aM-JdyS5xDrsgwVPhaksU50vgPOjfzbOLVALvEDQ-sxCuT1Ic6S3I9zrVq6SzORW7vZtiKn_YQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"TcucFsr7B9c","kty":"RSA","alg":"RS384","n":"yNViaNYveaDftUVYRQmi1JbzBBk-uvOeQ-4vr_levpAMCVFrtEWN5A6jWmhbD4B3nvAn9828cjt1697nNPOIbF2hzRWCZIfsN5YJUbhseREb05ZL5TLlv5TkHj3sdhpmQqcd6JWcCQDIbaiZeLdQ-Ljm5dbckZlsJc1eJ96mlXVlQ3VaLbrEJThXjJ_YtPfMq1vUAzHpq-OF4yhGoTzvcVEswiH0tyTDobmaQuGJq1DabTC0-Vt4TpmlxOHLgCU5-ofehHaIeLqwRUrl6n5gKo0CX-7a8qvGYNX14X0Iq_1CjhP1Q8619wcFfXESFgitl7EQrncfCx8TrtdOIuFGeQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"7cB0RYQoGVA","kty":"RSA","alg":"RS512","n":"s75H3KlbQgGFLGf_oqYC-cv0-iQ6iRi4bDs1x00taHeTJQPazYJny-plYxi3OU7U9kCChS3v2zIIiAb5IOHI9nxTtfra2p1-VNIEe8YLqpJsYbie5uXSGXNahHIsZNjYO0kdTg-WkUZOR2jyeSUPOggp2zNBM_9UUUhLWWVKE_SHshm4vbHJIxIZfDmwLhZEUwvgwO1-b-VAitNd4kQXfbg2KSxXPb7_pRK9qV2KJJJ4k4K2oa7tFfilXwB1FDZnPgPLxI7dmzwgwekngXJ5PfQrVvsUDBe9mZUH2wanZ5q3W9qF7yLQYbMi8l9O8CQYHLstSNNMDc4okYZQY-HCcQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"_KGGowgYPwQ","kty":"RSA","alg":"RS256","n":"pp5I4Ubud6110-hIvfFsosJLSn-OrrW1C2ck5751GydxikI6sQnMlqbAS1yjyZSWRYPKWR8vD5NRp-EKP2Hd0dS1hA9_hNeQ4JKCcvmlOpmy07ckpr4fg6G-l501-36u2pnH5lJJGvA84xlaEfcqH3urHhsPbrZaurCOhiBPON6ek2GF_H1sYvdzflQ0E0k5ibwHNdVE85Ou8Uvzw58eDl0uhlwpRPg_k_zQFyeNK8MyDTcnExR13xU4IcnQPz3VdjC6BnOZWDE_GmspCE_4apd3bSFEHcV9C4v1PCLqQurBXTs0vgvfWML9UnSqWoGlnkczpYGgtujnnsxRpWFmCQ","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"2d7c299a1aa8e8cadb6a0bb93b6e7873","client_secret":"b2926a0f21cec49c906b7b7956cc44ce","redirect_uris":["https://localhost:7000/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7000/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAwIiwic3ViIjoiMmQ3YzI5OWExYWE4ZThjYWRiNmEwYmI5M2I2ZTc4NzMiLCJhdWQiOiIyZDdjMjk5YTFhYThlOGNhZGI2YTBiYjkzYjZlNzg3MyJ9.FL7GfVjf1faSrKg6G7EmQyGFpprHf-Djw06kLypEu9__g2ozzSgxPzo2cgHWGc5gNQ9D5FU-unwZmx354WvIk0DvU4GF_sDhG5gfVgRUiwNgKzgyaxl87aoUG4jYfwHDYwvZLXCPIuoCD7iB2u4cD_NYhK2u6OQST9bRSTlelrXN0MyJbDy1eItY6ys8yH0Yw-584SK6ksZh2NmjvBr73znmVI0xHdv80ntcrfagw-G1PK79OG_DH_wjPqoUI9yUxpY2AjnLkqbraQIwT6Uwx0eFNCj7OwVVoIOkxdDMCargpSHF1jvBBL8wsXqppuEy0YhHYIfU6POFZBofRJrKtQ","registration_client_uri":"https://localhost:7000/register/2d7c299a1aa8e8cadb6a0bb93b6e7873","client_id_issued_at":1489773557,"client_secret_expires_at":0}} diff --git a/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_eafafc5103e5b15ba06c3bed7c5dc3df.json b/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_eafafc5103e5b15ba06c3bed7c5dc3df.json deleted file mode 100644 index 614f15ff6..000000000 --- a/test/resources/accounts-scenario/bob/db/oidc/op/clients/_key_eafafc5103e5b15ba06c3bed7c5dc3df.json +++ /dev/null @@ -1 +0,0 @@ -{"client_id":"eafafc5103e5b15ba06c3bed7c5dc3df","client_secret":"5eac22a963328151a139206a35036b17","redirect_uris":["https://localhost:7001/api/oidc/rp/https%3A%2F%2Flocalhost%3A7001"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7001","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7001/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file diff --git a/test/resources/accounts-scenario/bob/db/oidc/op/provider.json b/test/resources/accounts-scenario/bob/db/oidc/op/provider.json index 424ccea1b..d9fa3b4c5 100644 --- a/test/resources/accounts-scenario/bob/db/oidc/op/provider.json +++ b/test/resources/accounts-scenario/bob/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:7001", - "authorization_endpoint": "https://localhost:7001/authorize", - "token_endpoint": "https://localhost:7001/token", - "userinfo_endpoint": "https://localhost:7001/userinfo", "jwks_uri": "https://localhost:7001/jwks", - "registration_endpoint": "https://localhost:7001/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:7001/session", "end_session_endpoint": "https://localhost:7001/logout", + "authorization_endpoint": "https://localhost:7001/authorize", + "token_endpoint": "https://localhost:7001/token", + "userinfo_endpoint": "https://localhost:7001/userinfo", + "registration_endpoint": "https://localhost:7001/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json b/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json deleted file mode 100644 index 0df32c0de..000000000 --- a/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7000.json +++ /dev/null @@ -1 +0,0 @@ -{"provider":{"url":"https://localhost:7000","configuration":{"issuer":"https://localhost:7000","authorization_endpoint":"https://localhost:7000/authorize","token_endpoint":"https://localhost:7000/token","userinfo_endpoint":"https://localhost:7000/userinfo","jwks_uri":"https://localhost:7000/jwks","registration_endpoint":"https://localhost:7000/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7000/session","end_session_endpoint":"https://localhost:7000/logout"},"jwks":{"keys":[{"kid":"exSw1tC0jPw","kty":"RSA","alg":"RS256","n":"stiawfAYMau0L6VtUt2DCt9ytp0JnpjBlf8oujcPJsZ7IGNl4cq9VDEkm6WKxiaQ5aHwjrIF4EtW97Q1LwUIloiLgYvgBj6ADV1Zfa7-KDIoSE1nH1Uz8NWbPwaJ4dsjDQUa8EOGPAHjw1zgmCnOd70lIvqM8MnNjg9haut3tUhrILOmo3ubExawkvtp7GdiUqwSGo5K7s1WcKP4nQgd8SNxVMBFAyWC380_ZXcPL9SKgDsw9DIExmMVDjmaPn4orF3zivqVfU0VHi7z6ObNnBia2U6FK-M-j1-nPVNXW2En2xrtJ-nnGoAzasQ__GkC0XpYLyjv_4kuGkEFUwN1Bw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"XHWy74gIj2o","kty":"RSA","alg":"RS384","n":"rPDDwDbxtk6wV4cVi5jhTDMyP6MisKZypSm6-JQ1sMGjY2TcwVAMugIsDdY6hpcWvfGR8uJymCmnNvHrYOKsMqCEmexXoGBg-gqsuitjzxQUQfmulcD5MGrbsuGVpmuPKQ9lkT0BjdTplKtrKvBqIrdWCIp5wivh0NxI3tqb7eEzMc1rJQ781SKlQAxM5BLghLoZpdUiyHl1sKYH5ofs7Qqn-MBagFMtmy8Fl0YrnX2CSKM6xwGOlqm6dbVGpLiOdBLzfL-9ICyg1zurxWOUSIKosBY_dNUdx3e9QdsbHD74kKCEYe-BEvgj8t_dnEST_8g4hmxEeevOdSuAkDE-eQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"1pWK9Xv5qtw","kty":"RSA","alg":"RS512","n":"2Pxvhef0LSwCNFjBnBnTeRnN_kc1G_frzLCTqyPMow8jICVmK_-44QlOi860J12rnSGYi-UWOtg5ZRTnNCAakMnXtqajjPQ4PxmcMkrkdCfhyShYMjmqTICGUPfOujX3d_oc3l-SSpBeQdpSejecaoyIAmR4Ra7x37PWiZgw2b3Ss-TMeL8iufc6221gNDAzmOlQmVby0SXz43Jf1WbUnRLBygAGmcD18CSawNSQL2lZMRtaFlTikZ5Nz9dbzUS5U8btg99u9cOL1wL6xLnMX2MdYImF_ThtDdFW-Q3_Xj8xYJIUinMKSyPofk0yOD5F0OcjR2IIp828BO42htb8lQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"hE56feUj3HU","kty":"RSA","alg":"RS256","n":"5UAby9SJp2vDnV8ZIq7E5HHtGYKbAVwTmzYSxbdcMBhJScoY2HX2-N8cqZNIf6RhE7ipimVkbYeXXX795DtnbCN9Jcl8iKbWBLDe6ozHyQ-ZEuzdWe8gSi6HGwCW3ECfN8dXUbS72BIvID1KAe2LoQQuyRx1A9nlHQCJao31w7-y17h-j13_X5YhmVBYmLwmQI-3yOI4AYGFgwEuuS347X6bDk4IoSSLVieM65SAL9djs_ZzIyXrV5BEf7eY-zCazRt7vdqn11W_aM-JdyS5xDrsgwVPhaksU50vgPOjfzbOLVALvEDQ-sxCuT1Ic6S3I9zrVq6SzORW7vZtiKn_YQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"TcucFsr7B9c","kty":"RSA","alg":"RS384","n":"yNViaNYveaDftUVYRQmi1JbzBBk-uvOeQ-4vr_levpAMCVFrtEWN5A6jWmhbD4B3nvAn9828cjt1697nNPOIbF2hzRWCZIfsN5YJUbhseREb05ZL5TLlv5TkHj3sdhpmQqcd6JWcCQDIbaiZeLdQ-Ljm5dbckZlsJc1eJ96mlXVlQ3VaLbrEJThXjJ_YtPfMq1vUAzHpq-OF4yhGoTzvcVEswiH0tyTDobmaQuGJq1DabTC0-Vt4TpmlxOHLgCU5-ofehHaIeLqwRUrl6n5gKo0CX-7a8qvGYNX14X0Iq_1CjhP1Q8619wcFfXESFgitl7EQrncfCx8TrtdOIuFGeQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"7cB0RYQoGVA","kty":"RSA","alg":"RS512","n":"s75H3KlbQgGFLGf_oqYC-cv0-iQ6iRi4bDs1x00taHeTJQPazYJny-plYxi3OU7U9kCChS3v2zIIiAb5IOHI9nxTtfra2p1-VNIEe8YLqpJsYbie5uXSGXNahHIsZNjYO0kdTg-WkUZOR2jyeSUPOggp2zNBM_9UUUhLWWVKE_SHshm4vbHJIxIZfDmwLhZEUwvgwO1-b-VAitNd4kQXfbg2KSxXPb7_pRK9qV2KJJJ4k4K2oa7tFfilXwB1FDZnPgPLxI7dmzwgwekngXJ5PfQrVvsUDBe9mZUH2wanZ5q3W9qF7yLQYbMi8l9O8CQYHLstSNNMDc4okYZQY-HCcQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"_KGGowgYPwQ","kty":"RSA","alg":"RS256","n":"pp5I4Ubud6110-hIvfFsosJLSn-OrrW1C2ck5751GydxikI6sQnMlqbAS1yjyZSWRYPKWR8vD5NRp-EKP2Hd0dS1hA9_hNeQ4JKCcvmlOpmy07ckpr4fg6G-l501-36u2pnH5lJJGvA84xlaEfcqH3urHhsPbrZaurCOhiBPON6ek2GF_H1sYvdzflQ0E0k5ibwHNdVE85Ou8Uvzw58eDl0uhlwpRPg_k_zQFyeNK8MyDTcnExR13xU4IcnQPz3VdjC6BnOZWDE_GmspCE_4apd3bSFEHcV9C4v1PCLqQurBXTs0vgvfWML9UnSqWoGlnkczpYGgtujnnsxRpWFmCQ","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"370f34992ebf2d00bc6b4a2bd3dd77fd","client_secret":"1fbd9aa5561f242e7f9b1f95910a722d","redirect_uris":["https://localhost:7001/api/oidc/rp/https%3A%2F%2Flocalhost%3A7000"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7000","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7001/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAwIiwic3ViIjoiMzcwZjM0OTkyZWJmMmQwMGJjNmI0YTJiZDNkZDc3ZmQiLCJhdWQiOiIzNzBmMzQ5OTJlYmYyZDAwYmM2YjRhMmJkM2RkNzdmZCJ9.HkMGXV33JfSf5VFF3eY2XdEnH1KkG911-1MSoAcHaUjkXRJCW1KB1l0ofMEqBeHb3mC4iC8xZ3TP4F5kz2fPDQvAZe3v-LNjO2N8vCEpnT3HhKQnRitsA2zx0V6_aiGCDSyTavXK27OmSYwNs50RZQeSBjy76hjsS_sHu7_W42UDVn-beMkKpOhHnHddrir75JcmkUh1YqYMgopClQkt-Y22kdAQ3of2l17_QVDSUxatUEUVDSj76p8MAkYxb2YTdwULb-9fhQoYsy9JJphf59Bn5L26MlFlL9OgBYZRwVE8zvlGdyxllcgs4nSQbziOuQmArfQV3L0r-m8zDZYykw","registration_client_uri":"https://localhost:7000/register/370f34992ebf2d00bc6b4a2bd3dd77fd","client_id_issued_at":1489773628,"client_secret_expires_at":0}} diff --git a/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json b/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json deleted file mode 100644 index 862d7c9f9..000000000 --- a/test/resources/accounts-scenario/bob/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A7001.json +++ /dev/null @@ -1 +0,0 @@ -{"provider":{"url":"https://localhost:7001","configuration":{"issuer":"https://localhost:7001","authorization_endpoint":"https://localhost:7001/authorize","token_endpoint":"https://localhost:7001/token","userinfo_endpoint":"https://localhost:7001/userinfo","jwks_uri":"https://localhost:7001/jwks","registration_endpoint":"https://localhost:7001/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:7001/session","end_session_endpoint":"https://localhost:7001/logout"},"jwks":{"keys":[{"kid":"ysNKuDh7-rk","kty":"RSA","alg":"RS256","n":"wvMeFsXkedSC_tnFgzvSHSYqoki9d95_l6Rm3hcwNknOkaycrrJketqeE4oSq_H4curUdPjUXYwu5e5LSoEZERLNElTXY10MUpu_he0DrhlsnWbBlzm6e3YuPr3MZlO_beQhpVtTnPTTeOZgOnUK9A44uqIzWoh7uaiU5uRi5JrZFtVpk2KGp49o68IXkSvhd0BkFaEBB4r-BSjpWwXKeu9Y1Tp2V7C5pKpXHZwOzI4LZru-QoTARlLKGsFPxTjK1E47N76dy1usoKLu6Xs0toaiXnxNUTLPk4ERg1kk93mvHkiIDsP-jVawJh-bhWLXQEEm7lbAV0IkcySqiJaKkw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y8dNW6a_V18","kty":"RSA","alg":"RS384","n":"xQNISCAVvlsB4VTHq9HQcDf3PxF7D9DvnTNYPtXAxTIXx5bXVX4WxJU2xSTkYtN0k-yAMXQed9MAYNKsNwD7NAO7RV7m6jCSIgD1FEu3V6iEeliMetL4CfIe_Vn7Rb37lSI-gKaNMwBVIcYoAy7xOXLxxpSFJ5t357HbJnd3p0cgvx13sfyz-WyxqMLWY5IdxktwS-tdxUmpsk6M2xbcJB97c4h4afrfxp68ZB4fznC23aos6QUm7DLhGOURJAdwQTebUre9J6Vy3BXfKNpXb62AGpzPLGDzt-c-kQ05ckEzo9ZZZVC6l-DfMryb5rLZKlMKTefzL12ricSRcltcZw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BSILu2VUSq8","kty":"RSA","alg":"RS512","n":"2OyR9CUp2B3_XrC1rwx3CxvsGenGyyjj5i_BMUyi8biEAu7N3aZ7AxvaSVtYGeWCWDRmPE2XImoEDtLBdG3wlOroOlRvgGnd3hlajqswIRgy3dmmbVETNqqJJQefc5tRESsA3VHKz04H3trcibo-ycM5HRc3cGXdWExg2XQUxkmOXKVCUEBnMpeWGlAG-QUGjGP3DVZ0V6-ldQXH_lP1ftt5zTWusOp0iyrLbvX7eWduVlfGsIHYNi3cVJdAxbZXUMwOwyHn3HUrlCDi1tc8_x8-pq2SgQhTrJQVF3D8UExYV_k6cTQOXRqJgz7LcISYyWULm8FM2NYWGl12MCMqqQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"xuMN0hE4aNA","kty":"RSA","alg":"RS256","n":"xs-BOX2tAPab_6ftuKFJNqJJPAMf6NnGEt_KPEuQKlS6Eoqxd1Sl3V6y8mj7g4TTg7Yb0JT0GjUmKs61cJww6w4JIQepzAKb_LT-mrOjckWTDC4lUSYm8IX-tfFDUKhkYh-rOQz7rNQ13BKQ_MHKGY3_imzp5tRvevkbwHzGjHRVMPKzRFBm20O5_IOSCFLYp0dIi-zKK7gSpZFfMW6ZoAoZiOhBoRhNFs-XJ6UUcAifNmpxnCDM9KJBGv7YCVroYnyt7pz0xSrab72ZGPQQo5EqnjvckO1ACQuekJfOCQ0c2yVd48y-W_wTDvSn1ZKOdecTE0BbQg2P-h1HYN3RFw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"hrVDwDlmtBc","kty":"RSA","alg":"RS384","n":"na2HnmI9weG040vd5v8mC9RkfzKmil-GtZxUNtCndW3MV_55x5yBund_TSo_rDHrlKm_ZvVWhvkhHtteZ-V_Yv521zA_vVaFVwCGQ0-KXSRW6GtereabW835tb23nQWItRepT1SX4Z_7tpS-_anpVVwaKvUqEJcUptFfkGICP98yMnemGkAR-ejLVNSElh4u9FU6q8Y4wBuBv_VRtcFanUcsnSDWIjCL0YyKZ1Ow7FqvGjpglBHsfzeWFyX2Hn2JZvozWNMGGm77ietL7fsPfvfAilrHXXFNk0Oso8DtQnj6Ft1oXLUyZijSiTN7AubpdaylW7tjbkXf42ZmPadjvw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"5DeLhvjbXpU","kty":"RSA","alg":"RS512","n":"xH5VCmySFeekK1oYflMd6XWV9PsNP8JBUbwhR0Uq4ANRPVdhzFc1N8GInEl-XWgBU9CYtLhMB4CrgRiFgSQPU7AUmYfmmaZ4ScGQItpIHcL5TSELw5ncQTmv4TYTEksvvESm-ihRbN6Irhrm-_izjzXZd1yRlpZJL-e4L5CGlIl4s1_ZwhHoF79Nw0_ql4Awn4hJQiZzdJnaJ36ltSVfIN750Glyv9MGVATpwKSsEtIiDHw8szcLXv04wPdmwTcblhgrSrgbPTn4YHpjmq6I6iFJz3sJEAGT-XbB7PdEC3Snk9CC8iJzaF-DrRVbp2BIi4Vo51AC1NPgESDU8lSWmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"5lqnxcDvwtY","kty":"RSA","alg":"RS256","n":"nSn6UV7vgCImW0PExOhWUOqtT4_SM1ZShwN-Ti-4sIfiRgaOw1_Wf4PAHkqQmTp8xiOZhDOfe2NTDGhP0VENkwILPs_kdHq-Pm-4Qq4tx9nSEKdjq1XlEP99wmtmMQOSBdenwzkKzkXMMSROOqs3iItablA2vFnVfjZUsEioDikn6sQIg7nwQT6Sf76w1wv5uYrVlc-nU6FPh_08-h5C_IL2QNpbRBHM1BKtZEH2njDnSKVNFzwuwDfnjRtKwOtAmOwxxO0xXZHlDZYYE4tAlbAX1anJj_mjWxoLDPwQKvZCMw_XPLY3jo5nsSGOX2bBCWsZsZcbs_Cg0t58DldC2w","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"eafafc5103e5b15ba06c3bed7c5dc3df","client_secret":"5eac22a963328151a139206a35036b17","redirect_uris":["https://localhost:7001/api/oidc/rp/https%3A%2F%2Flocalhost%3A7001"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:7001","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:7001/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAxIiwic3ViIjoiZWFmYWZjNTEwM2U1YjE1YmEwNmMzYmVkN2M1ZGMzZGYiLCJhdWQiOiJlYWZhZmM1MTAzZTViMTViYTA2YzNiZWQ3YzVkYzNkZiJ9.atRg3STosJx0a9FV8cadbr0TpccgdTwqjsKQQYFv1hwDptgJr_WPYfp5mpUvNfr-Q7M4Ege5mONmw-JKa9rkqGzB5EOsEuJs1CfXZcFPjNZU10X_3iDnZik6eqYDVHmpwJrgVm3GIM3sN1VDqyksVUyr-Dd6vNbVnnHZOFHUpcZBSkvOb6bensDlgQ6TpZ-45TtPNgeHHjmhaL3t0xFeVABjUBLg_38yrxP_-Tylc7KMZVNCQCCDgGkgHBPyzf9KwHv8UU_MvHtQzYlV4_2u14iz9mLbMvbGMWv9akdGCfwZDldThbVSfmt_lz3dfRNivGGRnJNec9tdP2wT4mv4uQ","registration_client_uri":"https://localhost:7001/register/eafafc5103e5b15ba06c3bed7c5dc3df","client_id_issued_at":1489773546,"client_secret_expires_at":0}} diff --git a/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json b/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json index 68a3b5341..7053703e4 100644 --- a/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json +++ b/test/resources/accounts-strict-origin-off/alice/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:7010", - "authorization_endpoint": "https://localhost:7010/authorize", - "token_endpoint": "https://localhost:7010/token", - "userinfo_endpoint": "https://localhost:7010/userinfo", "jwks_uri": "https://localhost:7010/jwks", - "registration_endpoint": "https://localhost:7010/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:7010/session", "end_session_endpoint": "https://localhost:7010/logout", + "authorization_endpoint": "https://localhost:7010/authorize", + "token_endpoint": "https://localhost:7010/token", + "userinfo_endpoint": "https://localhost:7010/userinfo", + "registration_endpoint": "https://localhost:7010/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json b/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json index d77cc8409..fb1bc58b8 100644 --- a/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json +++ b/test/resources/accounts-strict-origin-off/bob/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:7011", - "authorization_endpoint": "https://localhost:7011/authorize", - "token_endpoint": "https://localhost:7011/token", - "userinfo_endpoint": "https://localhost:7011/userinfo", "jwks_uri": "https://localhost:7011/jwks", - "registration_endpoint": "https://localhost:7011/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:7011/session", "end_session_endpoint": "https://localhost:7011/logout", + "authorization_endpoint": "https://localhost:7011/authorize", + "token_endpoint": "https://localhost:7011/token", + "userinfo_endpoint": "https://localhost:7011/userinfo", + "registration_endpoint": "https://localhost:7011/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts/db/oidc/op/clients/_key_7f81f70c7c306e96fdb5181f4c1d7222.json b/test/resources/accounts/db/oidc/op/clients/_key_7f81f70c7c306e96fdb5181f4c1d7222.json deleted file mode 100644 index f83ca9ec7..000000000 --- a/test/resources/accounts/db/oidc/op/clients/_key_7f81f70c7c306e96fdb5181f4c1d7222.json +++ /dev/null @@ -1 +0,0 @@ -{"client_id":"7f81f70c7c306e96fdb5181f4c1d7222","client_secret":"f764cc06dbeeb2d908e10fb3b418853f","redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"],"frontchannel_logout_session_required":false} \ No newline at end of file diff --git a/test/resources/accounts/db/oidc/op/provider.json b/test/resources/accounts/db/oidc/op/provider.json index 50f8790bb..d2dfd623d 100644 --- a/test/resources/accounts/db/oidc/op/provider.json +++ b/test/resources/accounts/db/oidc/op/provider.json @@ -1,10 +1,6 @@ { "issuer": "https://localhost:3457", - "authorization_endpoint": "https://localhost:3457/authorize", - "token_endpoint": "https://localhost:3457/token", - "userinfo_endpoint": "https://localhost:3457/userinfo", "jwks_uri": "https://localhost:3457/jwks", - "registration_endpoint": "https://localhost:3457/register", "response_types_supported": [ "code", "code token", @@ -14,6 +10,10 @@ "code id_token token", "none" ], + "token_types_supported": [ + "legacyPop", + "dpop" + ], "response_modes_supported": [ "query", "fragment" @@ -50,6 +50,10 @@ "require_request_uri_registration": false, "check_session_iframe": "https://localhost:3457/session", "end_session_endpoint": "https://localhost:3457/logout", + "authorization_endpoint": "https://localhost:3457/authorize", + "token_endpoint": "https://localhost:3457/token", + "userinfo_endpoint": "https://localhost:3457/userinfo", + "registration_endpoint": "https://localhost:3457/register", "keys": { "descriptor": { "id_token": { diff --git a/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json b/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json deleted file mode 100644 index 476d67574..000000000 --- a/test/resources/accounts/db/oidc/rp/clients/_key_https%3A%2F%2Flocalhost%3A3457.json +++ /dev/null @@ -1 +0,0 @@ -{"provider":{"url":"https://localhost:3457","configuration":{"issuer":"https://localhost:3457","authorization_endpoint":"https://localhost:3457/authorize","token_endpoint":"https://localhost:3457/token","userinfo_endpoint":"https://localhost:3457/userinfo","jwks_uri":"https://localhost:3457/jwks","registration_endpoint":"https://localhost:3457/register","response_types_supported":["code","code token","code id_token","id_token","id_token token","code id_token token","none"],"response_modes_supported":["query","fragment"],"grant_types_supported":["authorization_code","implicit","refresh_token","client_credentials"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256","RS384","RS512","none"],"token_endpoint_auth_methods_supported":["client_secret_basic"],"token_endpoint_auth_signing_alg_values_supported":["RS256"],"display_values_supported":[],"claim_types_supported":["normal"],"claims_supported":[],"claims_parameter_supported":false,"request_parameter_supported":true,"request_uri_parameter_supported":false,"require_request_uri_registration":false,"check_session_iframe":"https://localhost:3457/session","end_session_endpoint":"https://localhost:3457/logout"},"jwks":{"keys":[{"kid":"lNZOB-DPE1k","kty":"RSA","alg":"RS256","n":"uvih8HfZj7Wu5Y8knLHxRY6v7oHL2jXWD-B6hXCreYhwaG9EEUt6Rp94p8-JBug3ywo8C_9dNg0RtQLEttcIC_vhqqlJI3pZxpGKXuD9h7XK-PppFVvgnfIGADG0Z-WzbcGDxlefStohR31Hjw5U3ioG3VtXGAYbqlOHM1l2UgDMJwBD5qwFmPP8gp5E2WQKCsuLvxDuOrkAbSDjw2zaI3RRmbLzdj4QkGej8GXhBptgM9RwcKmnoXu0sUdlootmcdiEg74yQ9M6EshNMhiv4k_W0rl7RqVOEL2PsAdmdbF_iWL8a90rGYOEILBrlU6bBR2mTvjV_Hvq-ifFy1YAmQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"Y38YKDtydoE","kty":"RSA","alg":"RS384","n":"tfgZKLjc8UMIblfAlVibJI_2uAxDNprn2VVLebS0sp6d1mtCXQkMYLlJ6e-7kavl8we391Ovnq5bRgpsFRq_LtRX9MpVlfioAUHwWPEG-R6vrQjgo4uynVhI3UEPHyNmZA5J4u34HNVTfAgmquomwwOmOv29ZNRxuYP1kVtscz1JeFPwg6LA7BxWrLc9ev4FQR6tjJKdo2kdLjAXR92odbCzJZ_jdYT3vIVCexMHxhoKnqCImkhfgKbGXcPHXWcelmuA2tzBaLut-Jjo0nJVQjRNDqy0Gyac0TptwFIxaiyHeTqugolUmEaJSfBSLszIRdlOTIGPJ7zdg5dJFK_Lxw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"WyMVv6BJ5Dk","kty":"RSA","alg":"RS512","n":"5JDlpbm2TjSW1wpdUZc5NHOqVVrNH_GumoODK_mk-MqImaIRpdR9b1ZJrK6FrW7HIF2bXvebD7olmp9a1goqe-ILbL_ORmhzlhRtyhjWQ-UOZqK5yOXqXXGQXgmok6TN-s55A-h_g12A7Yk5Y5S8EVa9EA4Axwqvm-Q_AkH0yS1qJo6BXYXb1fx205ucx-Ccot2LEBfxv8M7NOFTa-_G-sNchiKQMRoLhbZtLbSK2R1jkqGciEiRSLeXNG4nDu7Wd91-vhBixA1McxnzW96mW8lQwNXXo4gNH7SjONtYLlPQhZVEbmsQmXrOQN8a5RDkybFOIsbucItizSE9V_D7WQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"UykSj_HLgFA","kty":"RSA","alg":"RS256","n":"u79eQlGJN2XFNR-uEmPVtrB_ENRqaS81o6m63tZ5-PwhGHCwJ7rfVnnnvf6Ij_p91Z9pNpWBIVyZcw6UmQIoIBH-3BfxdaqhBxX9bf_N78TKj8_HU5IYjGijale4gog3kj9W2tJJO7R9iA43msjwLRD7pbAHp1iKFJgVTSXJlyLRbC82Dj4ivsEgJjPGvZt16OsGP5myIQwXEGzSPcEI0R9daZE5iM6xFZosaJ8B77eU-Aj3ciwxUBPi5BSZi2P1ZsF4QgSj3N7ZLbVKNW4FFr84IamA2YI0D7PyyNAE2PUZT8n0jHWRJKunuZuy5mgBY8H41KdBI6gNJqY90nHeJw","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"BJDNTt8RpPE","kty":"RSA","alg":"RS384","n":"nXTd5AoT220nBkW6Zeax8caUI7_Tt0y4v9TEW8TOrzCVvhLBiKpQPjILUTfkGHzxPtysEzDQFSYdHWvg_fvGYItjJBunBMsKCNcb2_CDr2HXD6C0s62bAgct8bBSoaT1MLQ_3MaFKXSF3ZuB87X2B8CVUJ386HP2GY1kl54BuMdFELNZYhy9S_D0KHnQls52Vvb99X9WaYOyxvfr03PG-9EycnkWas5tn1pPFzT0DtJtBJ4IBtXQxTr98jpn_MCz1gRnMgzzkfSOcrMkkMXxePqxNINVKFXtRy7DaJiFOcCMbuK2RJUkSfY2uKcx0aKbp5Xhvix1W8N7c0Y90i6_6w","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"z8iijSOOIs4","kty":"RSA","alg":"RS512","n":"rPCHP9XeTGOLf1Ezxeq_bdGdvYQZa993YcSVudT0EN6drTWqjykhUVEkT4MGAvLvax38kLARbPUTgMUV9UckDDWn6lRq4q6IZ5pytNOieQKZHzjEmQGzlbnEn1F2m1i5SAfBL-qsnt5q2RXMAiIUXk9q1ChJEHJxOZxnRIoQMc7yTsjjSdtIZKePFiYFn0nsl3A234ByyIBRjzZeoYEtTQKjDR7fP9LO78oZAgpwoGqmfI4IltqQYkFoqrN8I8l1yiJGyuvZRgDXUZ2fxGOQx2WD4xvlFL2TOCfN1UaPE9R4JdbRLLAOf5u1Sqnh4XTjDBhBbVodsmmbtvk4wFo-GQ","e":"AQAB","key_ops":["verify"],"ext":true},{"kid":"zD76wa11A2Y","kty":"RSA","alg":"RS256","n":"nMaSioq1An1J3tbkmc-zRrR8lkbP-WUVRuYhDxQvV-OcBw1R6cdyCcoeFJ1zuUT7ne6BlU6GMPRHuRKaH0KuOaiktUYtXm06T_HvtKFgCQSAKjMUj_ZHfTAJP8ahUsIc0D995XKp7nIGRF7Iy7I24QQFPRh7PmGlREZ52GJgYQgbm020-sWani0MqHoUFBlWxZW9NEqY1c3brN_qWnzjRKly6Kkk3sW1XHPcRLvoHnHQ6TKXJ8pfl-bNjTfK6zq9fDCZ_TY3qQZy66yT_2XPO6X0GHTdJsZlCj7Jg0qrilTHUkJra1bppTSAtVSQnSmYt_IV8zOYiVdJ3kw2khPcKw","e":"AQAB","key_ops":["verify"],"ext":true}]}},"defaults":{"authenticate":{"response_type":"id_token token","display":"page","scope":["openid"]}},"registration":{"client_id":"7f81f70c7c306e96fdb5181f4c1d7222","client_secret":"f764cc06dbeeb2d908e10fb3b418853f","redirect_uris":["https://localhost:3457/api/oidc/rp/https%3A%2F%2Flocalhost%3A3457"],"response_types":["code","id_token token","code id_token token"],"grant_types":["authorization_code","implicit","refresh_token","client_credentials"],"application_type":"web","client_name":"Solid OIDC RP for https://localhost:3457","id_token_signed_response_alg":"RS256","token_endpoint_auth_method":"client_secret_basic","default_max_age":86400,"post_logout_redirect_uris":["https://localhost:3457/goodbye"],"frontchannel_logout_session_required":false,"registration_access_token":"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvY2FsaG9zdDozNDU3Iiwic3ViIjoiN2Y4MWY3MGM3YzMwNmU5NmZkYjUxODFmNGMxZDcyMjIiLCJhdWQiOiI3ZjgxZjcwYzdjMzA2ZTk2ZmRiNTE4MWY0YzFkNzIyMiJ9.fT9uzCeGQXJHV-z1X9Fh2DHavvFpNNSBl7p_XiadxdGcX_TkDI_NAtuwX02bRugas6OToWuISHDEkR2PbVaEp7enhnO_bNuDko8AlmfdXmcNCc8a_VXBX_pDl6oiyQQRBqDDOff1fvvqvaJO1n3ssQMJnwJFHqQ75xLaodCPRiP5z3wfLliLJAYZaQVdOf1sBBpd8pxfSGnN7XkNyit71XlWlJR1Z_TaCYVF0EtZyT56rDT8_SFzvLlGpBU8JsmzoETozNKQnj4Zo9Uks_FtKIFNFUm2Oa3KMynTYHJJWxZ92c0oU4EUN6sjioHjVMOPSAkyeM6_Fv6LY-76kFvUpw","registration_client_uri":"https://localhost:3457/register/7f81f70c7c306e96fdb5181f4c1d7222","client_id_issued_at":1489775058,"client_secret_expires_at":0}} diff --git a/test/resources/config/defaults.js b/test/resources/config/defaults.js index 9e5d92c50..3b06fa58f 100644 --- a/test/resources/config/defaults.js +++ b/test/resources/config/defaults.js @@ -1,5 +1,5 @@ 'use strict' module.exports = { - 'originsAllowed': ['https://test.apps.solid.invalid'] + originsAllowed: ['https://test.apps.solid.invalid'] } diff --git a/test/resources/ldpatch-example-final.ttl b/test/resources/ldpatch-example-final.ttl index 158304e42..9c3f55140 100644 --- a/test/resources/ldpatch-example-final.ttl +++ b/test/resources/ldpatch-example-final.ttl @@ -1,11 +1,11 @@ @prefix schema: . -@prefix profile: . +@prefix pro: . @prefix ex: . a schema:Person ; schema:alternateName "TimBL" ; - profile:first_name "Timothy" ; - profile:last_name "Berners-Lee" ; + pro:first_name "Timothy" ; + pro:last_name "Berners-Lee" ; schema:workLocation [ schema:name "W3C/MIT" ] ; schema:performerIn _:b1, _:b2 ; ex:preferredLanguages ( "en" "fr-CH" ). diff --git a/test/unit/account-manager-test.js b/test/unit/account-manager-test.js index 3d0ac3188..a504764ac 100644 --- a/test/unit/account-manager-test.js +++ b/test/unit/account-manager-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const path = require('path') const chai = require('chai') @@ -30,7 +31,7 @@ beforeEach(() => { describe('AccountManager', () => { describe('from()', () => { it('should init with passed in options', () => { - let config = { + const config = { host, authMethod: 'oidc', multiuser: true, @@ -39,7 +40,7 @@ describe('AccountManager', () => { tokenService: {} } - let mgr = AccountManager.from(config) + const mgr = AccountManager.from(config) expect(mgr.host).to.equal(config.host) expect(mgr.authMethod).to.equal(config.authMethod) expect(mgr.multiuser).to.equal(config.multiuser) @@ -56,86 +57,86 @@ describe('AccountManager', () => { describe('accountUriFor', () => { it('should compose account uri for an account in multi user mode', () => { - let options = { + const options = { multiuser: true, host: SolidHost.from({ serverUri: 'https://localhost' }) } - let mgr = AccountManager.from(options) + const mgr = AccountManager.from(options) - let webId = mgr.accountUriFor('alice') + const webId = mgr.accountUriFor('alice') expect(webId).to.equal('https://alice.localhost') }) it('should compose account uri for an account in single user mode', () => { - let options = { + const options = { multiuser: false, host: SolidHost.from({ serverUri: 'https://localhost' }) } - let mgr = AccountManager.from(options) + const mgr = AccountManager.from(options) - let webId = mgr.accountUriFor('alice') + const webId = mgr.accountUriFor('alice') expect(webId).to.equal('https://localhost') }) }) describe('accountWebIdFor()', () => { it('should compose a web id uri for an account in multi user mode', () => { - let options = { + const options = { multiuser: true, host: SolidHost.from({ serverUri: 'https://localhost' }) } - let mgr = AccountManager.from(options) - let webId = mgr.accountWebIdFor('alice') + const mgr = AccountManager.from(options) + const webId = mgr.accountWebIdFor('alice') expect(webId).to.equal('https://alice.localhost/profile/card#me') }) it('should compose a web id uri for an account in single user mode', () => { - let options = { + const options = { multiuser: false, host: SolidHost.from({ serverUri: 'https://localhost' }) } - let mgr = AccountManager.from(options) - let webId = mgr.accountWebIdFor('alice') + const mgr = AccountManager.from(options) + const webId = mgr.accountWebIdFor('alice') expect(webId).to.equal('https://localhost/profile/card#me') }) }) describe('accountDirFor()', () => { it('should match the solid root dir config, in single user mode', () => { - let multiuser = false - let resourceMapper = new ResourceMapper({ + const multiuser = false + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: testAccountsDir }) - let store = new LDP({ multiuser, resourceMapper }) - let options = { multiuser, store, host } - let accountManager = AccountManager.from(options) + const store = new LDP({ multiuser, resourceMapper }) + const options = { multiuser, store, host } + const accountManager = AccountManager.from(options) - let accountDir = accountManager.accountDirFor('alice') + const accountDir = accountManager.accountDirFor('alice') expect(accountDir).to.equal(store.resourceMapper._rootPath) }) it('should compose the account dir in multi user mode', () => { - let multiuser = true - let resourceMapper = new ResourceMapper({ + const multiuser = true + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: testAccountsDir }) - let store = new LDP({ multiuser, resourceMapper }) - let host = SolidHost.from({ serverUri: 'https://localhost' }) - let options = { multiuser, store, host } - let accountManager = AccountManager.from(options) + const store = new LDP({ multiuser, resourceMapper }) + const host = SolidHost.from({ serverUri: 'https://localhost' }) + const options = { multiuser, store, host } + const accountManager = AccountManager.from(options) - let accountDir = accountManager.accountDirFor('alice') + const accountDir = accountManager.accountDirFor('alice') expect(accountDir).to.equal(testAccountsDir + '/alice.localhost') }) }) describe('userAccountFrom()', () => { describe('in multi user mode', () => { - let multiuser = true + const multiuser = true let options, accountManager beforeEach(() => { @@ -150,18 +151,18 @@ describe('AccountManager', () => { }) it('should init webId from param if no username is passed', () => { - let userData = { webId: 'https://example.com' } - let newAccount = accountManager.userAccountFrom(userData) + const userData = { webId: 'https://example.com' } + const newAccount = accountManager.userAccountFrom(userData) expect(newAccount.webId).to.equal(userData.webId) }) it('should derive the local account id from username, for external webid', () => { - let userData = { + const userData = { externalWebId: 'https://alice.external.com/profile#me', username: 'user1' } - let newAccount = accountManager.userAccountFrom(userData) + const newAccount = accountManager.userAccountFrom(userData) expect(newAccount.username).to.equal('user1') expect(newAccount.webId).to.equal('https://alice.external.com/profile#me') @@ -170,11 +171,11 @@ describe('AccountManager', () => { }) it('should use the external web id as username if no username given', () => { - let userData = { + const userData = { externalWebId: 'https://alice.external.com/profile#me' } - let newAccount = accountManager.userAccountFrom(userData) + const newAccount = accountManager.userAccountFrom(userData) expect(newAccount.username).to.equal('https://alice.external.com/profile#me') expect(newAccount.webId).to.equal('https://alice.external.com/profile#me') @@ -183,7 +184,7 @@ describe('AccountManager', () => { }) describe('in single user mode', () => { - let multiuser = false + const multiuser = false let options, accountManager beforeEach(() => { @@ -203,7 +204,7 @@ describe('AccountManager', () => { let accountManager, certificate, userAccount, profileGraph beforeEach(() => { - let options = { host } + const options = { host } accountManager = AccountManager.from(options) userAccount = accountManager.userAccountFrom({ username: 'alice' }) certificate = WebIdTlsCertificate.fromSpkacPost('1234', userAccount, host) @@ -256,10 +257,10 @@ describe('AccountManager', () => { describe('getProfileGraphFor()', () => { it('should throw an error if webId is missing', (done) => { - let emptyUserData = {} - let userAccount = UserAccount.from(emptyUserData) - let options = { host, multiuser: true } - let accountManager = AccountManager.from(options) + const emptyUserData = {} + const userAccount = UserAccount.from(emptyUserData) + const options = { host, multiuser: true } + const accountManager = AccountManager.from(options) accountManager.getProfileGraphFor(userAccount) .catch(error => { @@ -270,16 +271,16 @@ describe('AccountManager', () => { }) it('should fetch the profile graph via LDP store', () => { - let store = { + const store = { getGraph: sinon.stub().returns(Promise.resolve()) } - let webId = 'https://alice.example.com/#me' - let profileHostUri = 'https://alice.example.com/' + const webId = 'https://alice.example.com/#me' + const profileHostUri = 'https://alice.example.com/' - let userData = { webId } - let userAccount = UserAccount.from(userData) - let options = { host, multiuser: true, store } - let accountManager = AccountManager.from(options) + const userData = { webId } + const userAccount = UserAccount.from(userData) + const options = { host, multiuser: true, store } + const accountManager = AccountManager.from(options) expect(userAccount.webId).to.equal(webId) @@ -292,17 +293,17 @@ describe('AccountManager', () => { describe('saveProfileGraph()', () => { it('should save the profile graph via the LDP store', () => { - let store = { + const store = { putGraph: sinon.stub().returns(Promise.resolve()) } - let webId = 'https://alice.example.com/#me' - let profileHostUri = 'https://alice.example.com/' + const webId = 'https://alice.example.com/#me' + const profileHostUri = 'https://alice.example.com/' - let userData = { webId } - let userAccount = UserAccount.from(userData) - let options = { host, multiuser: true, store } - let accountManager = AccountManager.from(options) - let profileGraph = rdf.graph() + const userData = { webId } + const userAccount = UserAccount.from(userData) + const options = { host, multiuser: true, store } + const accountManager = AccountManager.from(options) + const profileGraph = rdf.graph() return accountManager.saveProfileGraph(profileGraph, userAccount) .then(() => { @@ -313,35 +314,35 @@ describe('AccountManager', () => { describe('rootAclFor()', () => { it('should return the server root .acl in single user mode', () => { - let resourceMapper = new ResourceMapper({ + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', rootPath: process.cwd(), includeHost: false }) - let store = new LDP({ suffixAcl: '.acl', multiuser: false, resourceMapper }) - let options = { host, multiuser: false, store } - let accountManager = AccountManager.from(options) + const store = new LDP({ suffixAcl: '.acl', multiuser: false, resourceMapper }) + const options = { host, multiuser: false, store } + const accountManager = AccountManager.from(options) - let userAccount = UserAccount.from({ username: 'alice' }) + const userAccount = UserAccount.from({ username: 'alice' }) - let rootAclUri = accountManager.rootAclFor(userAccount) + const rootAclUri = accountManager.rootAclFor(userAccount) expect(rootAclUri).to.equal('https://example.com/.acl') }) it('should return the profile root .acl in multi user mode', () => { - let resourceMapper = new ResourceMapper({ + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', rootPath: process.cwd(), includeHost: true }) - let store = new LDP({ suffixAcl: '.acl', multiuser: true, resourceMapper }) - let options = { host, multiuser: true, store } - let accountManager = AccountManager.from(options) + const store = new LDP({ suffixAcl: '.acl', multiuser: true, resourceMapper }) + const options = { host, multiuser: true, store } + const accountManager = AccountManager.from(options) - let userAccount = UserAccount.from({ username: 'alice' }) + const userAccount = UserAccount.from({ username: 'alice' }) - let rootAclUri = accountManager.rootAclFor(userAccount) + const rootAclUri = accountManager.rootAclFor(userAccount) expect(rootAclUri).to.equal('https://alice.example.com/.acl') }) @@ -349,22 +350,22 @@ describe('AccountManager', () => { describe('loadAccountRecoveryEmail()', () => { it('parses and returns the agent mailto from the root acl', () => { - let userAccount = UserAccount.from({ username: 'alice' }) + const userAccount = UserAccount.from({ username: 'alice' }) - let rootAclGraph = rdf.graph() + const rootAclGraph = rdf.graph() rootAclGraph.add( rdf.namedNode('https://alice.example.com/.acl#owner'), ns.acl('agent'), rdf.namedNode('mailto:alice@example.com') ) - let store = { + const store = { suffixAcl: '.acl', getGraph: sinon.stub().resolves(rootAclGraph) } - let options = { host, multiuser: true, store } - let accountManager = AccountManager.from(options) + const options = { host, multiuser: true, store } + const accountManager = AccountManager.from(options) return accountManager.loadAccountRecoveryEmail(userAccount) .then(recoveryEmail => { @@ -373,17 +374,17 @@ describe('AccountManager', () => { }) it('should return undefined when agent mailto is missing', () => { - let userAccount = UserAccount.from({ username: 'alice' }) + const userAccount = UserAccount.from({ username: 'alice' }) - let emptyGraph = rdf.graph() + const emptyGraph = rdf.graph() - let store = { + const store = { suffixAcl: '.acl', getGraph: sinon.stub().resolves(emptyGraph) } - let options = { host, multiuser: true, store } - let accountManager = AccountManager.from(options) + const options = { host, multiuser: true, store } + const accountManager = AccountManager.from(options) return accountManager.loadAccountRecoveryEmail(userAccount) .then(recoveryEmail => { @@ -394,17 +395,17 @@ describe('AccountManager', () => { describe('passwordResetUrl()', () => { it('should return a token reset validation url', () => { - let tokenService = new TokenService() - let options = { host, multiuser: true, tokenService } + const tokenService = new TokenService() + const options = { host, multiuser: true, tokenService } - let accountManager = AccountManager.from(options) + const accountManager = AccountManager.from(options) - let returnToUrl = 'https://example.com/resource' - let token = '123' + const returnToUrl = 'https://example.com/resource' + const token = '123' - let resetUrl = accountManager.passwordResetUrl(token, returnToUrl) + const resetUrl = accountManager.passwordResetUrl(token, returnToUrl) - let expectedUri = 'https://example.com/account/password/change?' + + const expectedUri = 'https://example.com/account/password/change?' + 'token=123&returnToUrl=' + returnToUrl expect(resetUrl).to.equal(expectedUri) @@ -413,19 +414,19 @@ describe('AccountManager', () => { describe('generateDeleteToken()', () => { it('should generate and store an expiring delete token', () => { - let tokenService = new TokenService() - let options = { host, tokenService } + const tokenService = new TokenService() + const options = { host, tokenService } - let accountManager = AccountManager.from(options) + const accountManager = AccountManager.from(options) - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId } - let token = accountManager.generateDeleteToken(userAccount) + const token = accountManager.generateDeleteToken(userAccount) - let tokenValue = accountManager.tokenService.verify('delete-account', token) + const tokenValue = accountManager.tokenService.verify('delete-account', token) expect(tokenValue.webId).to.equal(aliceWebId) expect(tokenValue).to.have.property('exp') @@ -434,19 +435,19 @@ describe('AccountManager', () => { describe('generateResetToken()', () => { it('should generate and store an expiring reset token', () => { - let tokenService = new TokenService() - let options = { host, tokenService } + const tokenService = new TokenService() + const options = { host, tokenService } - let accountManager = AccountManager.from(options) + const accountManager = AccountManager.from(options) - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId } - let token = accountManager.generateResetToken(userAccount) + const token = accountManager.generateResetToken(userAccount) - let tokenValue = accountManager.tokenService.verify('reset-password', token) + const tokenValue = accountManager.tokenService.verify('reset-password', token) expect(tokenValue.webId).to.equal(aliceWebId) expect(tokenValue).to.have.property('exp') @@ -455,28 +456,28 @@ describe('AccountManager', () => { describe('sendPasswordResetEmail()', () => { it('should compose and send a password reset email', () => { - let resetToken = '1234' - let tokenService = { + const resetToken = '1234' + const tokenService = { generate: sinon.stub().returns(resetToken) } - let emailService = { + const emailService = { sendWithTemplate: sinon.stub().resolves() } - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId, email: 'alice@example.com' } - let returnToUrl = 'https://example.com/resource' + const returnToUrl = 'https://example.com/resource' - let options = { host, tokenService, emailService } - let accountManager = AccountManager.from(options) + const options = { host, tokenService, emailService } + const accountManager = AccountManager.from(options) accountManager.passwordResetUrl = sinon.stub().returns('reset url') - let expectedEmailData = { + const expectedEmailData = { to: 'alice@example.com', webId: aliceWebId, resetUrl: 'reset url' @@ -492,14 +493,14 @@ describe('AccountManager', () => { }) it('should reject if no email service is set up', done => { - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId, email: 'alice@example.com' } - let returnToUrl = 'https://example.com/resource' - let options = { host } - let accountManager = AccountManager.from(options) + const returnToUrl = 'https://example.com/resource' + const options = { host } + const accountManager = AccountManager.from(options) accountManager.sendPasswordResetEmail(userAccount, returnToUrl) .catch(error => { @@ -509,15 +510,15 @@ describe('AccountManager', () => { }) it('should reject if no user email is provided', done => { - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId } - let returnToUrl = 'https://example.com/resource' - let emailService = {} - let options = { host, emailService } + const returnToUrl = 'https://example.com/resource' + const emailService = {} + const options = { host, emailService } - let accountManager = AccountManager.from(options) + const accountManager = AccountManager.from(options) accountManager.sendPasswordResetEmail(userAccount, returnToUrl) .catch(error => { @@ -529,27 +530,27 @@ describe('AccountManager', () => { describe('sendDeleteAccountEmail()', () => { it('should compose and send a delete account email', () => { - let deleteToken = '1234' - let tokenService = { + const deleteToken = '1234' + const tokenService = { generate: sinon.stub().returns(deleteToken) } - let emailService = { + const emailService = { sendWithTemplate: sinon.stub().resolves() } - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId, email: 'alice@example.com' } - let options = { host, tokenService, emailService } - let accountManager = AccountManager.from(options) + const options = { host, tokenService, emailService } + const accountManager = AccountManager.from(options) accountManager.getAccountDeleteUrl = sinon.stub().returns('delete account url') - let expectedEmailData = { + const expectedEmailData = { to: 'alice@example.com', webId: aliceWebId, deleteUrl: 'delete account url' @@ -565,13 +566,13 @@ describe('AccountManager', () => { }) it('should reject if no email service is set up', done => { - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId, email: 'alice@example.com' } - let options = { host } - let accountManager = AccountManager.from(options) + const options = { host } + const accountManager = AccountManager.from(options) accountManager.sendDeleteAccountEmail(userAccount) .catch(error => { @@ -581,14 +582,14 @@ describe('AccountManager', () => { }) it('should reject if no user email is provided', done => { - let aliceWebId = 'https://alice.example.com/#me' - let userAccount = { + const aliceWebId = 'https://alice.example.com/#me' + const userAccount = { webId: aliceWebId } - let emailService = {} - let options = { host, emailService } + const emailService = {} + const options = { host, emailService } - let accountManager = AccountManager.from(options) + const accountManager = AccountManager.from(options) accountManager.sendDeleteAccountEmail(userAccount) .catch(error => { diff --git a/test/unit/account-template-test.js b/test/unit/account-template-test.js index eb1d653b0..67bdf18e7 100644 --- a/test/unit/account-template-test.js +++ b/test/unit/account-template-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const chai = require('chai') const expect = chai.expect @@ -11,7 +12,7 @@ const UserAccount = require('../../lib/models/user-account') describe('AccountTemplate', () => { describe('isTemplate()', () => { - let template = new AccountTemplate() + const template = new AccountTemplate() it('should recognize rdf files as templates', () => { expect(template.isTemplate('./file.ttl')).to.be.true @@ -42,15 +43,15 @@ describe('AccountTemplate', () => { describe('templateSubstitutionsFor()', () => { it('should init', () => { - let userOptions = { + const userOptions = { username: 'alice', webId: 'https://alice.example.com/profile/card#me', name: 'Alice Q.', email: 'alice@example.com' } - let userAccount = UserAccount.from(userOptions) + const userAccount = UserAccount.from(userOptions) - let substitutions = AccountTemplate.templateSubstitutionsFor(userAccount) + const substitutions = AccountTemplate.templateSubstitutionsFor(userAccount) expect(substitutions.name).to.equal('Alice Q.') expect(substitutions.email).to.equal('alice@example.com') expect(substitutions.webId).to.equal('https://alice.example.com/profile/card#me') diff --git a/test/unit/add-cert-request-test.js b/test/unit/add-cert-request-test.js index f6e7f2ce4..a0f3c91ba 100644 --- a/test/unit/add-cert-request-test.js +++ b/test/unit/add-cert-request-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const fs = require('fs-extra') const path = require('path') @@ -30,15 +31,15 @@ beforeEach(() => { describe('AddCertificateRequest', () => { describe('fromParams()', () => { it('should throw a 401 error if session.userId is missing', () => { - let multiuser = true - let options = { host, multiuser, authMethod: 'oidc' } - let accountManager = AccountManager.from(options) + const multiuser = true + const options = { host, multiuser, authMethod: 'oidc' } + const accountManager = AccountManager.from(options) - let req = { + const req = { body: { spkac: '123', webid: 'https://alice.example.com/#me' }, session: {} } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() try { AddCertificateRequest.fromParams(req, res, accountManager) @@ -49,26 +50,26 @@ describe('AddCertificateRequest', () => { }) describe('createRequest()', () => { - let multiuser = true + const multiuser = true it('should call certificate.generateCertificate()', () => { - let options = { host, multiuser, authMethod: 'oidc' } - let accountManager = AccountManager.from(options) + const options = { host, multiuser, authMethod: 'oidc' } + const accountManager = AccountManager.from(options) - let req = { + const req = { body: { spkac: '123', webid: 'https://alice.example.com/#me' }, session: { userId: 'https://alice.example.com/#me' } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let request = AddCertificateRequest.fromParams(req, res, accountManager) - let certificate = request.certificate + const request = AddCertificateRequest.fromParams(req, res, accountManager) + const certificate = request.certificate accountManager.addCertKeyToProfile = sinon.stub() request.sendResponse = sinon.stub() - let certSpy = sinon.stub(certificate, 'generateCertificate').returns(Promise.resolve()) + const certSpy = sinon.stub(certificate, 'generateCertificate').returns(Promise.resolve()) return AddCertificateRequest.addCertificate(request) .then(() => { @@ -78,29 +79,29 @@ describe('AddCertificateRequest', () => { }) describe('accountManager.addCertKeyToGraph()', () => { - let multiuser = true + const multiuser = true it('should add certificate data to a graph', () => { - let options = { host, multiuser, authMethod: 'oidc' } - let accountManager = AccountManager.from(options) + const options = { host, multiuser, authMethod: 'oidc' } + const accountManager = AccountManager.from(options) - let userData = { username: 'alice' } - let userAccount = accountManager.userAccountFrom(userData) + const userData = { username: 'alice' } + const userAccount = accountManager.userAccountFrom(userData) - let certificate = WebIdTlsCertificate.fromSpkacPost( + const certificate = WebIdTlsCertificate.fromSpkacPost( decodeURIComponent(exampleSpkac), userAccount, host) - let graph = rdf.graph() + const graph = rdf.graph() return certificate.generateCertificate() .then(() => { return accountManager.addCertKeyToGraph(certificate, graph) }) .then(graph => { - let webId = rdf.namedNode(certificate.webId) - let key = rdf.namedNode(certificate.keyUri) + const webId = rdf.namedNode(certificate.webId) + const key = rdf.namedNode(certificate.keyUri) expect(graph.anyStatementMatching(webId, ns.cert('key'), key)) .to.exist @@ -114,4 +115,3 @@ describe('AddCertificateRequest', () => { }) }) }) - diff --git a/test/unit/auth-handlers-test.js b/test/unit/auth-handlers-test.js index 84c640983..167197761 100644 --- a/test/unit/auth-handlers-test.js +++ b/test/unit/auth-handlers-test.js @@ -23,7 +23,7 @@ describe('OIDC Handler', () => { }) it('should set the WWW-Authenticate header with error params', () => { - let error = { + const error = { error: 'invalid_token', error_description: 'Invalid token', error_uri: 'https://example.com/errors/token' @@ -38,7 +38,7 @@ describe('OIDC Handler', () => { }) it('should set WWW-Authenticate with no error_description if none given', () => { - let error = {} + const error = {} Auth.oidc.setAuthenticateHeader(req, res, error) diff --git a/test/unit/auth-request-test.js b/test/unit/auth-request-test.js index d4ae46da5..15f2faf84 100644 --- a/test/unit/auth-request-test.js +++ b/test/unit/auth-request-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions, node/no-deprecated-api */ const chai = require('chai') const expect = chai.expect @@ -16,14 +17,14 @@ const UserAccount = require('../../lib/models/user-account') describe('AuthRequest', () => { function testAuthQueryParams () { - let body = {} - body['response_type'] = 'code' - body['scope'] = 'openid' - body['client_id'] = 'client1' - body['redirect_uri'] = 'https://redirect.example.com/' - body['state'] = '1234' - body['nonce'] = '5678' - body['display'] = 'page' + const body = {} + body.response_type = 'code' + body.scope = 'openid' + body.client_id = 'client1' + body.redirect_uri = 'https://redirect.example.com/' + body.state = '1234' + body.nonce = '5678' + body.display = 'page' return body } @@ -33,22 +34,22 @@ describe('AuthRequest', () => { describe('extractAuthParams()', () => { it('should initialize the auth url query object from params', () => { - let body = testAuthQueryParams() - body['other_key'] = 'whatever' - let req = { body, method: 'POST' } + const body = testAuthQueryParams() + body.other_key = 'whatever' + const req = { body, method: 'POST' } - let extracted = AuthRequest.extractAuthParams(req) + const extracted = AuthRequest.extractAuthParams(req) - for (let param of AuthRequest.AUTH_QUERY_PARAMS) { + for (const param of AuthRequest.AUTH_QUERY_PARAMS) { expect(extracted[param]).to.equal(body[param]) } // make sure *only* the listed params were copied - expect(extracted['other_key']).to.not.exist() + expect(extracted.other_key).to.not.exist() }) it('should return empty params with no request body present', () => { - let req = { method: 'POST' } + const req = { method: 'POST' } expect(AuthRequest.extractAuthParams(req)).to.eql({}) }) @@ -56,26 +57,26 @@ describe('AuthRequest', () => { describe('authorizeUrl()', () => { it('should return an /authorize url', () => { - let request = new AuthRequest({ accountManager }) + const request = new AuthRequest({ accountManager }) - let authUrl = request.authorizeUrl() + const authUrl = request.authorizeUrl() expect(authUrl.startsWith('https://localhost:8443/authorize')).to.be.true() }) it('should pass through relevant auth query params from request body', () => { - let body = testAuthQueryParams() - let req = { body, method: 'POST' } + const body = testAuthQueryParams() + const req = { body, method: 'POST' } - let request = new AuthRequest({ accountManager }) + const request = new AuthRequest({ accountManager }) request.authQueryParams = AuthRequest.extractAuthParams(req) - let authUrl = request.authorizeUrl() + const authUrl = request.authorizeUrl() - let parseQueryString = true - let parsedUrl = url.parse(authUrl, parseQueryString) + const parseQueryString = true + const parsedUrl = url.parse(authUrl, parseQueryString) - for (let param in body) { + for (const param in body) { expect(body[param]).to.equal(parsedUrl.query[param]) } }) @@ -83,18 +84,17 @@ describe('AuthRequest', () => { describe('initUserSession()', () => { it('should initialize the request session', () => { - let webId = 'https://alice.example.com/#me' - let alice = UserAccount.from({ username: 'alice', webId }) - let session = {} + const webId = 'https://alice.example.com/#me' + const alice = UserAccount.from({ username: 'alice', webId }) + const session = {} - let request = new AuthRequest({ session }) + const request = new AuthRequest({ session }) request.initUserSession(alice) expect(request.session.userId).to.equal(webId) - let subject = request.session.subject - expect(subject['_id']).to.equal(webId) + const subject = request.session.subject + expect(subject._id).to.equal(webId) }) }) }) - diff --git a/test/unit/authenticator-test.js b/test/unit/authenticator-test.js index 83197675c..0efebe764 100644 --- a/test/unit/authenticator-test.js +++ b/test/unit/authenticator-test.js @@ -9,8 +9,8 @@ const { Authenticator } = require('../../lib/models/authenticator') describe('Authenticator', () => { describe('constructor()', () => { it('should initialize the accountManager property', () => { - let accountManager = {} - let auth = new Authenticator({ accountManager }) + const accountManager = {} + const auth = new Authenticator({ accountManager }) expect(auth.accountManager).to.equal(accountManager) }) @@ -25,7 +25,7 @@ describe('Authenticator', () => { describe('findValidUser()', () => { it('should throw an abstract method error', () => { - let auth = new Authenticator({}) + const auth = new Authenticator({}) expect(() => auth.findValidUser()) .to.throw(/Must override method/) diff --git a/test/unit/create-account-request-test.js b/test/unit/create-account-request-test.js index 892219b37..656f4c687 100644 --- a/test/unit/create-account-request-test.js +++ b/test/unit/create-account-request-test.js @@ -31,11 +31,11 @@ describe('CreateAccountRequest', () => { describe('constructor()', () => { it('should create an instance with the given config', () => { - let aliceData = { username: 'alice' } - let userAccount = accountManager.userAccountFrom(aliceData) + const aliceData = { username: 'alice' } + const userAccount = accountManager.userAccountFrom(aliceData) - let options = { accountManager, userAccount, session, response: res } - let request = new CreateAccountRequest(options) + const options = { accountManager, userAccount, session, response: res } + const request = new CreateAccountRequest(options) expect(request.accountManager).to.equal(accountManager) expect(request.userAccount).to.equal(userAccount) @@ -69,14 +69,14 @@ describe('CreateAccountRequest', () => { describe('createAccount()', () => { it('should return a 400 error if account already exists', done => { - let accountManager = AccountManager.from({ host }) - let locals = { authMethod: defaults.auth, accountManager, oidc: { users: {} } } - let aliceData = { + const accountManager = AccountManager.from({ host }) + const locals = { authMethod: defaults.auth, accountManager, oidc: { users: {} } } + const aliceData = { username: 'alice', password: '1234' } - let req = HttpMocks.createRequest({ app: { locals }, body: aliceData }) + const req = HttpMocks.createRequest({ app: { locals }, body: aliceData }) - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) accountManager.accountExists = sinon.stub().returns(Promise.resolve(true)) @@ -88,8 +88,8 @@ describe('CreateAccountRequest', () => { }) it('should return a 400 error if a username is invalid', () => { - let accountManager = AccountManager.from({ host }) - let locals = { authMethod: defaults.auth, accountManager, oidc: { users: {} } } + const accountManager = AccountManager.from({ host }) + const locals = { authMethod: defaults.auth, accountManager, oidc: { users: {} } } accountManager.accountExists = sinon.stub().returns(Promise.resolve(false)) @@ -106,12 +106,12 @@ describe('CreateAccountRequest', () => { let invalidUsernamesCount = 0 const requests = invalidUsernames.map((username) => { - let aliceData = { + const aliceData = { username: username, password: '1234' } - let req = HttpMocks.createRequest({ app: { locals }, body: aliceData }) - let request = CreateAccountRequest.fromParams(req, res) + const req = HttpMocks.createRequest({ app: { locals }, body: aliceData }) + const request = CreateAccountRequest.fromParams(req, res) return request.createAccount() .then(() => { @@ -147,11 +147,11 @@ describe('CreateAccountRequest', () => { let invalidUsernamesCount = 0 const requests = invalidUsernames.map((username) => { - let req = HttpMocks.createRequest({ + const req = HttpMocks.createRequest({ app: { locals }, body: { username, password: '1234' } }) - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) return request.createAccount() .then(() => { @@ -172,7 +172,7 @@ describe('CreateAccountRequest', () => { }) describe('CreateOidcAccountRequest', () => { - let authMethod = 'oidc' + const authMethod = 'oidc' let host, store let session, res @@ -185,11 +185,11 @@ describe('CreateOidcAccountRequest', () => { describe('fromParams()', () => { it('should create an instance with the given config', () => { - let accountManager = AccountManager.from({ host, store }) - let aliceData = { username: 'alice', password: '123' } + const accountManager = AccountManager.from({ host, store }) + const aliceData = { username: 'alice', password: '123' } - let userStore = {} - let req = HttpMocks.createRequest({ + const userStore = {} + const req = HttpMocks.createRequest({ app: { locals: { authMethod, oidc: { users: userStore }, accountManager } }, @@ -197,7 +197,7 @@ describe('CreateOidcAccountRequest', () => { session }) - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) expect(request.accountManager).to.equal(accountManager) expect(request.userAccount.username).to.equal('alice') @@ -210,21 +210,21 @@ describe('CreateOidcAccountRequest', () => { describe('saveCredentialsFor()', () => { it('should create a new user in the user store', () => { - let accountManager = AccountManager.from({ host, store }) - let password = '12345' - let aliceData = { username: 'alice', password } - let userStore = { + const accountManager = AccountManager.from({ host, store }) + const password = '12345' + const aliceData = { username: 'alice', password } + const userStore = { createUser: (userAccount, password) => { return Promise.resolve() } } - let createUserSpy = sinon.spy(userStore, 'createUser') - let req = HttpMocks.createRequest({ + const createUserSpy = sinon.spy(userStore, 'createUser') + const req = HttpMocks.createRequest({ app: { locals: { authMethod, oidc: { users: userStore }, accountManager } }, body: aliceData, session }) - let request = CreateAccountRequest.fromParams(req, res) - let userAccount = request.userAccount + const request = CreateAccountRequest.fromParams(req, res) + const userAccount = request.userAccount return request.saveCredentialsFor(userAccount) .then(() => { @@ -235,18 +235,18 @@ describe('CreateOidcAccountRequest', () => { describe('sendResponse()', () => { it('should respond with a 302 Redirect', () => { - let accountManager = AccountManager.from({ host, store }) - let aliceData = { username: 'alice', password: '12345' } - let req = HttpMocks.createRequest({ + const accountManager = AccountManager.from({ host, store }) + const aliceData = { username: 'alice', password: '12345' } + const req = HttpMocks.createRequest({ app: { locals: { authMethod, oidc: {}, accountManager } }, body: aliceData, session }) - let alice = accountManager.userAccountFrom(aliceData) + const alice = accountManager.userAccountFrom(aliceData) - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) - let result = request.sendResponse(alice) + const result = request.sendResponse(alice) expect(request.response.statusCode).to.equal(302) expect(result.username).to.equal('alice') }) @@ -254,7 +254,7 @@ describe('CreateOidcAccountRequest', () => { }) describe('CreateTlsAccountRequest', () => { - let authMethod = 'tls' + const authMethod = 'tls' let host, store let session, res @@ -267,13 +267,13 @@ describe('CreateTlsAccountRequest', () => { describe('fromParams()', () => { it('should create an instance with the given config', () => { - let accountManager = AccountManager.from({ host, store }) - let aliceData = { username: 'alice' } - let req = HttpMocks.createRequest({ + const accountManager = AccountManager.from({ host, store }) + const aliceData = { username: 'alice' } + const req = HttpMocks.createRequest({ app: { locals: { authMethod, accountManager } }, body: aliceData, session }) - let request = CreateAccountRequest.fromParams(req, res) + const request = CreateAccountRequest.fromParams(req, res) expect(request.accountManager).to.equal(accountManager) expect(request.userAccount.username).to.equal('alice') @@ -285,16 +285,16 @@ describe('CreateTlsAccountRequest', () => { describe('saveCredentialsFor()', () => { it('should call generateTlsCertificate()', () => { - let accountManager = AccountManager.from({ host, store }) - let aliceData = { username: 'alice' } - let req = HttpMocks.createRequest({ + const accountManager = AccountManager.from({ host, store }) + const aliceData = { username: 'alice' } + const req = HttpMocks.createRequest({ app: { locals: { authMethod, accountManager } }, body: aliceData, session }) - let request = CreateAccountRequest.fromParams(req, res) - let userAccount = accountManager.userAccountFrom(aliceData) + const request = CreateAccountRequest.fromParams(req, res) + const userAccount = accountManager.userAccountFrom(aliceData) - let generateTlsCertificate = sinon.spy(request, 'generateTlsCertificate') + const generateTlsCertificate = sinon.spy(request, 'generateTlsCertificate') return request.saveCredentialsFor(userAccount) .then(() => { diff --git a/test/unit/email-service-test.js b/test/unit/email-service-test.js index 27f08da26..8064222c3 100644 --- a/test/unit/email-service-test.js +++ b/test/unit/email-service-test.js @@ -1,3 +1,5 @@ +/* eslint-disable no-unused-expressions */ + const EmailService = require('../../lib/services/email-service') const path = require('path') const sinon = require('sinon') @@ -12,8 +14,8 @@ const templatePath = path.join(__dirname, '../../default-templates/emails') describe('Email Service', function () { describe('EmailService constructor', () => { it('should set up a nodemailer instance', () => { - let templatePath = '../../config/email-templates' - let config = { + const templatePath = '../../config/email-templates' + const config = { host: 'smtp.gmail.com', auth: { user: 'alice@gmail.com', @@ -21,7 +23,7 @@ describe('Email Service', function () { } } - let emailService = new EmailService(templatePath, config) + const emailService = new EmailService(templatePath, config) expect(emailService.mailer.options.host).to.equal('smtp.gmail.com') expect(emailService.mailer).to.respondTo('sendMail') @@ -29,17 +31,17 @@ describe('Email Service', function () { }) it('should init a sender address if explicitly passed in', () => { - let sender = 'Solid Server ' - let config = { host: 'smtp.gmail.com', auth: {}, sender } + const sender = 'Solid Server ' + const config = { host: 'smtp.gmail.com', auth: {}, sender } - let emailService = new EmailService(templatePath, config) + const emailService = new EmailService(templatePath, config) expect(emailService.sender).to.equal(sender) }) it('should construct a default sender if not passed in', () => { - let config = { host: 'databox.me', auth: {} } + const config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const emailService = new EmailService(templatePath, config) expect(emailService.sender).to.equal('no-reply@databox.me') }) @@ -47,13 +49,13 @@ describe('Email Service', function () { describe('sendMail()', () => { it('passes through the sendMail call to the initialized mailer', () => { - let sendMail = sinon.stub().returns(Promise.resolve()) - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const sendMail = sinon.stub().returns(Promise.resolve()) + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) emailService.mailer.sendMail = sendMail - let email = { subject: 'Test' } + const email = { subject: 'Test' } return emailService.sendMail(email) .then(() => { @@ -62,9 +64,9 @@ describe('Email Service', function () { }) it('uses the provided from:, if present', () => { - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) - let email = { subject: 'Test', from: 'alice@example.com' } + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) + const email = { subject: 'Test', from: 'alice@example.com' } emailService.mailer.sendMail = (email) => { return Promise.resolve(email) } @@ -75,9 +77,9 @@ describe('Email Service', function () { }) it('uses the default sender if a from: is not provided', () => { - let config = { host: 'databox.me', auth: {}, sender: 'solid@example.com' } - let emailService = new EmailService(templatePath, config) - let email = { subject: 'Test', from: null } + const config = { host: 'databox.me', auth: {}, sender: 'solid@example.com' } + const emailService = new EmailService(templatePath, config) + const email = { subject: 'Test', from: null } emailService.mailer.sendMail = (email) => { return Promise.resolve(email) } @@ -90,11 +92,11 @@ describe('Email Service', function () { describe('templatePathFor()', () => { it('should compose filename based on base path and template name', () => { - let config = { host: 'databox.me', auth: {} } - let templatePath = '../../config/email-templates' - let emailService = new EmailService(templatePath, config) + const config = { host: 'databox.me', auth: {} } + const templatePath = '../../config/email-templates' + const emailService = new EmailService(templatePath, config) - let templateFile = emailService.templatePathFor('welcome') + const templateFile = emailService.templatePathFor('welcome') expect(templateFile.endsWith('email-templates/welcome')) }) @@ -102,17 +104,17 @@ describe('Email Service', function () { describe('readTemplate()', () => { it('should read a template if it exists', () => { - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) - let template = emailService.readTemplate('welcome') + const template = emailService.readTemplate('welcome') expect(template).to.respondTo('render') }) it('should throw an error if a template does not exist', () => { - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) expect(() => { emailService.readTemplate('invalid-template') }) .to.throw(/Cannot find email template/) @@ -121,10 +123,10 @@ describe('Email Service', function () { describe('sendWithTemplate()', () => { it('should reject with error if template does not exist', done => { - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) - let data = {} + const data = {} emailService.sendWithTemplate('invalid-template', data) .catch(error => { @@ -135,13 +137,13 @@ describe('Email Service', function () { }) it('should render an email from template and send it', () => { - let config = { host: 'databox.me', auth: {} } - let emailService = new EmailService(templatePath, config) + const config = { host: 'databox.me', auth: {} } + const emailService = new EmailService(templatePath, config) emailService.sendMail = (email) => { return Promise.resolve(email) } emailService.sendMail = sinon.spy(emailService, 'sendMail') - let data = { webid: 'https://alice.example.com#me' } + const data = { webid: 'https://alice.example.com#me' } return emailService.sendWithTemplate('welcome', data) .then(renderedEmail => { diff --git a/test/unit/email-welcome-test.js b/test/unit/email-welcome-test.js index 7317a48c3..9cdcef7ab 100644 --- a/test/unit/email-welcome-test.js +++ b/test/unit/email-welcome-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const path = require('path') const chai = require('chai') @@ -19,10 +20,10 @@ var host, accountManager, emailService beforeEach(() => { host = SolidHost.from({ serverUri: 'https://example.com' }) - let emailConfig = { auth: {}, sender: 'solid@example.com' } + const emailConfig = { auth: {}, sender: 'solid@example.com' } emailService = new EmailService(templatePath, emailConfig) - let mgrConfig = { + const mgrConfig = { host, emailService, authMethod: 'oidc', @@ -36,8 +37,8 @@ describe('Account Creation Welcome Email', () => { it('should resolve to null if email service not set up', () => { accountManager.emailService = null - let userData = { name: 'Alice', username: 'alice', email: 'alice@alice.com' } - let newUser = accountManager.userAccountFrom(userData) + const userData = { name: 'Alice', username: 'alice', email: 'alice@alice.com' } + const newUser = accountManager.userAccountFrom(userData) return accountManager.sendWelcomeEmail(newUser) .then(result => { @@ -46,8 +47,8 @@ describe('Account Creation Welcome Email', () => { }) it('should resolve to null if a new user has no email', () => { - let userData = { name: 'Alice', username: 'alice' } - let newUser = accountManager.userAccountFrom(userData) + const userData = { name: 'Alice', username: 'alice' } + const newUser = accountManager.userAccountFrom(userData) return accountManager.sendWelcomeEmail(newUser) .then(result => { @@ -56,14 +57,14 @@ describe('Account Creation Welcome Email', () => { }) it('should send an email using the welcome template', () => { - let sendWithTemplate = sinon + const sendWithTemplate = sinon .stub(accountManager.emailService, 'sendWithTemplate') .returns(Promise.resolve()) - let userData = { name: 'Alice', username: 'alice', email: 'alice@alice.com' } - let newUser = accountManager.userAccountFrom(userData) + const userData = { name: 'Alice', username: 'alice', email: 'alice@alice.com' } + const newUser = accountManager.userAccountFrom(userData) - let expectedEmailData = { + const expectedEmailData = { webid: 'https://alice.example.com/profile/card#me', to: 'alice@alice.com', name: 'Alice' diff --git a/test/unit/error-pages-test.js b/test/unit/error-pages-test.js index c67fe68e4..015107842 100644 --- a/test/unit/error-pages-test.js +++ b/test/unit/error-pages-test.js @@ -11,11 +11,11 @@ const errorPages = require('../../lib/handlers/error-pages') describe('handlers/error-pages', () => { describe('handler()', () => { it('should use the custom error handler if available', () => { - let ldp = { errorHandler: sinon.stub() } - let req = { app: { locals: { ldp } } } - let res = { status: sinon.stub(), send: sinon.stub() } - let err = {} - let next = {} + const ldp = { errorHandler: sinon.stub() } + const req = { app: { locals: { ldp } } } + const res = { status: sinon.stub(), send: sinon.stub() } + const err = {} + const next = {} errorPages.handler(err, req, res, next) @@ -26,11 +26,11 @@ describe('handlers/error-pages', () => { }) it('defaults to status code 500 if none is specified in the error', () => { - let ldp = { noErrorPages: true } - let req = { app: { locals: { ldp } } } - let res = { status: sinon.stub(), send: sinon.stub(), header: sinon.stub() } - let err = { message: 'Unspecified error' } - let next = {} + const ldp = { noErrorPages: true } + const req = { app: { locals: { ldp } } } + const res = { status: sinon.stub(), send: sinon.stub(), header: sinon.stub() } + const err = { message: 'Unspecified error' } + const next = {} errorPages.handler(err, req, res, next) @@ -42,11 +42,11 @@ describe('handlers/error-pages', () => { describe('sendErrorResponse()', () => { it('should send http status code and error message', () => { - let statusCode = 404 - let error = { + const statusCode = 404 + const error = { message: 'Error description' } - let res = { + const res = { status: sinon.stub(), header: sinon.stub(), send: sinon.stub() @@ -62,11 +62,11 @@ describe('handlers/error-pages', () => { describe('setAuthenticateHeader()', () => { it('should do nothing for a non-implemented auth method', () => { - let err = {} - let req = { + const err = {} + const req = { app: { locals: { authMethod: null } } } - let res = { + const res = { set: sinon.stub() } @@ -78,14 +78,14 @@ describe('handlers/error-pages', () => { describe('sendErrorPage()', () => { it('falls back the default sendErrorResponse if no page is found', () => { - let statusCode = 400 - let res = { + const statusCode = 400 + const res = { status: sinon.stub(), header: sinon.stub(), send: sinon.stub() } - let err = { message: 'Error description' } - let ldp = { errorPages: './' } + const err = { message: 'Error description' } + const ldp = { errorPages: './' } return errorPages.sendErrorPage(statusCode, res, err, ldp) .then(() => { diff --git a/test/unit/login-request-test.js b/test/unit/login-request-test.js index aa00291c0..0db57a04d 100644 --- a/test/unit/login-request-test.js +++ b/test/unit/login-request-test.js @@ -37,25 +37,25 @@ describe('LoginRequest', () => { }) it('should create a LoginRequest instance', () => { - let fromParams = sinon.spy(LoginRequest, 'fromParams') - let loginStub = sinon.stub(LoginRequest, 'login') + const fromParams = sinon.spy(LoginRequest, 'fromParams') + const loginStub = sinon.stub(LoginRequest, 'login') .returns(Promise.resolve()) return LoginRequest.loginPassword(req, res) .then(() => { expect(fromParams).to.have.been.calledWith(req, res) - fromParams.reset() + fromParams.resetHistory() loginStub.restore() }) }) it('should invoke login()', () => { - let login = sinon.spy(LoginRequest, 'login') + const login = sinon.spy(LoginRequest, 'login') return LoginRequest.loginPassword(req, res) .then(() => { expect(login).to.have.been.called() - login.reset() + login.resetHistory() }) }) }) @@ -75,8 +75,8 @@ describe('LoginRequest', () => { return LoginRequest.loginTls(req, res) .then(() => { expect(LoginRequest.fromParams).to.have.been.calledWith(req, res) - LoginRequest.fromParams.reset() - LoginRequest.login.reset() + LoginRequest.fromParams.resetHistory() + LoginRequest.login.resetHistory() }) }) @@ -84,22 +84,22 @@ describe('LoginRequest', () => { return LoginRequest.loginTls(req, res) .then(() => { expect(LoginRequest.login).to.have.been.called() - LoginRequest.login.reset() + LoginRequest.login.resetHistory() }) }) }) describe('fromParams()', () => { - let session = {} - let req = { + const session = {} + const req = { session, app: { locals: { accountManager } }, body: { username: 'alice', password: '12345' } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() it('should return a LoginRequest instance', () => { - let request = LoginRequest.fromParams(req, res) + const request = LoginRequest.fromParams(req, res) expect(request.response).to.equal(res) expect(request.session).to.equal(session) @@ -107,7 +107,7 @@ describe('LoginRequest', () => { }) it('should initialize the query params', () => { - let requestOptions = sinon.spy(AuthRequest, 'requestOptions') + const requestOptions = sinon.spy(AuthRequest, 'requestOptions') LoginRequest.fromParams(req, res) expect(requestOptions).to.have.been.calledWith(req) @@ -115,10 +115,10 @@ describe('LoginRequest', () => { }) describe('login()', () => { - let userStore = mockUserStore + const userStore = mockUserStore let response - let options = { + const options = { userStore, accountManager, localAuth: {} @@ -129,15 +129,15 @@ describe('LoginRequest', () => { }) it('should call initUserSession() for a valid user', () => { - let validUser = {} + const validUser = {} options.response = response options.authenticator = { findValidUser: sinon.stub().resolves(validUser) } - let request = new LoginRequest(options) + const request = new LoginRequest(options) - let initUserSession = sinon.spy(request, 'initUserSession') + const initUserSession = sinon.spy(request, 'initUserSession') return LoginRequest.login(request) .then(() => { @@ -146,15 +146,15 @@ describe('LoginRequest', () => { }) it('should call redirectPostLogin()', () => { - let validUser = {} + const validUser = {} options.response = response options.authenticator = { findValidUser: sinon.stub().resolves(validUser) } - let request = new LoginRequest(options) + const request = new LoginRequest(options) - let redirectPostLogin = sinon.spy(request, 'redirectPostLogin') + const redirectPostLogin = sinon.spy(request, 'redirectPostLogin') return LoginRequest.login(request) .then(() => { @@ -165,10 +165,10 @@ describe('LoginRequest', () => { describe('postLoginUrl()', () => { it('should return the user account uri if no redirect_uri param', () => { - let request = new LoginRequest({ authQueryParams: {} }) + const request = new LoginRequest({ authQueryParams: {} }) - let aliceAccount = 'https://alice.example.com' - let user = { accountUri: aliceAccount } + const aliceAccount = 'https://alice.example.com' + const user = { accountUri: aliceAccount } expect(request.postLoginUrl(user)).to.equal(aliceAccount) }) @@ -176,16 +176,16 @@ describe('LoginRequest', () => { describe('redirectPostLogin()', () => { it('should redirect to the /sharing url if response_type includes token', () => { - let res = HttpMocks.createResponse() - let authUrl = 'https://localhost:8443/sharing?response_type=token' - let validUser = accountManager.userAccountFrom({ username: 'alice' }) + const res = HttpMocks.createResponse() + const authUrl = 'https://localhost:8443/sharing?response_type=token' + const validUser = accountManager.userAccountFrom({ username: 'alice' }) - let authQueryParams = { + const authQueryParams = { response_type: 'token' } - let options = { accountManager, authQueryParams, response: res } - let request = new LoginRequest(options) + const options = { accountManager, authQueryParams, response: res } + const request = new LoginRequest(options) request.authorizeUrl = sinon.stub().returns(authUrl) @@ -196,40 +196,40 @@ describe('LoginRequest', () => { }) it('should redirect to account uri if no client_id present', () => { - let res = HttpMocks.createResponse() - let authUrl = 'https://localhost/authorize?redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback' - let validUser = accountManager.userAccountFrom({ username: 'alice' }) + const res = HttpMocks.createResponse() + const authUrl = 'https://localhost/authorize?redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback' + const validUser = accountManager.userAccountFrom({ username: 'alice' }) - let authQueryParams = {} + const authQueryParams = {} - let options = { accountManager, authQueryParams, response: res } - let request = new LoginRequest(options) + const options = { accountManager, authQueryParams, response: res } + const request = new LoginRequest(options) request.authorizeUrl = sinon.stub().returns(authUrl) request.redirectPostLogin(validUser) - let expectedUri = accountManager.accountUriFor('alice') + const expectedUri = accountManager.accountUriFor('alice') expect(res.statusCode).to.equal(302) expect(res._getRedirectUrl()).to.equal(expectedUri) }) it('should redirect to account uri if redirect_uri is string "undefined', () => { - let res = HttpMocks.createResponse() - let authUrl = 'https://localhost/authorize?client_id=123' - let validUser = accountManager.userAccountFrom({ username: 'alice' }) + const res = HttpMocks.createResponse() + const authUrl = 'https://localhost/authorize?client_id=123' + const validUser = accountManager.userAccountFrom({ username: 'alice' }) - let body = { redirect_uri: 'undefined' } + const body = { redirect_uri: 'undefined' } - let options = { accountManager, response: res } - let request = new LoginRequest(options) + const options = { accountManager, response: res } + const request = new LoginRequest(options) request.authQueryParams = AuthRequest.extractAuthParams({ body }) request.authorizeUrl = sinon.stub().returns(authUrl) request.redirectPostLogin(validUser) - let expectedUri = accountManager.accountUriFor('alice') + const expectedUri = accountManager.accountUriFor('alice') expect(res.statusCode).to.equal(302) expect(res._getRedirectUrl()).to.equal(expectedUri) diff --git a/test/unit/oidc-manager-test.js b/test/unit/oidc-manager-test.js index 4c49da090..75583471d 100644 --- a/test/unit/oidc-manager-test.js +++ b/test/unit/oidc-manager-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const chai = require('chai') const expect = chai.expect @@ -14,18 +15,18 @@ describe('OidcManager', () => { }) it('should result in an initialized oidc object', () => { - let serverUri = 'https://localhost:8443' - let host = SolidHost.from({ serverUri }) + const serverUri = 'https://localhost:8443' + const host = SolidHost.from({ serverUri }) - let dbPath = path.join(__dirname, '../resources/db') - let saltRounds = 5 - let argv = { + const dbPath = path.join(__dirname, '../resources/db') + const saltRounds = 5 + const argv = { host, dbPath, saltRounds } - let oidc = OidcManager.fromServerConfig(argv) + const oidc = OidcManager.fromServerConfig(argv) expect(oidc.rs.defaults.query).to.be.true expect(oidc.clients.store.backend.path.endsWith('db/rp/clients')) diff --git a/test/unit/options.js b/test/unit/options.js index 641dee55f..d0f6239ef 100644 --- a/test/unit/options.js +++ b/test/unit/options.js @@ -10,7 +10,7 @@ describe('Command line options', function () { it('contains only `name`s that are kebab-case', function () { assert.equal( - options.every(({name}) => (/^[a-z][a-z0-9-]*$/).test(name)), + options.every(({ name }) => (/^[a-z][a-z0-9-]*$/).test(name)), true ) }) diff --git a/test/unit/password-authenticator-test.js b/test/unit/password-authenticator-test.js index e57b63f1e..0438bb757 100644 --- a/test/unit/password-authenticator-test.js +++ b/test/unit/password-authenticator-test.js @@ -22,13 +22,13 @@ const accountManager = AccountManager.from({ host }) describe('PasswordAuthenticator', () => { describe('fromParams()', () => { - let req = { + const req = { body: { username: 'alice', password: '12345' } } - let options = { userStore: mockUserStore, accountManager } + const options = { userStore: mockUserStore, accountManager } it('should return a PasswordAuthenticator instance', () => { - let pwAuth = PasswordAuthenticator.fromParams(req, options) + const pwAuth = PasswordAuthenticator.fromParams(req, options) expect(pwAuth.userStore).to.equal(mockUserStore) expect(pwAuth.accountManager).to.equal(accountManager) @@ -37,9 +37,9 @@ describe('PasswordAuthenticator', () => { }) it('should init with undefined username and password if no body is provided', () => { - let req = {} + const req = {} - let pwAuth = PasswordAuthenticator.fromParams(req, {}) + const pwAuth = PasswordAuthenticator.fromParams(req, {}) expect(pwAuth.username).to.be.undefined() expect(pwAuth.password).to.be.undefined() @@ -48,8 +48,8 @@ describe('PasswordAuthenticator', () => { describe('validate()', () => { it('should throw a 400 error if no username was provided', done => { - let options = { username: null, password: '12345' } - let pwAuth = new PasswordAuthenticator(options) + const options = { username: null, password: '12345' } + const pwAuth = new PasswordAuthenticator(options) try { pwAuth.validate() @@ -61,8 +61,8 @@ describe('PasswordAuthenticator', () => { }) it('should throw a 400 error if no password was provided', done => { - let options = { username: 'alice', password: null } - let pwAuth = new PasswordAuthenticator(options) + const options = { username: 'alice', password: null } + const pwAuth = new PasswordAuthenticator(options) try { pwAuth.validate() @@ -76,12 +76,12 @@ describe('PasswordAuthenticator', () => { describe('findValidUser()', () => { it('should throw a 400 if no valid user is found in the user store', done => { - let options = { + const options = { username: 'alice', password: '1234', accountManager } - let pwAuth = new PasswordAuthenticator(options) + const pwAuth = new PasswordAuthenticator(options) pwAuth.userStore = { findUser: () => { return Promise.resolve(false) } @@ -96,12 +96,12 @@ describe('PasswordAuthenticator', () => { }) it('should throw a 400 if user is found but password does not match', done => { - let options = { + const options = { username: 'alice', password: '1234', accountManager } - let pwAuth = new PasswordAuthenticator(options) + const pwAuth = new PasswordAuthenticator(options) pwAuth.userStore = { findUser: () => { return Promise.resolve(true) }, @@ -117,14 +117,14 @@ describe('PasswordAuthenticator', () => { }) it('should return a valid user if one is found and password matches', () => { - let webId = 'https://alice.example.com/#me' - let validUser = { username: 'alice', webId } - let options = { + const webId = 'https://alice.example.com/#me' + const validUser = { username: 'alice', webId } + const options = { username: 'alice', password: '1234', accountManager } - let pwAuth = new PasswordAuthenticator(options) + const pwAuth = new PasswordAuthenticator(options) pwAuth.userStore = { findUser: () => { return Promise.resolve(validUser) }, @@ -138,28 +138,28 @@ describe('PasswordAuthenticator', () => { }) describe('in Multi User mode', () => { - let multiuser = true - let serverUri = 'https://example.com' - let host = SolidHost.from({ serverUri }) + const multiuser = true + const serverUri = 'https://example.com' + const host = SolidHost.from({ serverUri }) - let accountManager = AccountManager.from({ multiuser, host }) + const accountManager = AccountManager.from({ multiuser, host }) - let aliceRecord = { webId: 'https://alice.example.com/profile/card#me' } - let mockUserStore = { + const aliceRecord = { webId: 'https://alice.example.com/profile/card#me' } + const mockUserStore = { findUser: sinon.stub().resolves(aliceRecord), matchPassword: (user, password) => { return Promise.resolve(user) } } it('should load user from store if provided with username', () => { - let options = { + const options = { username: 'alice', password: '1234', userStore: mockUserStore, accountManager } - let pwAuth = new PasswordAuthenticator(options) + const pwAuth = new PasswordAuthenticator(options) - let userStoreKey = 'alice.example.com/profile/card#me' + const userStoreKey = 'alice.example.com/profile/card#me' return pwAuth.findValidUser() .then(() => { @@ -168,16 +168,16 @@ describe('PasswordAuthenticator', () => { }) it('should load user from store if provided with WebID', () => { - let webId = 'https://alice.example.com/profile/card#me' - let options = { + const webId = 'https://alice.example.com/profile/card#me' + const options = { username: webId, password: '1234', userStore: mockUserStore, accountManager } - let pwAuth = new PasswordAuthenticator(options) + const pwAuth = new PasswordAuthenticator(options) - let userStoreKey = 'alice.example.com/profile/card#me' + const userStoreKey = 'alice.example.com/profile/card#me' return pwAuth.findValidUser() .then(() => { @@ -187,23 +187,23 @@ describe('PasswordAuthenticator', () => { }) describe('in Single User mode', () => { - let multiuser = false - let serverUri = 'https://localhost:8443' - let host = SolidHost.from({ serverUri }) + const multiuser = false + const serverUri = 'https://localhost:8443' + const host = SolidHost.from({ serverUri }) - let accountManager = AccountManager.from({ multiuser, host }) + const accountManager = AccountManager.from({ multiuser, host }) - let aliceRecord = { webId: 'https://localhost:8443/profile/card#me' } - let mockUserStore = { + const aliceRecord = { webId: 'https://localhost:8443/profile/card#me' } + const mockUserStore = { findUser: sinon.stub().resolves(aliceRecord), matchPassword: (user, password) => { return Promise.resolve(user) } } it('should load user from store if provided with username', () => { - let options = { username: 'admin', password: '1234', userStore: mockUserStore, accountManager } - let pwAuth = new PasswordAuthenticator(options) + const options = { username: 'admin', password: '1234', userStore: mockUserStore, accountManager } + const pwAuth = new PasswordAuthenticator(options) - let userStoreKey = 'localhost:8443/profile/card#me' + const userStoreKey = 'localhost:8443/profile/card#me' return pwAuth.findValidUser() .then(() => { @@ -212,11 +212,11 @@ describe('PasswordAuthenticator', () => { }) it('should load user from store if provided with WebID', () => { - let webId = 'https://localhost:8443/profile/card#me' - let options = { username: webId, password: '1234', userStore: mockUserStore, accountManager } - let pwAuth = new PasswordAuthenticator(options) + const webId = 'https://localhost:8443/profile/card#me' + const options = { username: webId, password: '1234', userStore: mockUserStore, accountManager } + const pwAuth = new PasswordAuthenticator(options) - let userStoreKey = 'localhost:8443/profile/card#me' + const userStoreKey = 'localhost:8443/profile/card#me' return pwAuth.findValidUser() .then(() => { diff --git a/test/unit/password-change-request-test.js b/test/unit/password-change-request-test.js index 50943e273..05681966e 100644 --- a/test/unit/password-change-request-test.js +++ b/test/unit/password-change-request-test.js @@ -19,12 +19,12 @@ describe('PasswordChangeRequest', () => { describe('constructor()', () => { it('should initialize a request instance from options', () => { - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let accountManager = {} - let userStore = {} + const accountManager = {} + const userStore = {} - let options = { + const options = { accountManager, userStore, returnToUrl: 'https://example.com/resource', @@ -33,7 +33,7 @@ describe('PasswordChangeRequest', () => { newPassword: 'swordfish' } - let request = new PasswordChangeRequest(options) + const request = new PasswordChangeRequest(options) expect(request.returnToUrl).to.equal(options.returnToUrl) expect(request.response).to.equal(res) @@ -46,20 +46,20 @@ describe('PasswordChangeRequest', () => { describe('fromParams()', () => { it('should return a request instance from options', () => { - let returnToUrl = 'https://example.com/resource' - let token = '12345' - let newPassword = 'swordfish' - let accountManager = {} - let userStore = {} + const returnToUrl = 'https://example.com/resource' + const token = '12345' + const newPassword = 'swordfish' + const accountManager = {} + const userStore = {} - let req = { + const req = { app: { locals: { accountManager, oidc: { users: userStore } } }, query: { returnToUrl, token }, body: { newPassword } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let request = PasswordChangeRequest.fromParams(req, res) + const request = PasswordChangeRequest.fromParams(req, res) expect(request.returnToUrl).to.equal(returnToUrl) expect(request.response).to.equal(res) @@ -71,17 +71,17 @@ describe('PasswordChangeRequest', () => { }) describe('get()', () => { - let returnToUrl = 'https://example.com/resource' - let token = '12345' - let userStore = {} - let res = HttpMocks.createResponse() + const returnToUrl = 'https://example.com/resource' + const token = '12345' + const userStore = {} + const res = HttpMocks.createResponse() sinon.spy(res, 'render') it('should create an instance and render a change password form', () => { - let accountManager = { + const accountManager = { validateResetToken: sinon.stub().resolves(true) } - let req = { + const req = { app: { locals: { accountManager, oidc: { users: userStore } } }, query: { returnToUrl, token } } @@ -96,10 +96,10 @@ describe('PasswordChangeRequest', () => { }) it('should display an error message on an invalid token', () => { - let accountManager = { + const accountManager = { validateResetToken: sinon.stub().throws() } - let req = { + const req = { app: { locals: { accountManager, oidc: { users: userStore } } }, query: { returnToUrl, token } } @@ -116,19 +116,19 @@ describe('PasswordChangeRequest', () => { it('creates a request instance and invokes handlePost()', () => { sinon.spy(PasswordChangeRequest, 'handlePost') - let returnToUrl = 'https://example.com/resource' - let token = '12345' - let newPassword = 'swordfish' - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let alice = { + const returnToUrl = 'https://example.com/resource' + const token = '12345' + const newPassword = 'swordfish' + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const alice = { webId: 'https://alice.example.com/#me' } - let storedToken = { webId: alice.webId } - let store = { + const storedToken = { webId: alice.webId } + const store = { findUser: sinon.stub().resolves(alice), updatePassword: sinon.stub() } - let accountManager = { + const accountManager = { host, store, userAccountFrom: sinon.stub().resolves(alice), @@ -139,12 +139,12 @@ describe('PasswordChangeRequest', () => { accountManager.loadAccountRecoveryEmail = sinon.stub().resolves('alice@example.com') accountManager.sendPasswordResetEmail = sinon.stub().resolves() - let req = { + const req = { app: { locals: { accountManager, oidc: { users: store } } }, query: { returnToUrl }, body: { token, newPassword } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() return PasswordChangeRequest.post(req, res) .then(() => { @@ -155,19 +155,19 @@ describe('PasswordChangeRequest', () => { describe('handlePost()', () => { it('should display error message if validation error encountered', () => { - let returnToUrl = 'https://example.com/resource' - let token = '12345' - let userStore = {} - let res = HttpMocks.createResponse() - let accountManager = { + const returnToUrl = 'https://example.com/resource' + const token = '12345' + const userStore = {} + const res = HttpMocks.createResponse() + const accountManager = { validateResetToken: sinon.stub().throws() } - let req = { + const req = { app: { locals: { accountManager, oidc: { users: userStore } } }, query: { returnToUrl, token } } - let request = PasswordChangeRequest.fromParams(req, res) + const request = PasswordChangeRequest.fromParams(req, res) return PasswordChangeRequest.handlePost(request) .then(() => { @@ -179,10 +179,10 @@ describe('PasswordChangeRequest', () => { describe('validateToken()', () => { it('should return false if no token is present', () => { - let accountManager = { + const accountManager = { validateResetToken: sinon.stub() } - let request = new PasswordChangeRequest({ accountManager, token: null }) + const request = new PasswordChangeRequest({ accountManager, token: null }) return request.validateToken() .then(result => { @@ -194,7 +194,7 @@ describe('PasswordChangeRequest', () => { describe('validatePost()', () => { it('should throw an error if no new password was entered', () => { - let request = new PasswordChangeRequest({ newPassword: null }) + const request = new PasswordChangeRequest({ newPassword: null }) expect(() => request.validatePost()).to.throw('Please enter a new password') }) @@ -202,9 +202,9 @@ describe('PasswordChangeRequest', () => { describe('error()', () => { it('should invoke renderForm() with the error', () => { - let request = new PasswordChangeRequest({}) + const request = new PasswordChangeRequest({}) request.renderForm = sinon.stub() - let error = new Error('error message') + const error = new Error('error message') request.error(error) @@ -215,21 +215,21 @@ describe('PasswordChangeRequest', () => { describe('changePassword()', () => { it('should create a new user store entry if none exists', () => { // this would be the case for legacy pre-user-store accounts - let webId = 'https://alice.example.com/#me' - let user = { webId, id: webId } - let accountManager = { + const webId = 'https://alice.example.com/#me' + const user = { webId, id: webId } + const accountManager = { userAccountFrom: sinon.stub().returns(user) } - let userStore = { - findUser: sinon.stub().resolves(null), // no user found + const userStore = { + findUser: sinon.stub().resolves(null), // no user found createUser: sinon.stub().resolves(), updatePassword: sinon.stub().resolves() } - let options = { + const options = { accountManager, userStore, newPassword: 'swordfish' } - let request = new PasswordChangeRequest(options) + const request = new PasswordChangeRequest(options) return request.changePassword(user) .then(() => { @@ -240,16 +240,16 @@ describe('PasswordChangeRequest', () => { describe('renderForm()', () => { it('should set response status to error status, if error exists', () => { - let returnToUrl = 'https://example.com/resource' - let token = '12345' - let response = HttpMocks.createResponse() + const returnToUrl = 'https://example.com/resource' + const token = '12345' + const response = HttpMocks.createResponse() sinon.spy(response, 'render') - let options = { returnToUrl, token, response } + const options = { returnToUrl, token, response } - let request = new PasswordChangeRequest(options) + const request = new PasswordChangeRequest(options) - let error = new Error('error message') + const error = new Error('error message') request.renderForm(error) diff --git a/test/unit/password-reset-email-request-test.js b/test/unit/password-reset-email-request-test.js index 9bda0e210..2861a0fe2 100644 --- a/test/unit/password-reset-email-request-test.js +++ b/test/unit/password-reset-email-request-test.js @@ -18,15 +18,15 @@ const SolidHost = require('../../lib/models/solid-host') describe('PasswordResetEmailRequest', () => { describe('constructor()', () => { it('should initialize a request instance from options', () => { - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let options = { + const options = { returnToUrl: 'https://example.com/resource', response: res, username: 'alice' } - let request = new PasswordResetEmailRequest(options) + const request = new PasswordResetEmailRequest(options) expect(request.returnToUrl).to.equal(options.returnToUrl) expect(request.response).to.equal(res) @@ -36,18 +36,18 @@ describe('PasswordResetEmailRequest', () => { describe('fromParams()', () => { it('should return a request instance from options', () => { - let returnToUrl = 'https://example.com/resource' - let username = 'alice' - let accountManager = {} + const returnToUrl = 'https://example.com/resource' + const username = 'alice' + const accountManager = {} - let req = { + const req = { app: { locals: { accountManager } }, query: { returnToUrl }, body: { username } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let request = PasswordResetEmailRequest.fromParams(req, res) + const request = PasswordResetEmailRequest.fromParams(req, res) expect(request.accountManager).to.equal(accountManager) expect(request.returnToUrl).to.equal(returnToUrl) @@ -58,16 +58,16 @@ describe('PasswordResetEmailRequest', () => { describe('get()', () => { it('should create an instance and render a reset password form', () => { - let returnToUrl = 'https://example.com/resource' - let username = 'alice' - let accountManager = { multiuser: true } + const returnToUrl = 'https://example.com/resource' + const username = 'alice' + const accountManager = { multiuser: true } - let req = { + const req = { app: { locals: { accountManager } }, query: { returnToUrl }, body: { username } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() res.render = sinon.stub() PasswordResetEmailRequest.get(req, res) @@ -81,23 +81,23 @@ describe('PasswordResetEmailRequest', () => { it('creates a request instance and invokes handlePost()', () => { sinon.spy(PasswordResetEmailRequest, 'handlePost') - let returnToUrl = 'https://example.com/resource' - let username = 'alice' - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let store = { + const returnToUrl = 'https://example.com/resource' + const username = 'alice' + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const store = { suffixAcl: '.acl' } - let accountManager = AccountManager.from({ host, multiuser: true, store }) + const accountManager = AccountManager.from({ host, multiuser: true, store }) accountManager.accountExists = sinon.stub().resolves(true) accountManager.loadAccountRecoveryEmail = sinon.stub().resolves('alice@example.com') accountManager.sendPasswordResetEmail = sinon.stub().resolves() - let req = { + const req = { app: { locals: { accountManager } }, query: { returnToUrl }, body: { username } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() PasswordResetEmailRequest.post(req, res) .then(() => { @@ -108,19 +108,19 @@ describe('PasswordResetEmailRequest', () => { describe('validate()', () => { it('should throw an error if username is missing in multi-user mode', () => { - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let accountManager = AccountManager.from({ host, multiuser: true }) + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const accountManager = AccountManager.from({ host, multiuser: true }) - let request = new PasswordResetEmailRequest({ accountManager }) + const request = new PasswordResetEmailRequest({ accountManager }) expect(() => request.validate()).to.throw(/Username required/) }) it('should not throw an error if username is missing in single user mode', () => { - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let accountManager = AccountManager.from({ host, multiuser: false }) + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const accountManager = AccountManager.from({ host, multiuser: false }) - let request = new PasswordResetEmailRequest({ accountManager }) + const request = new PasswordResetEmailRequest({ accountManager }) expect(() => request.validate()).to.not.throw() }) @@ -128,20 +128,20 @@ describe('PasswordResetEmailRequest', () => { describe('handlePost()', () => { it('should handle the post request', () => { - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let store = { suffixAcl: '.acl' } - let accountManager = AccountManager.from({ host, multiuser: true, store }) + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const store = { suffixAcl: '.acl' } + const accountManager = AccountManager.from({ host, multiuser: true, store }) accountManager.loadAccountRecoveryEmail = sinon.stub().resolves('alice@example.com') accountManager.sendPasswordResetEmail = sinon.stub().resolves() accountManager.accountExists = sinon.stub().resolves(true) - let returnToUrl = 'https://example.com/resource' - let username = 'alice' - let response = HttpMocks.createResponse() + const returnToUrl = 'https://example.com/resource' + const username = 'alice' + const response = HttpMocks.createResponse() response.render = sinon.stub() - let options = { accountManager, username, returnToUrl, response } - let request = new PasswordResetEmailRequest(options) + const options = { accountManager, username, returnToUrl, response } + const request = new PasswordResetEmailRequest(options) sinon.spy(request, 'error') @@ -157,14 +157,14 @@ describe('PasswordResetEmailRequest', () => { describe('loadUser()', () => { it('should return a UserAccount instance based on username', () => { - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let store = { suffixAcl: '.acl' } - let accountManager = AccountManager.from({ host, multiuser: true, store }) + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const store = { suffixAcl: '.acl' } + const accountManager = AccountManager.from({ host, multiuser: true, store }) accountManager.accountExists = sinon.stub().resolves(true) - let username = 'alice' + const username = 'alice' - let options = { accountManager, username } - let request = new PasswordResetEmailRequest(options) + const options = { accountManager, username } + const request = new PasswordResetEmailRequest(options) return request.loadUser() .then(account => { @@ -173,14 +173,14 @@ describe('PasswordResetEmailRequest', () => { }) it('should throw an error if the user does not exist', done => { - let host = SolidHost.from({ serverUri: 'https://example.com' }) - let store = { suffixAcl: '.acl' } - let accountManager = AccountManager.from({ host, multiuser: true, store }) + const host = SolidHost.from({ serverUri: 'https://example.com' }) + const store = { suffixAcl: '.acl' } + const accountManager = AccountManager.from({ host, multiuser: true, store }) accountManager.accountExists = sinon.stub().resolves(false) - let username = 'alice' + const username = 'alice' - let options = { accountManager, username } - let request = new PasswordResetEmailRequest(options) + const options = { accountManager, username } + const request = new PasswordResetEmailRequest(options) request.loadUser() .catch(error => { diff --git a/test/unit/solid-host-test.js b/test/unit/solid-host-test.js index fc2d77b6d..d372e3a72 100644 --- a/test/unit/solid-host-test.js +++ b/test/unit/solid-host-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const expect = require('chai').expect @@ -8,7 +9,7 @@ const defaults = require('../../config/defaults') describe('SolidHost', () => { describe('from()', () => { it('should init with provided params', () => { - let config = { + const config = { port: 3000, serverUri: 'https://localhost:3000', live: true, @@ -16,7 +17,7 @@ describe('SolidHost', () => { multiuser: true, webid: true } - let host = SolidHost.from(config) + const host = SolidHost.from(config) expect(host.port).to.equal(3000) expect(host.serverUri).to.equal('https://localhost:3000') @@ -28,7 +29,7 @@ describe('SolidHost', () => { }) it('should init to default port and serverUri values', () => { - let host = SolidHost.from({}) + const host = SolidHost.from({}) expect(host.port).to.equal(defaults.port) expect(host.serverUri).to.equal(defaults.serverUri) }) @@ -36,16 +37,16 @@ describe('SolidHost', () => { describe('accountUriFor()', () => { it('should compose an account uri for an account name', () => { - let config = { + const config = { serverUri: 'https://test.local' } - let host = SolidHost.from(config) + const host = SolidHost.from(config) expect(host.accountUriFor('alice')).to.equal('https://alice.test.local') }) it('should throw an error if no account name is passed in', () => { - let host = SolidHost.from() + const host = SolidHost.from() expect(() => { host.accountUriFor() }).to.throw(TypeError) }) }) @@ -89,7 +90,7 @@ describe('SolidHost', () => { describe('cookieDomain getter', () => { it('should return null for single-part domains (localhost)', () => { - let host = SolidHost.from({ + const host = SolidHost.from({ serverUri: 'https://localhost:8443' }) @@ -97,7 +98,7 @@ describe('SolidHost', () => { }) it('should return a cookie domain for multi-part domains', () => { - let host = SolidHost.from({ + const host = SolidHost.from({ serverUri: 'https://example.com:8443' }) @@ -107,11 +108,11 @@ describe('SolidHost', () => { describe('authEndpoint getter', () => { it('should return an /authorize url object', () => { - let host = SolidHost.from({ + const host = SolidHost.from({ serverUri: 'https://localhost:8443' }) - let authUrl = host.authEndpoint + const authUrl = host.authEndpoint expect(authUrl.host).to.equal('localhost:8443') expect(authUrl.path).to.equal('/authorize') diff --git a/test/unit/tls-authenticator-test.js b/test/unit/tls-authenticator-test.js index 27c2be391..e57cdd3c7 100644 --- a/test/unit/tls-authenticator-test.js +++ b/test/unit/tls-authenticator-test.js @@ -18,13 +18,13 @@ const accountManager = AccountManager.from({ host, multiuser: true }) describe('TlsAuthenticator', () => { describe('fromParams()', () => { - let req = { + const req = { connection: {} } - let options = { accountManager } + const options = { accountManager } it('should return a TlsAuthenticator instance', () => { - let tlsAuth = TlsAuthenticator.fromParams(req, options) + const tlsAuth = TlsAuthenticator.fromParams(req, options) expect(tlsAuth.accountManager).to.equal(accountManager) expect(tlsAuth.connection).to.equal(req.connection) @@ -32,15 +32,15 @@ describe('TlsAuthenticator', () => { }) describe('findValidUser()', () => { - let webId = 'https://alice.example.com/#me' - let certificate = { uri: webId } - let connection = { + const webId = 'https://alice.example.com/#me' + const certificate = { uri: webId } + const connection = { renegotiate: sinon.stub().yields(), getPeerCertificate: sinon.stub().returns(certificate) } - let options = { accountManager, connection } + const options = { accountManager, connection } - let tlsAuth = new TlsAuthenticator(options) + const tlsAuth = new TlsAuthenticator(options) tlsAuth.extractWebId = sinon.stub().resolves(webId) sinon.spy(tlsAuth, 'renegotiateTls') @@ -59,21 +59,21 @@ describe('TlsAuthenticator', () => { describe('renegotiateTls()', () => { it('should reject if an error occurs while renegotiating', () => { - let connection = { + const connection = { renegotiate: sinon.stub().yields(new Error('Error renegotiating')) } - let tlsAuth = new TlsAuthenticator({ connection }) + const tlsAuth = new TlsAuthenticator({ connection }) expect(tlsAuth.renegotiateTls()).to.be.rejectedWith(/Error renegotiating/) }) it('should resolve if no error occurs', () => { - let connection = { + const connection = { renegotiate: sinon.stub().yields(null) } - let tlsAuth = new TlsAuthenticator({ connection }) + const tlsAuth = new TlsAuthenticator({ connection }) expect(tlsAuth.renegotiateTls()).to.be.fulfilled() }) @@ -81,32 +81,32 @@ describe('TlsAuthenticator', () => { describe('getCertificate()', () => { it('should throw on a non-existent certificate', () => { - let connection = { + const connection = { getPeerCertificate: sinon.stub().returns(null) } - let tlsAuth = new TlsAuthenticator({ connection }) + const tlsAuth = new TlsAuthenticator({ connection }) expect(() => tlsAuth.getCertificate()).to.throw(/No client certificate detected/) }) it('should throw on an empty certificate', () => { - let connection = { + const connection = { getPeerCertificate: sinon.stub().returns({}) } - let tlsAuth = new TlsAuthenticator({ connection }) + const tlsAuth = new TlsAuthenticator({ connection }) expect(() => tlsAuth.getCertificate()).to.throw(/No client certificate detected/) }) it('should return a certificate if no error occurs', () => { - let certificate = { uri: 'https://alice.example.com/#me' } - let connection = { + const certificate = { uri: 'https://alice.example.com/#me' } + const connection = { getPeerCertificate: sinon.stub().returns(certificate) } - let tlsAuth = new TlsAuthenticator({ connection }) + const tlsAuth = new TlsAuthenticator({ connection }) expect(tlsAuth.getCertificate()).to.equal(certificate) }) @@ -114,7 +114,7 @@ describe('TlsAuthenticator', () => { describe('extractWebId()', () => { it('should reject if an error occurs verifying certificate', () => { - let tlsAuth = new TlsAuthenticator({}) + const tlsAuth = new TlsAuthenticator({}) tlsAuth.verifyWebId = sinon.stub().yields(new Error('Error processing certificate')) @@ -122,12 +122,12 @@ describe('TlsAuthenticator', () => { }) it('should resolve with a verified web id', () => { - let tlsAuth = new TlsAuthenticator({}) + const tlsAuth = new TlsAuthenticator({}) - let webId = 'https://alice.example.com/#me' + const webId = 'https://alice.example.com/#me' tlsAuth.verifyWebId = sinon.stub().yields(null, webId) - let certificate = { uri: webId } + const certificate = { uri: webId } expect(tlsAuth.extractWebId(certificate)).to.become(webId) }) @@ -135,24 +135,24 @@ describe('TlsAuthenticator', () => { describe('loadUser()', () => { it('should return a user instance if the webid is local', () => { - let tlsAuth = new TlsAuthenticator({ accountManager }) + const tlsAuth = new TlsAuthenticator({ accountManager }) - let webId = 'https://alice.example.com/#me' + const webId = 'https://alice.example.com/#me' - let user = tlsAuth.loadUser(webId) + const user = tlsAuth.loadUser(webId) expect(user.username).to.equal('alice') expect(user.webId).to.equal(webId) }) it('should return a user instance if external user and this server is authorized provider', () => { - let tlsAuth = new TlsAuthenticator({ accountManager }) + const tlsAuth = new TlsAuthenticator({ accountManager }) - let externalWebId = 'https://alice.someothersite.com#me' + const externalWebId = 'https://alice.someothersite.com#me' tlsAuth.discoverProviderFor = sinon.stub().resolves('https://example.com') - let user = tlsAuth.loadUser(externalWebId) + const user = tlsAuth.loadUser(externalWebId) expect(user.username).to.equal(externalWebId) expect(user.webId).to.equal(externalWebId) @@ -161,7 +161,7 @@ describe('TlsAuthenticator', () => { describe('verifyWebId()', () => { it('should yield an error if no cert is given', done => { - let tlsAuth = new TlsAuthenticator({}) + const tlsAuth = new TlsAuthenticator({}) tlsAuth.verifyWebId(null, (error) => { expect(error.message).to.equal('No certificate given') diff --git a/test/unit/token-service-test.js b/test/unit/token-service-test.js index 2751a2abb..670fe38ef 100644 --- a/test/unit/token-service-test.js +++ b/test/unit/token-service-test.js @@ -11,7 +11,7 @@ const TokenService = require('../../lib/services/token-service') describe('TokenService', () => { describe('constructor()', () => { it('should init with an empty tokens store', () => { - let service = new TokenService() + const service = new TokenService() expect(service.tokens).to.exist() }) @@ -19,10 +19,10 @@ describe('TokenService', () => { describe('generate()', () => { it('should generate a new token and return a token key', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('test') - let value = service.tokens.test[token] + const token = service.generate('test') + const value = service.tokens.test[token] expect(token).to.exist() expect(value).to.have.property('exp') @@ -31,9 +31,9 @@ describe('TokenService', () => { describe('verify()', () => { it('should return false for expired tokens', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('foo') + const token = service.generate('foo') service.tokens.foo[token].exp = new Date(Date.now() - 1000) @@ -41,26 +41,26 @@ describe('TokenService', () => { }) it('should return false for non-existent tokens', () => { - let service = new TokenService() + const service = new TokenService() service.generate('foo') // to have generated the domain - let token = 'invalid token 123' + const token = 'invalid token 123' expect(service.verify('foo', token)).to.be.false() }) it('should return the token value if token not expired', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('foo') + const token = service.generate('foo') expect(service.verify('foo', token)).to.be.ok() }) it('should throw error if invalid domain', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('foo') + const token = service.generate('foo') expect(() => service.verify('bar', token)).to.throw() }) @@ -68,9 +68,9 @@ describe('TokenService', () => { describe('remove()', () => { it('should remove a generated token from the service', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('bar') + const token = service.generate('bar') service.remove('bar', token) @@ -78,9 +78,9 @@ describe('TokenService', () => { }) it('should throw an error if invalid domain', () => { - let service = new TokenService() + const service = new TokenService() - let token = service.generate('foo') + const token = service.generate('foo') expect(() => service.remove('bar', token)).to.throw() }) diff --git a/test/unit/user-account-test.js b/test/unit/user-account-test.js index 420a346a7..c95158c2d 100644 --- a/test/unit/user-account-test.js +++ b/test/unit/user-account-test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint-disable no-unused-expressions */ const chai = require('chai') const expect = chai.expect @@ -7,14 +8,14 @@ const UserAccount = require('../../lib/models/user-account') describe('UserAccount', () => { describe('from()', () => { it('initializes the object with passed in options', () => { - let options = { + const options = { username: 'alice', webId: 'https://alice.com/#me', name: 'Alice', email: 'alice@alice.com' } - let account = UserAccount.from(options) + const account = UserAccount.from(options) expect(account.username).to.equal(options.username) expect(account.webId).to.equal(options.webId) expect(account.name).to.equal(options.name) @@ -24,14 +25,14 @@ describe('UserAccount', () => { describe('id getter', () => { it('should return null if webId is null', () => { - let account = new UserAccount() + const account = new UserAccount() expect(account.id).to.be.null }) it('should return the WebID uri minus the protocol and slashes', () => { - let webId = 'https://alice.example.com/profile/card#me' - let account = new UserAccount({ webId }) + const webId = 'https://alice.example.com/profile/card#me' + const account = new UserAccount({ webId }) expect(account.id).to.equal('alice.example.com/profile/card#me') }) diff --git a/test/unit/user-accounts-api-test.js b/test/unit/user-accounts-api-test.js index 32c909ed1..2f0aa7b3b 100644 --- a/test/unit/user-accounts-api-test.js +++ b/test/unit/user-accounts-api-test.js @@ -26,28 +26,28 @@ beforeEach(() => { describe('api/accounts/user-accounts', () => { describe('newCertificate()', () => { describe('in multi user mode', () => { - let multiuser = true - let resourceMapper = new ResourceMapper({ + const multiuser = true + const resourceMapper = new ResourceMapper({ rootUrl: 'https://localhost:8443/', includeHost: multiuser, rootPath: testAccountsDir }) - let store = new LDP({ multiuser, resourceMapper }) + const store = new LDP({ multiuser, resourceMapper }) it('should throw a 400 error if spkac param is missing', done => { - let options = { host, store, multiuser, authMethod: 'oidc' } - let accountManager = AccountManager.from(options) + const options = { host, store, multiuser, authMethod: 'oidc' } + const accountManager = AccountManager.from(options) - let req = { + const req = { body: { webid: 'https://alice.example.com/#me' }, session: { userId: 'https://alice.example.com/#me' }, get: () => { return 'https://example.com' } } - let res = HttpMocks.createResponse() + const res = HttpMocks.createResponse() - let newCertificate = api.newCertificate(accountManager) + const newCertificate = api.newCertificate(accountManager) newCertificate(req, res, (err) => { expect(err.status).to.equal(400) diff --git a/test/unit/utils-test.js b/test/unit/utils-test.js index 5dd7b87de..cfb6afcfb 100644 --- a/test/unit/utils-test.js +++ b/test/unit/utils-test.js @@ -59,7 +59,7 @@ describe('Utility functions', function () { describe('fullUrlForReq()', () => { it('should extract a fully-qualified url from an Express request', () => { - let req = { + const req = { protocol: 'https:', get: (host) => 'example.com', baseUrl: '/', @@ -78,11 +78,11 @@ describe('Utility functions', function () { }) it('should get a basic content type', () => { - assert.equal(utils.getContentType({'content-type': 'text/html'}), 'text/html') + assert.equal(utils.getContentType({ 'content-type': 'text/html' }), 'text/html') }) it('should get a content type without its charset', () => { - assert.equal(utils.getContentType({'content-type': 'text/html; charset=us-ascii'}), 'text/html') + assert.equal(utils.getContentType({ 'content-type': 'text/html; charset=us-ascii' }), 'text/html') }) }) @@ -94,12 +94,12 @@ describe('Utility functions', function () { it('should get a basic content type', () => { // eslint-disable-next-line no-undef - assert.equal(utils.getContentType(new Headers({'content-type': 'text/html'})), 'text/html') + assert.equal(utils.getContentType(new Headers({ 'content-type': 'text/html' })), 'text/html') }) it('should get a content type without its charset', () => { // eslint-disable-next-line no-undef - assert.equal(utils.getContentType(new Headers({'content-type': 'text/html; charset=us-ascii'})), 'text/html') + assert.equal(utils.getContentType(new Headers({ 'content-type': 'text/html; charset=us-ascii' })), 'text/html') }) }) }) diff --git a/test/utils.js b/test/utils.js index 59a31956a..214a261ff 100644 --- a/test/utils.js +++ b/test/utils.js @@ -35,7 +35,7 @@ exports.cp = function (src, dest) { exports.read = function (file) { return fs.readFileSync(path.join(__dirname, '/resources/' + file), { - 'encoding': 'utf8' + encoding: 'utf8' }) } @@ -63,9 +63,9 @@ exports.checkDnsSettings = function () { }) }) })) - .catch(() => { - throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`) - }) + .catch(() => { + throw new Error(`Expected HOSTS entries of 127.0.0.1 for ${TEST_HOSTS.join()}`) + }) } /**