diff options
| author | Ben Beltran <ben@nsovocal.com> | 2020-04-18 14:20:53 +0200 |
|---|---|---|
| committer | Ben Beltran <ben@nsovocal.com> | 2020-04-18 14:20:53 +0200 |
| commit | da393520c4a1b33bffdfe26974e817f2c65267d3 (patch) | |
| tree | 1c7b0999dbf235ee54b864167baefbd0422a3331 | |
| parent | e865f21be5685ef2fbc57e36460f8d6819e0fe34 (diff) | |
Update code for 2020
| -rw-r--r-- | .gitignore | 2 | ||||
| -rwxr-xr-x | bin/server.js | 52 | ||||
| -rw-r--r-- | ext/index.html | 7 | ||||
| -rw-r--r-- | lib/Conjugator.js | 86 | ||||
| -rw-r--r-- | lib/InsultGenerator.js | 211 | ||||
| -rw-r--r-- | package-lock.json | 1019 | ||||
| -rw-r--r-- | package.json | 8 |
7 files changed, 479 insertions, 906 deletions
@@ -25,3 +25,5 @@ build/Release # Dependency directory # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git node_modules + +.DS_Store diff --git a/bin/server.js b/bin/server.js index 00c23bb..13ae381 100755 --- a/bin/server.js +++ b/bin/server.js @@ -2,33 +2,27 @@ 'use strict'; -var fs = require('fs'); -var path = require('path'); +const Fs = require('fs'); +const Path = require('path'); -var Hapi = require('hapi'); +const Hapi = require('@hapi/hapi'); -var server = new Hapi.Server(); -var InsultGenerator = require('../lib/InsultGenerator'); +const InsultGenerator = require('../lib/InsultGenerator'); -var insults = new InsultGenerator({ - file : path.resolve(__dirname, '../ext/words.tab') -}); -var replaceRe = /{{insult}}/ -var template; +const replaceRe = /{{insult}}/ +let template; -server.connection({ - host: 'localhost', - port: 9200 +const server = Hapi.Server({ + host: 'localhost', + port: 9200 }); server.route({ method: 'GET', path:'/', - handler: function (request, reply) { - insults.generate().then(function (insult) { - reply(template.replace(replaceRe, insult)); - }); + async handler(request, reply) { + return template.replace(replaceRe, await InsultGenerator.generate()); } }); @@ -42,15 +36,14 @@ server.route({ method: 'GET', path:'/raw', handler: function (request, reply) { - insults.generate().then(function (insult) { - reply(insult); - }); + + return InsultGenerator.generate(); } }); // Preload stuff, then run -console.log("Loading template..."); -fs.readFile(path.resolve(__dirname, '../ext/index.html'), {encoding: 'utf8'}, function (err, contents) { +console.debug('Loading template...'); +Fs.readFile(Path.resolve(__dirname, '../ext/index.html'), {encoding: 'utf8'}, function (err, contents) { if (err) { console.error(err); @@ -58,14 +51,19 @@ fs.readFile(path.resolve(__dirname, '../ext/index.html'), {encoding: 'utf8'}, fu } template = contents; - console.log("Setting up insults...") - insults.generate().then(function (insult) { + console.log('Setting up insults...') + InsultGenerator.generate() + .then(function (insult) { + server.start(function() { - console.log('Server running at:', server.info.uri); + + console.debug('Server running at:', server.info.uri); }); - }).catch(function (err) { + }) + .catch(function (err) { + console.error(err); - console.log("Error running insults... bad augur"); + console.error('Error running insults... bad augur'); process.exit(1); }); }); diff --git a/ext/index.html b/ext/index.html index 768e45e..2c1ddcf 100644 --- a/ext/index.html +++ b/ext/index.html @@ -10,6 +10,13 @@ <style> * {padding: 0; margin: 0;} + body { + display: flex; + align-items: center; + height: 100vh; + width: 100vw; + } + .insult { font-size: 72px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; diff --git a/lib/Conjugator.js b/lib/Conjugator.js index 78dd713..c4e74f7 100644 --- a/lib/Conjugator.js +++ b/lib/Conjugator.js @@ -1,66 +1,54 @@ 'use strict'; +const Cheerio = require('cheerio'); +const Fetch = require('node-fetch'); -var Promise = require('bluebird'); -var cheerio = require('cheerio'); -require('neon'); -var request = require('request'); +const internals = { + kBaseUrl: 'http://www.spanishdict.com/conjugate/', + kSelector: 'table .ex-tip', + kThirdPersonPresentPosition: 10, + extractWord(node) { -var Conjugator = Class({}, "Conjugator")({ - prototype : { - _baseUrl: "http://www.spanishdict.com/conjugate/", - _selector: "table .ex-tip", + let word = ''; - init : function init(config) { - config = config || {}; + node.children.forEach(function (child) { - Object.keys(config).forEach(function (property) { - this[property] = config[property]; - }, this); - }, + if (child.type === 'text') { + word += child.data; + } else { + word += internals.extractWord(child); + } + }); - conjugate : function conjugate(verb) { - return new Promise(function (resolve, reject) { - request(this._baseUrl + verb, function (err, res, body) { - var $, result, finalVerb ; - if (err) { - return reject(err); - } - $ = cheerio.load(body); - result = $(this._selector)[10]; + word = word.split(',')[0]; // multiple conjugations, take 1 - if (!result) { - console.log("Verb not found: ", verb); - return reject(new Error("Not a valid verb")); - } + const components = word.split(' '); // some special cases have two words + // use the last, why not - finalVerb = this._extractWord(result); + return components[components.length - 1]; + } +}; - console.log(verb, finalVerb); - resolve(finalVerb); - }.bind(this)); - }.bind(this)); - }, +module.exports = { + async conjugate(verb) { - _extractWord : function _extractWord(node) { - var word = "", components; + console.debug(`Conjugating ${verb}`); - node.children.forEach(function (child) { - if (child.type === "text") { - word += child.data; - } else { - word += this._extractWord(child); - } - }, this); + const response = await Fetch(internals.kBaseUrl + verb); + const body = await response.text(); - word = word.split(",")[0]; // multiple conjugations, take 1 - components = word.split(" "); // some special cases have two words - // use the last, why not + const $ = Cheerio.load(body); + const result = $(internals.kSelector)[internals.kThirdPersonPresentPosition]; - return components[components.length - 1]; + if (!result) { + console.error('Verb not found: ', verb); + throw new Error('Not a valid verb'); } - } -}); -module.exports = Conjugator; + const plainTextVerb = internals.extractWord(result); + console.debug(verb, plainTextVerb); + + return plainTextVerb; + } +}; diff --git a/lib/InsultGenerator.js b/lib/InsultGenerator.js index 5c40651..af9408b 100644 --- a/lib/InsultGenerator.js +++ b/lib/InsultGenerator.js @@ -1,180 +1,113 @@ 'use strict'; +const Fs = require('fs'); +const Path = require('path'); -var fs = require('fs'); +const Conjugator = require('./Conjugator'); -var Promise = require('bluebird'); -require('neon'); +const internals = { + kMaxAttempts: 10, + kVowels: ['a', 'e', 'i', 'o', 'u'], + kWordFile: Path.resolve(__dirname, '../ext/words.tab'), + kWordRe: /^[0-9]+\-(n|v)\s+?lemma\s+?([^ ]+)/, -var Conjugator = require('./Conjugator'); + wordList: null, -var InsultGenerator = Class({}, "InsultGenerator")({ - prototype : { - file : null, - verbs: null, - nouns: null, + // Gets the list of words, key can be either nouns or verbs - _maxTries: 10, - _loaded: false, - _verbRe: /^[0-9]+\-v\s+?lemma\s+?([^ ]+)/, - _nounRe: /^[0-9]+\-n\s+?lemma\s+?([^ ]+)/, - _conjugator: null, + async getWordList(key) { - init : function init(config) { - config = config || {}; + internals.wordList = internals.wordList || await internals.readWordFile(); + return internals.wordList[key]; + }, - Object.keys(config).forEach(function (property) { - this[property] = config[property]; - }, this); + // Read the list of words and returns it - this._conjugator = new Conjugator(); - }, + readWordFile() { - generate : function generate(config) { - var selectedVerb; - return this._load() - .then(function () { - return this._getVerb(); - }.bind(this)).then(function (verb) { - return this._conjugateVerb(verb); - }.bind(this)).then(function (conjugatedVerb) { - selectedVerb = conjugatedVerb; - return this._getNoun(); - }.bind(this)).then(function (noun) { - return this._generateInsult(selectedVerb, noun); - }.bind(this)); - }, + return new Promise(function (resolve, reject) { - _load : function _load() { - return this._loadFile() - .then(function () { - return this._loadVerbs(); - }.bind(this)).then(function () { - return this._loadNouns(); - }.bind(this)); - }, + console.debug('Reading word file'); + Fs.readFile(internals.kWordFile, {encoding: 'utf8'}, function (err, contents) { - _loadFile : function _loadFile() { - return new Promise(function (resolve, reject) { - if (this._loaded) { - return resolve(); + if (err) { + return reject(err); } - fs.readFile(this.file, {encoding: 'utf8'}, function (err, contents) { - if (err) { - return reject(err); - } + const verbs = new Set(); + const nouns = new Set(); + const words = contents.split('\n'); - this._contents = contents; - this._loaded = true; - resolve(); - }.bind(this)); - }.bind(this)); - }, + console.debug(`Found ${words.length} words, categorizing`); - _loadVerbs : function _loadVerbs() { - return new Promise(function (resolve, reject) { - if (this.verbs) { - return resolve(); - } + words.forEach(function (line) { - this.verbs = []; - this._contents.split('\n').forEach(function (line) { - var matches; - matches = line.match(this._verbRe); + const matches = line.match(internals.kWordRe); if (matches) { - if (this.verbs.indexOf(matches[1]) === -1) { - this.verbs.push(matches[1]) + if (matches[1] === 'v') { + return verbs.add(matches[2]); } + + nouns.add(matches[2]); } - }, this); + }); - resolve(); - }.bind(this)); - }, + console.debug(`Nouns: ${nouns.size}, Verbs: ${verbs.size}`); - _loadNouns : function _loadNouns() { - return new Promise(function (resolve, reject) { - if (this.nouns) { - return resolve(); - } + resolve({ + verbs: [...verbs], + nouns: [...nouns] + }); + }); + }); + }, - this.nouns = []; - this._contents.split('\n').forEach(function (line) { - var matches; - matches = line.match(this._nounRe); + // Gets a conjugated verb - if (matches) { - if (this.nouns.indexOf(matches[1]) === -1) { - this.nouns.push(matches[1]) - } - } - }, this); + async getVerb() { - resolve(); - }.bind(this)); - }, + const verbs = await internals.getWordList('verbs'); + const verb = verbs[Math.floor(Math.random()*verbs.length)]; + return await Conjugator.conjugate(verb); + }, - _getVerb : function _getVerb() { - var index; - index = Math.floor(Math.random()*this.verbs.length); - return Promise.resolve(this.verbs[index]); - }, + // Gets a pluralized noun - _conjugateVerb : function _conjugateVerb(verb) { - return new Promise(function (resolve, reject) { - var tries; + async getNoun() { - tries = 0; + const nouns = await internals.getWordList('nouns'); + const noun = nouns[Math.floor(Math.random()*nouns.length)]; + return internals.pluralize(noun); + }, - var attemptConjugation = function attemptConjugation(verb, tries) { - if (tries > this._maxTries) { - return reject(new Error("Couldn't find a proper verb")); - }; + // Pluralizes a word - this._conjugator.conjugate(verb) - .then(function (conjugatedVerb) { - resolve(conjugatedVerb); - }) - .catch(function (err) { - this._getVerb().then(function (verb) { - attemptConjugation.bind(this)(verb, tries + 1); - }.bind(this)) - }.bind(this)); - }; + pluralize(noun) { - setTimeout(attemptConjugation.bind(this, verb, 0), 0); - }.bind(this)); - }, + const lastLetter = noun[noun.length - 1]; - _getNoun : function _getNoun() { - var index, noun; - index = Math.floor(Math.random()*this.nouns.length); - return Promise.resolve(this.nouns[index].toLowerCase()); - }, + if (lastLetter === 's') { + return noun; + } + + if (internals.kVowels.indexOf(lastLetter) >= 0) { + return noun + 's' + } - _generateInsult : function _generateInsult(verb, noun) { - return Promise.resolve(verb + this._pluralize(noun)); - }, + return noun + 'es'; + } +}; - // Super dumb pluralizer - _pluralize : function _pluralize(noun) { - var lastLetter; +module.exports = { - lastLetter = noun[noun.length - 1]; + // Generates an insult. - if (lastLetter === "s") { - return noun; - } + async generate() { - if (["a","e","i","o","u"].indexOf(lastLetter) >= 0) { - return noun + "s" - } + const verb = await internals.getVerb(); + const noun = await internals.getNoun(); - return noun + "es"; - } + return (verb + noun).toLowerCase(); } -}); - -module.exports = InsultGenerator; +}; diff --git a/package-lock.json b/package-lock.json index 31c38f5..a5c48dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,681 +4,410 @@ "lockfileVersion": 1, "requires": true, "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=" - }, - "asn1": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", - "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=" + "@hapi/accept": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.1.tgz", + "integrity": "sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x" + } }, - "assert-plus": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", - "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" + "@hapi/address": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.0.1.tgz", + "integrity": "sha512-0oEP5UiyV4f3d6cBL8F3Z5S7iWSX39Knnl0lY8i+6gfmmIBj44JCBNtcMgwyS+5v7j3VYavNay0NFHDS+UGQcw==", + "requires": { + "@hapi/hoek": "^9.0.0" + } }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "@hapi/ammo": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-5.0.1.tgz", + "integrity": "sha512-FbCNwcTbnQP4VYYhLNGZmA76xb2aHg9AMPiy18NZyWMG310P5KdFGyA9v2rm5ujrIny77dEEIkMOwl0Xv+fSSA==", "requires": { - "lodash": "^4.17.14" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@hapi/hoek": "9.x.x" } }, - "aws-sign2": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", - "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=" + "@hapi/b64": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-5.0.0.tgz", + "integrity": "sha512-ngu0tSEmrezoiIaNGG6rRvKOUkUuDdf4XTPnONHGYfSGRmDqPZX5oJL6HAdKTo1UQHECbdB4OzhWrfgVppjHUw==", + "requires": { + "@hapi/hoek": "9.x.x" + } }, - "bl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", - "integrity": "sha1-/FQhoo/UImA2w7OJGmaiW8ZNIm4=", + "@hapi/boom": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.0.tgz", + "integrity": "sha512-4nZmpp4tXbm162LaZT45P7F7sgiem8dwAh2vHWT6XX24dozNjGMg6BvKCRvtCUcmcXqeMIUqWN8Rc5X8yKuROQ==", "requires": { - "readable-stream": "~2.0.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - } + "@hapi/hoek": "9.x.x" } }, - "bluebird": { - "version": "2.9.34", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz", - "integrity": "sha1-L3tOyAIWMoqf3evfacjUlC/v99g=" + "@hapi/bounce": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-2.0.0.tgz", + "integrity": "sha512-JesW92uyzOOyuzJKjoLHM1ThiOvHPOLDHw01YV8yh5nCso7sDwJho1h0Ad2N+E62bZyz46TG3xhAi/78Gsct6A==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x" + } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "@hapi/bourne": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz", + "integrity": "sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==" }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "@hapi/call": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-8.0.0.tgz", + "integrity": "sha512-4xHIWWqaIDQlVU88XAnomACSoC7iWUfaLfdu2T7I0y+HFFwZUrKKGfwn6ik4kwKsJRMnOliG3UXsF8V/94+Lkg==", "requires": { - "hoek": "2.x.x" + "@hapi/address": "4.x.x", + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x" } }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + "@hapi/catbox": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-11.1.0.tgz", + "integrity": "sha512-FDEjfn26RZRyOEPeZdaAL7dRiAK5FOGuwTnTw0gxK30csAlKeOHsEnoIxnLIXx7QOS17eUaOk6+MiweWQM6Keg==", + "requires": { + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x", + "@hapi/joi": "17.x.x", + "@hapi/podium": "4.x.x" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "@hapi/catbox-memory": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-5.0.0.tgz", + "integrity": "sha512-ByuxVJPHNaXwLzbBv4GdTr6ccpe1nG+AfYt+8ftDWEJY7EWBWzD+Klhy5oPTDGzU26pNUh1e7fcYI1ILZRxAXQ==", "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" + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x" } }, - "cheerio": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz", - "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=", + "@hapi/content": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-5.0.2.tgz", + "integrity": "sha512-mre4dl1ygd4ZyOH3tiYBrOUBzV7Pu/EOs8VLGf58vtOEECWed8Uuw6B4iR9AN/8uQt42tB04qpVaMyoMQh0oMw==", "requires": { - "css-select": "~1.0.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "~3.8.1", - "lodash": "^3.2.0" + "@hapi/boom": "9.x.x" } }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "@hapi/cryptiles": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.0.0.tgz", + "integrity": "sha512-Yq43ti9N51Z7jbm0Q7YVCcofA+4Gh5wsBX/jZ++Z+FM8GYfBQ1WmI9ufZSL+BVX8vRxzDkdQ2fKoG6cxOQlnVQ==", "requires": { - "delayed-stream": "~1.0.0" + "@hapi/boom": "9.x.x" } }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "@hapi/file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-2.0.0.tgz", + "integrity": "sha512-WSrlgpvEqgPWkI18kkGELEZfXr0bYLtr16iIN4Krh9sRnzBZN6nnWxHFxtsnP684wueEySBbXPDg/WfA9xJdBQ==" }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "@hapi/formula": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz", + "integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==" }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "@hapi/hapi": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-19.1.1.tgz", + "integrity": "sha512-rpQzSs0XsHSF7usM4qdJJ0Bcmhs9stWhUW3OiamW33bw4qL8q3uEgUKB9KH8ODmluCAkkXOQ0X0Dh9t94E5VIw==", "requires": { - "boom": "2.x.x" + "@hapi/accept": "^5.0.1", + "@hapi/ammo": "^5.0.1", + "@hapi/boom": "9.x.x", + "@hapi/bounce": "2.x.x", + "@hapi/call": "8.x.x", + "@hapi/catbox": "11.x.x", + "@hapi/catbox-memory": "5.x.x", + "@hapi/heavy": "7.x.x", + "@hapi/hoek": "9.x.x", + "@hapi/joi": "17.x.x", + "@hapi/mimos": "5.x.x", + "@hapi/podium": "4.x.x", + "@hapi/shot": "5.x.x", + "@hapi/somever": "3.x.x", + "@hapi/statehood": "^7.0.2", + "@hapi/subtext": "^7.0.3", + "@hapi/teamwork": "4.x.x", + "@hapi/topo": "5.x.x" } }, - "css-select": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz", - "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=", + "@hapi/heavy": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-7.0.0.tgz", + "integrity": "sha512-n/nheUG6zNleWkjY+3fzV3VJIAumUCaa/WoTmurjqlYY5JgC5ZKOpvP7tWi8rXmKZhbcXgjH3fHFoM55LoBT7g==", "requires": { - "boolbase": "~1.0.0", - "css-what": "1.0", - "domutils": "1.4", - "nth-check": "~1.0.0" + "@hapi/boom": "9.x.x", + "@hapi/hoek": "9.x.x", + "@hapi/joi": "17.x.x" } }, - "css-what": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz", - "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w=" - }, - "ctype": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", - "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=" + "@hapi/hoek": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz", + "integrity": "sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw==" }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "@hapi/iron": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-6.0.0.tgz", + "integrity": "sha512-zvGvWDufiTGpTJPG1Y/McN8UqWBu0k/xs/7l++HVU535NLHXsHhy54cfEMdW7EjwKfbBfM9Xy25FmTiobb7Hvw==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "@hapi/b64": "5.x.x", + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/cryptiles": "5.x.x", + "@hapi/hoek": "9.x.x" } }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "@hapi/joi": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz", + "integrity": "sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==", "requires": { - "domelementtype": "1" + "@hapi/address": "^4.0.1", + "@hapi/formula": "^2.0.0", + "@hapi/hoek": "^9.0.0", + "@hapi/pinpoint": "^2.0.0", + "@hapi/topo": "^5.0.0" } }, - "domutils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz", - "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=", + "@hapi/mimos": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-5.0.0.tgz", + "integrity": "sha512-EVS6wJYeE73InTlPWt+2e3Izn319iIvffDreci3qDNT+t3lA5ylJ0/SoTaID8e0TPNUkHUSsgJZXEmLHvoYzrA==", "requires": { - "domelementtype": "1" + "@hapi/hoek": "9.x.x", + "mime-db": "1.x.x" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "@hapi/nigel": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-4.0.0.tgz", + "integrity": "sha512-Bqs1pjcDnDQo/XGoiCCNHWTFcMzPbz3L4KU04njeFQMzzEmsojMRX7TX+PezQYCMKtHJOtMg0bHxZyMGqYtbSA==", + "requires": { + "@hapi/hoek": "9.x.x", + "@hapi/vise": "4.x.x" + } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "@hapi/pez": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-5.0.2.tgz", + "integrity": "sha512-jr1lAm8mE7J2IBxvDIuDI1qy2aAsoaD2jxOUd/7JRg/Vmrzco8HdKhtz4fKk6KHU6zbbsAp5m5aSWWVTUrag7g==", + "requires": { + "@hapi/b64": "5.x.x", + "@hapi/boom": "9.x.x", + "@hapi/content": "^5.0.2", + "@hapi/hoek": "9.x.x", + "@hapi/nigel": "4.x.x" + } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "@hapi/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "@hapi/podium": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-4.1.0.tgz", + "integrity": "sha512-k/n0McAu8PvonfQRLyKKUvvdb+Gh/O5iAeIwv535Hpxw9B1qZcrYdZyWtHZ8O5PkA9/b/Kk+BdvtgcxeKMB/2g==", + "requires": { + "@hapi/hoek": "9.x.x", + "@hapi/joi": "17.x.x", + "@hapi/teamwork": "4.x.x" + } }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", + "@hapi/shot": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-5.0.0.tgz", + "integrity": "sha512-JXddnJkRh3Xhv9lY1tA+TSIUaoODKbdNIPL/M8WFvFQKOttmGaDeqTW5e8Gf01LtLI7L5DraLMULHjrK1+YNFg==", "requires": { - "async": "^2.0.1", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.11" + "@hapi/hoek": "9.x.x", + "@hapi/joi": "17.x.x" } }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "@hapi/somever": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-3.0.0.tgz", + "integrity": "sha512-Upw/kmKotC9iEmK4y047HMYe4LDKsE5NWfjgX41XNKmFvxsQL7OiaCWVhuyyhU0ShDGBfIAnCH8jZr49z/JzZA==", "requires": { - "is-property": "^1.0.2" + "@hapi/bounce": "2.x.x", + "@hapi/hoek": "9.x.x" } }, - "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=", + "@hapi/statehood": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-7.0.2.tgz", + "integrity": "sha512-+0VNxysQu+UYzkfvAXq3X4aN65TnUwiR7gsq2cQ/4Rq26nCJjHAfrkYReEeshU2hPmJ3m5QuaBzyDqRm8WOpyg==", "requires": { - "is-property": "^1.0.0" + "@hapi/boom": "9.x.x", + "@hapi/bounce": "2.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/cryptiles": "5.x.x", + "@hapi/hoek": "9.x.x", + "@hapi/iron": "6.x.x", + "@hapi/joi": "17.x.x" } }, - "hapi": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/hapi/-/hapi-9.2.0.tgz", - "integrity": "sha1-aBa1nThwEup84c4zZlWwK0YK40Y=", + "@hapi/subtext": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-7.0.3.tgz", + "integrity": "sha512-CekDizZkDGERJ01C0+TzHlKtqdXZxzSWTOaH6THBrbOHnsr3GY+yiMZC+AfNCypfE17RaIakGIAbpL2Tk1z2+A==", "requires": { - "accept": "1.x.x", - "ammo": "1.x.x", - "boom": "^2.5.x", - "call": "2.x.x", - "catbox": "6.x.x", - "catbox-memory": "1.x.x", - "cryptiles": "2.x.x", - "heavy": "3.x.x", - "hoek": "^2.14.x", - "iron": "2.x.x", - "items": "1.x.x", - "joi": "6.x.x", - "kilt": "^1.1.x", - "mimos": "2.x.x", - "peekaboo": "1.x.x", - "qs": "4.x.x", - "shot": "1.x.x", - "statehood": "2.x.x", - "subtext": "2.x.x", - "topo": "1.x.x" - }, - "dependencies": { - "accept": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/accept/-/accept-1.1.0.tgz", - "integrity": "sha1-x7VWfJmt5Kx8k38qm8HFZhYKMLU=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x" - } - }, - "ammo": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ammo/-/ammo-1.0.1.tgz", - "integrity": "sha1-j4rdFM1Jve3jurOj4OvK8h0D3os=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x" - } - }, - "boom": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.8.0.tgz", - "integrity": "sha1-MXvf1HAY/n3Xmw6dpz7+JEEZ/fE=", - "requires": { - "hoek": "2.x.x" - } - }, - "call": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/call/-/call-2.0.2.tgz", - "integrity": "sha1-nJgxq9B2lIb97oOkEUm4KbMtBsA=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x" - } - }, - "catbox": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/catbox/-/catbox-6.0.0.tgz", - "integrity": "sha1-6i8pT6Bemvx+IhDTI/XeU6OAQ+c=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x", - "joi": "6.x.x" - } - }, - "catbox-memory": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-1.1.2.tgz", - "integrity": "sha1-M8kYOjKzGUXuikhNDjw8u4Lq7Bo=", - "requires": { - "hoek": "2.x.x" - } - }, - "cryptiles": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz", - "integrity": "sha1-CeoXdbnhx95+YKmdQqtvCM4aEoU=", - "requires": { - "boom": "2.x.x" - } - }, - "heavy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/heavy/-/heavy-3.0.0.tgz", - "integrity": "sha1-/QEIdiExYy+IVIontVQSws9SKwA=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x", - "joi": "5.x.x" - } - }, - "hoek": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.14.0.tgz", - "integrity": "sha1-gSEWkfUqWoNa5J7b8eickANHaqQ=" - }, - "iron": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/iron/-/iron-2.1.3.tgz", - "integrity": "sha1-cbjzV9gGquA6kKdFuaqv/sfi3eQ=", - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x" - } - }, - "items": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/items/-/items-1.1.0.tgz", - "integrity": "sha1-rZ1VhAsimGDLPRYLMidMLUvZ4mI=" - }, - "joi": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-6.6.1.tgz", - "integrity": "sha1-NXR2aGFCb4xBGb9qgLU9C0ib9Qc=", - "requires": { - "hoek": "^2.2.x", - "isemail": "1.x.x", - "moment": "2.x.x", - "topo": "1.x.x" - }, - "dependencies": { - "isemail": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-1.1.1.tgz", - "integrity": "sha1-4Mj23D9HCX53dzlcaJYnGqJWw7U=" - }, - "moment": { - "version": "2.10.6", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.10.6.tgz", - "integrity": "sha1-bLIZZ8ecunsMpeZmRPFzZis++nc=" - } - } - }, - "kilt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/kilt/-/kilt-1.1.1.tgz", - "integrity": "sha1-d7SmFjyn+lshN6iMFzNCFuwj1ds=", - "requires": { - "hoek": "2.x.x" - } - }, - "mimos": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mimos/-/mimos-2.0.2.tgz", - "integrity": "sha1-wyQXF+dblZkr54esfdbbGptTmx4=", - "requires": { - "hoek": "2.x.x", - "mime-db": "1.x.x" - }, - "dependencies": { - "mime-db": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz", - "integrity": "sha1-UxfigiTAivHUhPYJc904a6jzieA=" - } - } - }, - "peekaboo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/peekaboo/-/peekaboo-1.0.0.tgz", - "integrity": "sha1-wNspJq1lTSygH3ymUKtFkadk/EI=" - }, - "qs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", - "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" - }, - "shot": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/shot/-/shot-1.6.0.tgz", - "integrity": "sha1-jIo2fgyIyI/O1d6y7aWUW0avErI=", - "requires": { - "hoek": "2.x.x" - } - }, - "statehood": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/statehood/-/statehood-2.1.1.tgz", - "integrity": "sha1-AfFwtmxeklqvZ5qdMiulkYb8AAk=", - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "iron": "2.x.x", - "items": "1.x.x", - "joi": "6.x.x" - } - }, - "subtext": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/subtext/-/subtext-2.0.0.tgz", - "integrity": "sha1-I5lQ6SCBQ/FUirJeHJV5vbaNiU4=", - "requires": { - "boom": "2.x.x", - "content": "1.x.x", - "hoek": "2.x.x", - "pez": "1.x.x", - "qs": "4.x.x", - "wreck": "6.x.x" - }, - "dependencies": { - "content": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content/-/content-1.0.2.tgz", - "integrity": "sha1-y37fMq/vF8SKz9vSH/mMIzFa6CQ=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x" - } - }, - "pez": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pez/-/pez-1.0.0.tgz", - "integrity": "sha1-hEMYpc5wku7d/6KV4YB5rHefoBg=", - "requires": { - "b64": "2.x.x", - "boom": "2.x.x", - "content": "1.x.x", - "hoek": "2.x.x", - "nigel": "1.x.x" - }, - "dependencies": { - "b64": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/b64/-/b64-2.0.0.tgz", - "integrity": "sha1-tZlbJPR+v9nxMQF6bntdZHVvtvM=", - "requires": { - "hoek": "2.x.x" - } - }, - "nigel": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nigel/-/nigel-1.0.1.tgz", - "integrity": "sha1-RjmJr4gSePuqHTzJOCPb0XtDYKE=", - "requires": { - "hoek": "2.x.x", - "vise": "1.x.x" - }, - "dependencies": { - "vise": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vise/-/vise-1.0.0.tgz", - "integrity": "sha1-KDRb5N5aNB4V/SgW/Z6j5zA+jfM=", - "requires": { - "hoek": "2.x.x" - } - } - } - } - } - }, - "wreck": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/wreck/-/wreck-6.1.0.tgz", - "integrity": "sha1-DLV9Jkk8LGN91Dkizv5xLGmVSM8=", - "requires": { - "boom": "2.x.x", - "hoek": "2.x.x" - } - } - } - }, - "topo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-1.0.3.tgz", - "integrity": "sha1-576uXqSQZ9dp5Sjn40ZC7e1/Llo=", - "requires": { - "hoek": "2.x.x" - } - } + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/content": "^5.0.2", + "@hapi/file": "2.x.x", + "@hapi/hoek": "9.x.x", + "@hapi/pez": "^5.0.1", + "@hapi/wreck": "17.x.x" } }, - "har-validator": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "integrity": "sha1-2DhCsOtMQ1lgrrEIoGejqpTA7rI=", + "@hapi/teamwork": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-4.0.0.tgz", + "integrity": "sha512-V6xYOrr5aFv/IJqNPneaYCu8vuGTKisamqHVRS3JJnbZr18TrpXdsJOYk9pjPhFti+M2YETPebQLUr820N5NoQ==" + }, + "@hapi/topo": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz", + "integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==", "requires": { - "bluebird": "^2.9.30", - "chalk": "^1.0.0", - "commander": "^2.8.1", - "is-my-json-valid": "^2.12.0" + "@hapi/hoek": "^9.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "@hapi/vise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-4.0.0.tgz", + "integrity": "sha512-eYyLkuUiFZTer59h+SGy7hUm+qE9p+UemePTHLlIWppEd+wExn3Df5jO04bFQTm7nleF5V8CtuYQYb+VFpZ6Sg==", "requires": { - "ansi-regex": "^2.0.0" + "@hapi/hoek": "9.x.x" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "@hapi/wreck": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-17.0.0.tgz", + "integrity": "sha512-d8lqCinbKyDByn7GzJDRDbitddhIEydNm44UcAMejfhEH3o4IYvKYq6K8cAqXbilXPuvZc0ErlUOg9SDdgRtMw==", "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "@hapi/boom": "9.x.x", + "@hapi/bourne": "2.x.x", + "@hapi/hoek": "9.x.x" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "@types/node": { + "version": "13.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.0.tgz", + "integrity": "sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A==" }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "cheerio": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - }, - "dependencies": { - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" - } + "css-select": "~1.2.0", + "dom-serializer": "~0.1.1", + "entities": "~1.1.1", + "htmlparser2": "^3.9.1", + "lodash": "^4.15.0", + "parse5": "^3.0.1" } }, - "http-signature": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz", - "integrity": "sha1-F5bPZ6ABrVzWhJ3KCZFIXwkIn+Y=", + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { - "asn1": "0.1.11", - "assert-plus": "^0.1.5", - "ctype": "0.5.3" + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } }, - "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==" + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, - "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==", + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "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" + "domelementtype": "1" } }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "neon": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/neon/-/neon-2.0.0.tgz", - "integrity": "sha1-63AJLFf7A+IgHDaCrtW1SrntExY=" - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "nth-check": { "version": "1.0.2", @@ -688,123 +417,41 @@ "boolbase": "~1.0.0" } }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz", - "integrity": "sha1-wx2bdOwn33XlQ6hseHKO2NRiNgc=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "@types/node": "*" } }, - "request": { - "version": "2.61.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.61.0.tgz", - "integrity": "sha1-aXPLKslIhfAmk/VU7sZEgdYBP58=", + "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": { - "aws-sign2": "~0.5.0", - "bl": "~1.0.0", - "caseless": "~0.11.0", - "combined-stream": "~1.0.1", - "extend": "~3.0.0", - "forever-agent": "~0.6.0", - "form-data": "~1.0.0-rc1", - "har-validator": "^1.6.1", - "hawk": "~3.1.0", - "http-signature": "~0.11.0", - "isstream": "~0.1.1", - "json-stringify-safe": "~5.0.0", - "mime-types": "~2.1.2", - "node-uuid": "~1.4.0", - "oauth-sign": "~0.8.0", - "qs": "~4.0.0", - "stringstream": "~0.0.4", - "tough-cookie": ">=0.12.0", - "tunnel-agent": "~0.4.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "requires": { - "hoek": "2.x.x" - } + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==" - }, - "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=" - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "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": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "safe-buffer": "~5.2.0" } }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } } diff --git a/package.json b/package.json index db0decf..22a3daa 100644 --- a/package.json +++ b/package.json @@ -19,10 +19,8 @@ }, "homepage": "https://github.com/rbdr/generador-de-insultos", "dependencies": { - "bluebird": "2.9.x", - "cheerio": "0.19.x", - "hapi": "9.2.x", - "neon": "2.0.x", - "request": "2.61.x" + "cheerio": "^1.0.0-rc.3", + "@hapi/hapi": "^19.1.1", + "node-fetch": "^2.6.0" } } |