├── screenshots ├── email-ui.png └── inbound-screenshot-no-plugin.png ├── src ├── index.js ├── components │ ├── MarkdownMessageBubble │ │ ├── MarkdownMessageBubble.Styles.js │ │ └── MarkdownMessageBubble.jsx │ └── CustomMessageInput │ │ ├── CustomMessageInput.jsx │ │ └── CustomMessageInput.Styles.js └── EmailPlugin.js ├── server ├── .env.example ├── package.json ├── cleanup.js ├── utils.js ├── extractHtmlContent.js ├── index.js └── package-lock.json ├── public ├── plugins.json ├── plugins.local.build.json ├── appConfig.example.js └── index.html ├── craco.config.js ├── .gitignore ├── package.json └── README.md /screenshots/email-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/twilio-professional-services/plugin-email/HEAD/screenshots/email-ui.png -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import * as FlexPlugin from 'flex-plugin'; 2 | import EmailPlugin from './EmailPlugin'; 3 | 4 | FlexPlugin.loadPlugin(EmailPlugin); 5 | -------------------------------------------------------------------------------- /screenshots/inbound-screenshot-no-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/twilio-professional-services/plugin-email/HEAD/screenshots/inbound-screenshot-no-plugin.png -------------------------------------------------------------------------------- /server/.env.example: -------------------------------------------------------------------------------- 1 | PORT=8080 2 | ACCOUNT_SID= 3 | AUTH_TOKEN= 4 | PROGRAMABLE_CHAT_SERVICE= 5 | WORKSPACE_SID= 6 | WORKFLOW_SID= 7 | FLEX_FLOW_SID= 8 | SG_MAIL_KEY= 9 | FROM_ADDRESS= 10 | -------------------------------------------------------------------------------- /public/plugins.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "plugin-email", 4 | "version": "0.0.0", 5 | "class": "EmailPlugin", 6 | "requires": [ 7 | { 8 | "@twilio/flex-ui": "^1" 9 | } 10 | ], 11 | "src": "http://localhost:3000/plugin-email.js" 12 | } 13 | ] -------------------------------------------------------------------------------- /public/plugins.local.build.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "EmailPlugin", 4 | "version": "0.0.0", 5 | "class": "EmailPlugin", 6 | "requires": [ 7 | { 8 | "@twilio/flex-ui": "^1" 9 | } 10 | ], 11 | "src": "http://127.0.0.1:8085" 12 | } 13 | ] 14 | -------------------------------------------------------------------------------- /public/appConfig.example.js: -------------------------------------------------------------------------------- 1 | // your account sid 2 | var accountSid = 'accountSid'; 3 | 4 | // set to /plugins.json for local dev 5 | // set to /plugins.local.build.json for testing your build 6 | // set to "" for the default live plugin loader 7 | var pluginServiceUrl = '/plugins.json'; 8 | 9 | var appConfig = { 10 | pluginService: { 11 | enabled: true, 12 | url: pluginServiceUrl, 13 | }, 14 | sso: { 15 | accountSid: accountSid 16 | }, 17 | ytica: false, 18 | logLevel: 'debug', 19 | showSupervisorDesktopView: true, 20 | }; 21 | -------------------------------------------------------------------------------- /craco.config.js: -------------------------------------------------------------------------------- 1 | const config = require('craco-config-flex-plugin'); 2 | 3 | module.exports = { 4 | ...config, 5 | plugins: [ 6 | // Customize app configuration (such as webpack, devServer, linter, etc) by creating a Craco plugin. 7 | // See https://github.com/sharegate/craco/tree/master/packages/craco#develop-a-plugin for more detail. 8 | // 9 | // Please note that Craco plugins have nothing to do with Flex plugins; it's just a naming coincidence. 10 | // Changes to this file are optional, you will not need to modify it for normal Flex Plugin development. 11 | ] 12 | }; 13 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "twilio-flex-email-server", 3 | "version": "1.0.0", 4 | "description": "demo server for ingesting Twilio SendGrid e-mails and sending to Twilio Flex", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "Martin Amps", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@sendgrid/mail": "^7.2.2", 13 | "axios": "^0.19.2", 14 | "body-parser": "^1.19.0", 15 | "cheerio": "^1.0.0-rc.3", 16 | "dotenv": "^8.2.0", 17 | "email-addresses": "^3.1.0", 18 | "express": "^4.17.1", 19 | "multer": "^1.4.2", 20 | "parse-headers": "^2.0.3", 21 | "showdown": "^1.9.1", 22 | "string": "^3.3.3", 23 | "turndown": "^6.0.0", 24 | "twilio": "^3.48.1" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /server/cleanup.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | 3 | const client = require('twilio')(process.env.ACCOUNT_SID, process.env.AUTH_TOKEN); 4 | 5 | console.log('cleaning up taskrouter tasks'); 6 | 7 | client.taskrouter.workspaces(process.env.WORKSPACE_SID) 8 | .tasks 9 | .list({limit: 500}) 10 | .then(tasks => { 11 | tasks.forEach(task => { 12 | task.remove().then(() => console.log('removed', task.sid)); 13 | }); 14 | }).catch(e => console.error('failed to cleanup tasks', e)); 15 | 16 | console.log('cleaning up chat channels'); 17 | 18 | client.chat.services(process.env.PROGRAMABLE_CHAT_SERVICE) 19 | .channels 20 | .list({limit: 500}) 21 | .then(channels => { 22 | channels.forEach(channel => { 23 | channel.remove().then(() => console.log('removed', channel.sid)); 24 | }); 25 | }).catch(e => console.error('failed to cleanup chat', e)); 26 | 27 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 |{{task.taskChannelUniqueName}}
` 58 | + `38 | // Zoho iOS: ---- On Sun, 17 Nov 2019 10:29:31 -0800 nemo.macnaught@outlook.comwrote ---- 39 | ]; 40 | 41 | // These are the Cherio/Jquery selectors that identify signatures 42 | const signatureSelectors = [ 43 | '.gmail_signature', // Gmail Desktop Web Client 44 | '.x-apple-signature', 45 | '[data-signature-widget]', // Mail.ru Desktop Web Client 46 | '#mail-app-auto-default-signature', // Mail.ru iOS App 47 | '.ms-outlook-ios-signature', // Outlook iOS App 48 | 'ms-outlook-mobile-signature', // Outlook Android App 49 | '#composer_signature', // Samsung Mail Android App 50 | 'a:contains("Sent from Yahoo Mail for iPhone")', // Yahoo iOS App signature nag 51 | 'div[name="messageSignatureSection"]', // Spark iOS App 52 | '#__aol_mail_signature__', // AOL iOS App 53 | '#OutlookSignature', // Outlook 54 | 'div.moz-signature', // Thunderbird 55 | 'div#Zm-_Id_-Sgn', // Zoho Desktop Browser 56 | ]; 57 | 58 | const regexp = new RegExp(attributionRegExp.join("|"), 'gm'); 59 | 60 | module.exports = function extractHtmlContent(htmlEmail) { 61 | let $ = cheerio.load(htmlEmail); 62 | 63 | // Remove all the signatures which can be selected with HTML. 64 | signatureSelectors.forEach(signatureSelector => { 65 | $(signatureSelector).remove(); 66 | }); 67 | 68 | // Order matters here. Remove the HTML that points to other things you want to remove last. 69 | $('div.gmail_quote').remove(); // Gmail 70 | $('.yahoo-quoted-begin').nextAll().remove(); // Yahoo iOS App, removes everything after the attribution 71 | $('.yahoo-quoted-begin').remove(); // Yahoo iOS App, removes the attribution 72 | $('#composeWebView_previouse_content').remove(); // Mail.ru iOS App 73 | $('#divRplyFwdMsg').nextAll().remove(); // Outlook Desktop Browser 74 | $('#divRplyFwdMsg').prev('hr').remove(); // Outlook iOS App 75 | $('#divRplyFwdMsg').remove(); // Outlook Desktop Browser 76 | $('div[name="messageReplySection"]').remove(); // Spark iOS App 77 | $('div.device_aol_et_org_dt_dd_quote').nextAll().remove(); // AOL Android App 78 | $('div.aolmail_replyHeader').nextAll().remove(); // AOL iOS App, removes everything after the attribution 79 | $('div.aolmail_replyHeader').remove(); // AOL iOS App, removes the attribution 80 | 81 | $('blockquote[cite^="mid"]').remove(); // Thunderbird Desktop thread history 82 | $('div.moz-cite-prefix').remove(); // Thunderbird Attribution 83 | 84 | $('blockquote.tutanota_quote').remove(); // Tutanota Desktop Browser. Note, this isn't good enough to pass the test. 85 | 86 | $('div.replyHeader').nextUntil('blockquote').next().remove(); // Zoho iOS App 87 | $('div.replyHeader').remove(); // Zoho iOS Attribution 88 | 89 | $('div.zmail_extra').remove(); // ZohoDesktop Browser Thread History 90 | 91 | $('div#edo-original').remove(); // Edison Mail iOS Thread History 92 | 93 | // Making our own plaintext because the email's plaintext version may be wrapped to less than 78 characters. 94 | // Learn more in http://www.rfc-editor.org/rfc/rfc2822.txt section 2.2.1 95 | let turndownService = new TurndownService(); 96 | let markdown = turndownService.turndown($('body').html() 97 | .replace(/^-- ?\n/g, '\n')); // TODO: This is a sloppy way to remove the remaining '--' before the signatures. 98 | 99 | return markdown.split(regexp)[0].trim() 100 | .replace(/\s+\n+/g, '\n\n'); // TODO: This can be done better. 101 | } 102 | -------------------------------------------------------------------------------- /server/index.js: -------------------------------------------------------------------------------- 1 | require('dotenv').config(); 2 | 3 | // Our comms dependencies 4 | const axios = require('axios'); 5 | const sgMail = require('@sendgrid/mail'); 6 | const twilio = require('twilio')(process.env.ACCOUNT_SID, process.env.AUTH_TOKEN); 7 | const utils = require('./utils'); 8 | const extractHtmlContent = require('./extractHtmlContent.js'); 9 | 10 | sgMail.setApiKey(process.env.SG_MAIL_KEY); 11 | 12 | // Express setup 13 | const express = require('express'); 14 | const app = express(); 15 | const bodyParser = require('body-parser'); 16 | const multer = require('multer'); 17 | const fs = require('fs'); 18 | 19 | // markdown <> html converter 20 | const showdown = require('showdown'); 21 | const showdownConverter = new showdown.Converter(); 22 | 23 | app.use(bodyParser.urlencoded({ 24 | extended: true 25 | })); 26 | 27 | 28 | 29 | app.use('/i/', express.static('attachments')); 30 | 31 | /* 32 | Handling emails from the SendGrid Inbound Parse webhook 33 | Sends them into Flex and creates a task 34 | Note: Demo purposes only. No security (eg: signature validation), validation or sanity checking here.. 35 | */ 36 | app.post('/inbound', multer().any(), (req, res) => { 37 | console.log('received inbound email'); 38 | 39 | const email = req.body; 40 | const parsedHeaders = utils.getParsedHeaders(email.headers); 41 | const fromAddress = parsedHeaders.from.address; 42 | const fromName = parsedHeaders.from.name; 43 | 44 | const subject = parsedHeaders.subject.replace(/^(?:[rR][Ee][(\[]?\d?[\])]?:\s?)+/gm, ''); 45 | let html = email.html; 46 | let markdown = email.text; 47 | 48 | try { 49 | const attachments = JSON.parse(email['attachment-info']); 50 | req.files.forEach(file => { 51 | const attachment = attachments[file.fieldname]; 52 | if (!attachment) { 53 | console.log('file not found', file); 54 | return; 55 | } 56 | 57 | const ext = attachment['filename'].split('.').pop(); 58 | fs.writeFileSync(`./attachments/${attachment['content-id']}.${ext}`, file.buffer); 59 | const escapedCid = 'cid\\:' + attachment['content-id'].replace(/-/g, '\\-'); 60 | // Note: assumes https always 61 | html = html.replace(new RegExp(escapedCid, 'g'), `https://${base}/i/${attachment['content-id']}.${ext}`); 62 | }); 63 | } catch (e) {} 64 | 65 | try { 66 | markdown = markdown.replace('Sent from my iPhone', ''); 67 | if (html && html.length) { 68 | markdown = extractHtmlContent(html); 69 | } 70 | } catch (e) { 71 | console.error('failed to convert html to markdown', e); 72 | } 73 | 74 | const threadID = fromAddress; 75 | const uniqueName = `${fromAddress}:${subject}`; 76 | 77 | const channelArgs = { 78 | flexFlowSid: process.env.FLEX_FLOW_SID, 79 | identity: fromAddress, 80 | chatUniqueName: uniqueName, 81 | chatUserFriendlyName: fromAddress, 82 | chatFriendlyName: subject, 83 | target: uniqueName, 84 | preEngagementData: JSON.stringify({ 85 | threadID, 86 | fromName, 87 | fromAddress, 88 | subject 89 | }) 90 | }; 91 | 92 | twilio.flexApi.channel.create(channelArgs).then(channel => { 93 | console.log('got chat channel', channel.sid); 94 | 95 | getChannel(channel.sid).then(channel => { 96 | twilio.chat.services(process.env.PROGRAMABLE_CHAT_SERVICE) 97 | .channels(channel.sid) 98 | .messages 99 | .create({ 100 | body: markdown, 101 | from: fromAddress, 102 | messageId: parsedHeaders['message-id'], 103 | inReplyTo: parsedHeaders['in-reply-to'], 104 | contentType: parsedHeaders['content-type'] 105 | }).then(() => { 106 | let attrs = JSON.parse(channel.attributes) || {}; 107 | 108 | utils.checkTaskPending(twilio, attrs.taskSid).then(pending => { 109 | if (pending) { 110 | console.log('not creating a new task because one is in progress'); 111 | } else { 112 | utils.createTask(twilio, channel.sid, fromAddress) 113 | .then(task => { 114 | console.log('created task', task.sid); 115 | 116 | attrs.taskSid = task.sid; 117 | channel.update({ 118 | attributes: JSON.stringify(attrs) 119 | }) 120 | .then(() => console.log('updated channel attributes to', attrs)) 121 | .catch(e => console.error('failed to update channel attributes', e)); 122 | }) 123 | .catch(e => console.error('failed to create task', e)); 124 | } 125 | }).catch(e => console.error('failed to send message to flex', e)); 126 | }).catch(e => console.error('cannot convert inbound email to chat because channel doesn\'t exist', e)); 127 | }).catch(e => console.error('failed to create channel', e.response.data)); 128 | 129 | res.sendStatus(200); 130 | }); 131 | }); 132 | 133 | app.post('/flexflow', (req, res) => { 134 | console.log('got flexflow webhook', req.body); 135 | 136 | if (req.body.Source === 'SDK') { 137 | console.log('sending e-mail'); 138 | 139 | getChannel(req.body.ChannelSid).then(channel => { 140 | const attrs = JSON.parse(channel.attributes); 141 | console.log('got channel attrs', attrs); 142 | 143 | const html = showdownConverter.makeHtml(req.body.Body); 144 | const msg = { 145 | to: attrs.pre_engagement_data.fromAddress, 146 | from: process.env.FROM_ADDRESS, 147 | subject: 'RE: ' + attrs.pre_engagement_data.subject, 148 | text: req.body.Body, 149 | html: html 150 | }; 151 | 152 | sgMail.send(msg).then(e => { 153 | console.log('sent email', e); 154 | }).catch(e => { 155 | console.error('failed to send email', e); 156 | }) 157 | }); 158 | 159 | res.sendStatus(200); 160 | } 161 | }); 162 | 163 | const getChannel = (channelSid) => { 164 | return twilio.chat.services(process.env.PROGRAMABLE_CHAT_SERVICE) 165 | .channels(channelSid) 166 | .fetch(); 167 | } 168 | 169 | app.listen(process.env.PORT, () => console.log(`e-mail server listening on port ${process.env.PORT}`)); 170 | -------------------------------------------------------------------------------- /src/components/CustomMessageInput/CustomMessageInput.Styles.js: -------------------------------------------------------------------------------- 1 | import { default as styled } from 'react-emotion'; 2 | 3 | // TODO: globally import via import 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css'; 4 | 5 | export default styled('div')` 6 | .editorClassName { 7 | min-height: 125px !important; 8 | border: 1px solid #eee; 9 | margin-top: -6px; 10 | } 11 | 12 | .rdw-option-wrapper{border:1px solid #f1f1f1;padding:5px;min-width:25px;height:20px;border-radius:2px;margin:0 4px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;text-transform:capitalize}.rdw-option-wrapper:hover{box-shadow:1px 1px 0 #bfbdbd}.rdw-option-wrapper:active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-option-active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-option-disabled{opacity:.3;cursor:default}.rdw-dropdown-wrapper{height:30px;background:#fff;cursor:pointer;border:1px solid #f1f1f1;border-radius:2px;margin:0 3px;text-transform:capitalize;background:#fff}.rdw-dropdown-wrapper:focus{outline:0}.rdw-dropdown-wrapper:hover{box-shadow:1px 1px 0 #bfbdbd;background-color:#fff}.rdw-dropdown-wrapper:active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-dropdown-carettoopen{height:0;width:0;position:absolute;top:35%;right:10%;border-top:6px solid #000;border-left:5px solid transparent;border-right:5px solid transparent}.rdw-dropdown-carettoclose{height:0;width:0;position:absolute;top:35%;right:10%;border-bottom:6px solid #000;border-left:5px solid transparent;border-right:5px solid transparent}.rdw-dropdown-selectedtext{display:flex;position:relative;height:100%;align-items:center;padding:0 5px}.rdw-dropdown-optionwrapper{z-index:100;position:relative;border:1px solid #f1f1f1;width:98%;background:#fff;border-radius:2px;margin:0;padding:0;max-height:250px;overflow-y:scroll}.rdw-dropdown-optionwrapper:hover{box-shadow:1px 1px 0 #bfbdbd;background-color:#fff}.rdw-dropdownoption-default{min-height:25px;display:flex;align-items:center;padding:0 5px}.rdw-dropdownoption-highlighted{background:#f1f1f1}.rdw-dropdownoption-active{background:#f5f5f5}.rdw-dropdownoption-disabled{opacity:.3;cursor:default}.rdw-inline-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-inline-dropdown{width:50px}.rdw-inline-dropdownoption{height:40px;display:flex;justify-content:center}.rdw-block-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-block-dropdown{width:110px}.rdw-fontsize-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-fontsize-dropdown{min-width:40px}.rdw-fontsize-option{display:flex;justify-content:center}.rdw-fontfamily-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-fontfamily-dropdown{width:115px}.rdw-fontfamily-placeholder{white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.rdw-fontfamily-optionwrapper{width:140px}.rdw-list-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-list-dropdown{width:50px;z-index:90}.rdw-list-dropdownOption{height:40px;display:flex;justify-content:center}.rdw-text-align-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-text-align-dropdown{width:50px;z-index:90}.rdw-text-align-dropdownOption{height:40px;display:flex;justify-content:center}.rdw-right-aligned-block{text-align:right}.rdw-left-aligned-block{text-align:left!important}.rdw-center-aligned-block{text-align:center!important}.rdw-justify-aligned-block{text-align:justify!important}.rdw-right-aligned-block>div{display:inline-block}.rdw-left-aligned-block>div{display:inline-block}.rdw-center-aligned-block>div{display:inline-block}.rdw-justify-aligned-block>div{display:inline-block}.rdw-colorpicker-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-colorpicker-modal{position:absolute;top:35px;left:5px;display:flex;flex-direction:column;width:175px;height:175px;border:1px solid #f1f1f1;padding:15px;border-radius:2px;z-index:100;background:#fff;box-shadow:3px 3px 5px #bfbdbd}.rdw-colorpicker-modal-header{display:flex;padding-bottom:5px}.rdw-colorpicker-modal-style-label{font-size:15px;width:50%;text-align:center;cursor:pointer;padding:0 10px 5px}.rdw-colorpicker-modal-style-label-active{border-bottom:2px solid #0a66b7}.rdw-colorpicker-modal-options{margin:5px auto;display:flex;width:100%;height:100%;flex-wrap:wrap;overflow:scroll}.rdw-colorpicker-cube{width:22px;height:22px;border:1px solid #f1f1f1}.rdw-colorpicker-option{margin:3px;padding:0;min-height:20px;border:none;width:22px;height:22px;min-width:22px;box-shadow:1px 2px 1px #bfbdbd inset}.rdw-colorpicker-option:hover{box-shadow:1px 2px 1px #bfbdbd}.rdw-colorpicker-option:active{box-shadow:-1px -2px 1px #bfbdbd}.rdw-colorpicker-option-active{box-shadow:0 0 2px 2px #bfbdbd}.rdw-link-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-link-dropdown{width:50px}.rdw-link-dropdownOption{height:40px;display:flex;justify-content:center}.rdw-link-dropdownPlaceholder{margin-left:8px}.rdw-link-modal{position:absolute;top:35px;left:5px;display:flex;flex-direction:column;width:235px;height:205px;border:1px solid #f1f1f1;padding:15px;border-radius:2px;z-index:100;background:#fff;box-shadow:3px 3px 5px #bfbdbd}.rdw-link-modal-label{font-size:15px}.rdw-link-modal-input{margin-top:5px;border-radius:2px;border:1px solid #f1f1f1;height:25px;margin-bottom:15px;padding:0 5px}.rdw-link-modal-input:focus{outline:0}.rdw-link-modal-buttonsection{margin:0 auto}.rdw-link-modal-target-option{margin-bottom:20px}.rdw-link-modal-target-option>span{margin-left:5px}.rdw-link-modal-btn{margin-left:10px;width:75px;height:30px;border:1px solid #f1f1f1;border-radius:2px;cursor:pointer;background:#fff;text-transform:capitalize}.rdw-link-modal-btn:hover{box-shadow:1px 1px 0 #bfbdbd}.rdw-link-modal-btn:active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-link-modal-btn:focus{outline:0!important}.rdw-link-modal-btn:disabled{background:#ece9e9}.rdw-link-dropdownoption{height:40px;display:flex;justify-content:center}.rdw-history-dropdown{width:50px}.rdw-embedded-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-embedded-modal{position:absolute;top:35px;left:5px;display:flex;flex-direction:column;width:235px;height:180px;border:1px solid #f1f1f1;padding:15px;border-radius:2px;z-index:100;background:#fff;justify-content:space-between;box-shadow:3px 3px 5px #bfbdbd}.rdw-embedded-modal-header{font-size:15px;display:flex}.rdw-embedded-modal-header-option{width:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;flex-direction:column}.rdw-embedded-modal-header-label{width:95px;border:1px solid #f1f1f1;margin-top:5px;background:#6eb8d4;border-bottom:2px solid #0a66b7}.rdw-embedded-modal-link-section{display:flex;flex-direction:column}.rdw-embedded-modal-link-input{width:88%;height:35px;margin:10px 0;border:1px solid #f1f1f1;border-radius:2px;font-size:15px;padding:0 5px}.rdw-embedded-modal-link-input-wrapper{display:flex;align-items:center}.rdw-embedded-modal-link-input:focus{outline:0}.rdw-embedded-modal-btn-section{display:flex;justify-content:center}.rdw-embedded-modal-btn{margin:0 3px;width:75px;height:30px;border:1px solid #f1f1f1;border-radius:2px;cursor:pointer;background:#fff;text-transform:capitalize}.rdw-embedded-modal-btn:hover{box-shadow:1px 1px 0 #bfbdbd}.rdw-embedded-modal-btn:active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-embedded-modal-btn:focus{outline:0!important}.rdw-embedded-modal-btn:disabled{background:#ece9e9}.rdw-embedded-modal-size{align-items:center;display:flex;margin:8px 0;justify-content:space-between}.rdw-embedded-modal-size-input{width:80%;height:20px;border:1px solid #f1f1f1;border-radius:2px;font-size:12px}.rdw-embedded-modal-size-input:focus{outline:0}.rdw-emoji-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-emoji-modal{overflow:auto;position:absolute;top:35px;left:5px;display:flex;flex-wrap:wrap;width:235px;height:180px;border:1px solid #f1f1f1;padding:15px;border-radius:2px;z-index:100;background:#fff;box-shadow:3px 3px 5px #bfbdbd}.rdw-emoji-icon{margin:2.5px;height:24px;width:24px;cursor:pointer;font-size:22px;display:flex;justify-content:center;align-items:center}.rdw-spinner{display:flex;align-items:center;justify-content:center;height:100%;width:100%}.rdw-spinner>div{width:12px;height:12px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.rdw-spinner .rdw-bounce1{-webkit-animation-delay:-.32s;animation-delay:-.32s}.rdw-spinner .rdw-bounce2{-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes sk-bouncedelay{0%,100%,80%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,100%,80%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.rdw-image-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-image-modal{position:absolute;top:35px;left:5px;display:flex;flex-direction:column;width:235px;border:1px solid #f1f1f1;padding:15px;border-radius:2px;z-index:100;background:#fff;box-shadow:3px 3px 5px #bfbdbd}.rdw-image-modal-header{font-size:15px;margin:10px 0;display:flex}.rdw-image-modal-header-option{width:50%;cursor:pointer;display:flex;justify-content:center;align-items:center;flex-direction:column}.rdw-image-modal-header-label{width:80px;background:#f1f1f1;border:1px solid #f1f1f1;margin-top:5px}.rdw-image-modal-header-label-highlighted{background:#6eb8d4;border-bottom:2px solid #0a66b7}.rdw-image-modal-upload-option{width:100%;color:gray;cursor:pointer;display:flex;border:none;font-size:15px;align-items:center;justify-content:center;background-color:#f1f1f1;outline:2px dashed gray;outline-offset:-10px;margin:10px 0;padding:9px 0}.rdw-image-modal-upload-option-highlighted{outline:2px dashed #0a66b7}.rdw-image-modal-upload-option-label{cursor:pointer;height:100%;width:100%;display:flex;justify-content:center;align-items:center;padding:15px}.rdw-image-modal-upload-option-label span{padding:0 20px}.rdw-image-modal-upload-option-image-preview{max-width:100%;max-height:200px}.rdw-image-modal-upload-option-input{width:.1px;height:.1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.rdw-image-modal-url-section{display:flex;align-items:center}.rdw-image-modal-url-input{width:90%;height:35px;margin:15px 0 12px;border:1px solid #f1f1f1;border-radius:2px;font-size:15px;padding:0 5px}.rdw-image-modal-btn-section{margin:10px auto 0}.rdw-image-modal-url-input:focus{outline:0}.rdw-image-modal-btn{margin:0 5px;width:75px;height:30px;border:1px solid #f1f1f1;border-radius:2px;cursor:pointer;background:#fff;text-transform:capitalize}.rdw-image-modal-btn:hover{box-shadow:1px 1px 0 #bfbdbd}.rdw-image-modal-btn:active{box-shadow:1px 1px 0 #bfbdbd inset}.rdw-image-modal-btn:focus{outline:0!important}.rdw-image-modal-btn:disabled{background:#ece9e9}.rdw-image-modal-spinner{position:absolute;top:-3px;left:0;width:100%;height:100%;opacity:.5}.rdw-image-modal-alt-input{width:70%;height:20px;border:1px solid #f1f1f1;border-radius:2px;font-size:12px;margin-left:5px}.rdw-image-modal-alt-input:focus{outline:0}.rdw-image-modal-alt-lbl{font-size:12px}.rdw-image-modal-size{align-items:center;display:flex;margin:8px 0;justify-content:space-between}.rdw-image-modal-size-input{width:40%;height:20px;border:1px solid #f1f1f1;border-radius:2px;font-size:12px}.rdw-image-modal-size-input:focus{outline:0}.rdw-image-mandatory-sign{color:red;margin-left:3px;margin-right:3px}.rdw-remove-wrapper{display:flex;align-items:center;margin-bottom:6px;position:relative;flex-wrap:wrap}.rdw-history-wrapper{display:flex;align-items:center;margin-bottom:6px;flex-wrap:wrap}.rdw-history-dropdownoption{height:40px;display:flex;justify-content:center}.rdw-history-dropdown{width:50px}.rdw-link-decorator-wrapper{position:relative}.rdw-link-decorator-icon{position:absolute;left:40%;top:0;cursor:pointer;background-color:#fff}.rdw-mention-link{text-decoration:none;color:#1236ff;background-color:#f0fbff;padding:1px 2px;border-radius:2px}.rdw-suggestion-wrapper{position:relative}.rdw-suggestion-dropdown{position:absolute;display:flex;flex-direction:column;border:1px solid #f1f1f1;min-width:100px;max-height:150px;overflow:auto;background:#fff;z-index:100}.rdw-suggestion-option{padding:7px 5px;border-bottom:1px solid #f1f1f1}.rdw-suggestion-option-active{background-color:#f1f1f1}.rdw-hashtag-link{text-decoration:none;color:#1236ff;background-color:#f0fbff;padding:1px 2px;border-radius:2px}.rdw-image-alignment-options-popup{position:absolute;background:#fff;display:flex;padding:5px 2px;border-radius:2px;border:1px solid #f1f1f1;width:105px;cursor:pointer;z-index:100}.rdw-alignment-option-left{justify-content:flex-start}.rdw-image-alignment-option{height:15px;width:15px;min-width:15px}.rdw-image-alignment{position:relative}.rdw-image-imagewrapper{position:relative}.rdw-image-center{display:flex;justify-content:center}.rdw-image-left{display:flex}.rdw-image-right{display:flex;justify-content:flex-end}.rdw-image-alignment-options-popup-right{right:0}.rdw-editor-main{height:100%;overflow:auto;box-sizing:border-box}.rdw-editor-toolbar{padding:6px 5px 0;border-radius:2px;border:1px solid #f1f1f1;display:flex;justify-content:flex-start;background:#fff;flex-wrap:wrap;font-size:15px;margin-bottom:5px;user-select:none}.public-DraftStyleDefault-block{margin:1em 0}.rdw-editor-wrapper:focus{outline:0}.rdw-editor-wrapper{box-sizing:content-box}.rdw-editor-main blockquote{border-left:5px solid #f1f1f1;padding-left:5px}.rdw-editor-main pre{background:#f1f1f1;border-radius:3px;padding:1px 10px}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-root{position:relative}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.public-DraftEditor-block{position:relative}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:0}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.DraftEditorPlaceholder-hidden{display:none}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4} 13 | `; 14 | -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "twilio-flex-email-server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@sendgrid/client": { 8 | "version": "7.2.2", 9 | "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.2.2.tgz", 10 | "integrity": "sha512-O2ensbYCZu7B7vMqcyaf5O8XqhDEyzwDYOxBvQYUenAqtpO+Fo5Xq6ZcZ+brCTxHQe1ytKQ9UCNKm/IZohRSPw==", 11 | "requires": { 12 | "@sendgrid/helpers": "^7.2.0", 13 | "axios": "^0.19.2" 14 | } 15 | }, 16 | "@sendgrid/helpers": { 17 | "version": "7.2.0", 18 | "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.2.0.tgz", 19 | "integrity": "sha512-Ps8rc3xFpaQvIWoW1zlWi9G7QnxYwXFOeq0915DzXf5knoiOgXdFk/XBXbCFjr2lf/JIzjgFUtAV/dN8Z8jzHw==", 20 | "requires": { 21 | "chalk": "^2.0.1", 22 | "deepmerge": "^4.2.2" 23 | } 24 | }, 25 | "@sendgrid/mail": { 26 | "version": "7.2.2", 27 | "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.2.2.tgz", 28 | "integrity": "sha512-DFXyMEY0c8iXi2lfIfuuQZlRUrlAriE7yeh8D5MDyIPmmHuNKRfKe9Buu/5vT37iWZM2N2BNFdAKPWNUgXRkDQ==", 29 | "requires": { 30 | "@sendgrid/client": "^7.2.2", 31 | "@sendgrid/helpers": "^7.2.0" 32 | } 33 | }, 34 | "@types/body-parser": { 35 | "version": "1.19.0", 36 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 37 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 38 | "requires": { 39 | "@types/connect": "*", 40 | "@types/node": "*" 41 | } 42 | }, 43 | "@types/connect": { 44 | "version": "3.4.33", 45 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", 46 | "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", 47 | "requires": { 48 | "@types/node": "*" 49 | } 50 | }, 51 | "@types/express": { 52 | "version": "4.17.7", 53 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", 54 | "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", 55 | "requires": { 56 | "@types/body-parser": "*", 57 | "@types/express-serve-static-core": "*", 58 | "@types/qs": "*", 59 | "@types/serve-static": "*" 60 | } 61 | }, 62 | "@types/express-serve-static-core": { 63 | "version": "4.17.9", 64 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", 65 | "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", 66 | "requires": { 67 | "@types/node": "*", 68 | "@types/qs": "*", 69 | "@types/range-parser": "*" 70 | } 71 | }, 72 | "@types/mime": { 73 | "version": "2.0.3", 74 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", 75 | "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" 76 | }, 77 | "@types/node": { 78 | "version": "14.0.27", 79 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 80 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" 81 | }, 82 | "@types/qs": { 83 | "version": "6.9.4", 84 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", 85 | "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" 86 | }, 87 | "@types/range-parser": { 88 | "version": "1.2.3", 89 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 90 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 91 | }, 92 | "@types/serve-static": { 93 | "version": "1.13.5", 94 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", 95 | "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", 96 | "requires": { 97 | "@types/express-serve-static-core": "*", 98 | "@types/mime": "*" 99 | } 100 | }, 101 | "abab": { 102 | "version": "2.0.4", 103 | "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", 104 | "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" 105 | }, 106 | "accepts": { 107 | "version": "1.3.7", 108 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 109 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 110 | "requires": { 111 | "mime-types": "~2.1.24", 112 | "negotiator": "0.6.2" 113 | } 114 | }, 115 | "acorn": { 116 | "version": "7.4.0", 117 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", 118 | "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==" 119 | }, 120 | "acorn-globals": { 121 | "version": "6.0.0", 122 | "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", 123 | "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", 124 | "requires": { 125 | "acorn": "^7.1.1", 126 | "acorn-walk": "^7.1.1" 127 | } 128 | }, 129 | "acorn-walk": { 130 | "version": "7.2.0", 131 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 132 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 133 | }, 134 | "ajv": { 135 | "version": "6.12.3", 136 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", 137 | "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", 138 | "requires": { 139 | "fast-deep-equal": "^3.1.1", 140 | "fast-json-stable-stringify": "^2.0.0", 141 | "json-schema-traverse": "^0.4.1", 142 | "uri-js": "^4.2.2" 143 | } 144 | }, 145 | "ansi-regex": { 146 | "version": "4.1.0", 147 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 148 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 149 | }, 150 | "ansi-styles": { 151 | "version": "3.2.1", 152 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 153 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 154 | "requires": { 155 | "color-convert": "^1.9.0" 156 | } 157 | }, 158 | "append-field": { 159 | "version": "1.0.0", 160 | "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", 161 | "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=" 162 | }, 163 | "array-flatten": { 164 | "version": "1.1.1", 165 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 166 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 167 | }, 168 | "asap": { 169 | "version": "2.0.6", 170 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 171 | "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" 172 | }, 173 | "asn1": { 174 | "version": "0.2.4", 175 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 176 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 177 | "requires": { 178 | "safer-buffer": "~2.1.0" 179 | } 180 | }, 181 | "assert-plus": { 182 | "version": "1.0.0", 183 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 184 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 185 | }, 186 | "asynckit": { 187 | "version": "0.4.0", 188 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 189 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 190 | }, 191 | "aws-sign2": { 192 | "version": "0.7.0", 193 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 194 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 195 | }, 196 | "aws4": { 197 | "version": "1.10.0", 198 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", 199 | "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" 200 | }, 201 | "axios": { 202 | "version": "0.19.2", 203 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", 204 | "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", 205 | "requires": { 206 | "follow-redirects": "1.5.10" 207 | } 208 | }, 209 | "bcrypt-pbkdf": { 210 | "version": "1.0.2", 211 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", 212 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", 213 | "requires": { 214 | "tweetnacl": "^0.14.3" 215 | } 216 | }, 217 | "body-parser": { 218 | "version": "1.19.0", 219 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 220 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 221 | "requires": { 222 | "bytes": "3.1.0", 223 | "content-type": "~1.0.4", 224 | "debug": "2.6.9", 225 | "depd": "~1.1.2", 226 | "http-errors": "1.7.2", 227 | "iconv-lite": "0.4.24", 228 | "on-finished": "~2.3.0", 229 | "qs": "6.7.0", 230 | "raw-body": "2.4.0", 231 | "type-is": "~1.6.17" 232 | }, 233 | "dependencies": { 234 | "debug": { 235 | "version": "2.6.9", 236 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 237 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 238 | "requires": { 239 | "ms": "2.0.0" 240 | } 241 | } 242 | } 243 | }, 244 | "boolbase": { 245 | "version": "1.0.0", 246 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 247 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 248 | }, 249 | "browser-process-hrtime": { 250 | "version": "1.0.0", 251 | "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", 252 | "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" 253 | }, 254 | "buffer-equal-constant-time": { 255 | "version": "1.0.1", 256 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 257 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 258 | }, 259 | "buffer-from": { 260 | "version": "1.1.1", 261 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 262 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 263 | }, 264 | "busboy": { 265 | "version": "0.2.14", 266 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", 267 | "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=", 268 | "requires": { 269 | "dicer": "0.2.5", 270 | "readable-stream": "1.1.x" 271 | } 272 | }, 273 | "bytes": { 274 | "version": "3.1.0", 275 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 276 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 277 | }, 278 | "camelcase": { 279 | "version": "5.3.1", 280 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 281 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 282 | }, 283 | "caseless": { 284 | "version": "0.12.0", 285 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 286 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 287 | }, 288 | "chalk": { 289 | "version": "2.4.2", 290 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 291 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 292 | "requires": { 293 | "ansi-styles": "^3.2.1", 294 | "escape-string-regexp": "^1.0.5", 295 | "supports-color": "^5.3.0" 296 | } 297 | }, 298 | "cheerio": { 299 | "version": "1.0.0-rc.3", 300 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", 301 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", 302 | "requires": { 303 | "css-select": "~1.2.0", 304 | "dom-serializer": "~0.1.1", 305 | "entities": "~1.1.1", 306 | "htmlparser2": "^3.9.1", 307 | "lodash": "^4.15.0", 308 | "parse5": "^3.0.1" 309 | } 310 | }, 311 | "cliui": { 312 | "version": "5.0.0", 313 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 314 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 315 | "requires": { 316 | "string-width": "^3.1.0", 317 | "strip-ansi": "^5.2.0", 318 | "wrap-ansi": "^5.1.0" 319 | } 320 | }, 321 | "color-convert": { 322 | "version": "1.9.3", 323 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 324 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 325 | "requires": { 326 | "color-name": "1.1.3" 327 | } 328 | }, 329 | "color-name": { 330 | "version": "1.1.3", 331 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 332 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 333 | }, 334 | "combined-stream": { 335 | "version": "1.0.8", 336 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 337 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 338 | "requires": { 339 | "delayed-stream": "~1.0.0" 340 | } 341 | }, 342 | "concat-stream": { 343 | "version": "1.6.2", 344 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 345 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 346 | "requires": { 347 | "buffer-from": "^1.0.0", 348 | "inherits": "^2.0.3", 349 | "readable-stream": "^2.2.2", 350 | "typedarray": "^0.0.6" 351 | }, 352 | "dependencies": { 353 | "isarray": { 354 | "version": "1.0.0", 355 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 356 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 357 | }, 358 | "readable-stream": { 359 | "version": "2.3.7", 360 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 361 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 362 | "requires": { 363 | "core-util-is": "~1.0.0", 364 | "inherits": "~2.0.3", 365 | "isarray": "~1.0.0", 366 | "process-nextick-args": "~2.0.0", 367 | "safe-buffer": "~5.1.1", 368 | "string_decoder": "~1.1.1", 369 | "util-deprecate": "~1.0.1" 370 | } 371 | }, 372 | "string_decoder": { 373 | "version": "1.1.1", 374 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 375 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 376 | "requires": { 377 | "safe-buffer": "~5.1.0" 378 | } 379 | } 380 | } 381 | }, 382 | "content-disposition": { 383 | "version": "0.5.3", 384 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 385 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 386 | "requires": { 387 | "safe-buffer": "5.1.2" 388 | } 389 | }, 390 | "content-type": { 391 | "version": "1.0.4", 392 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 393 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 394 | }, 395 | "cookie": { 396 | "version": "0.4.0", 397 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 398 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 399 | }, 400 | "cookie-signature": { 401 | "version": "1.0.6", 402 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 403 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 404 | }, 405 | "core-util-is": { 406 | "version": "1.0.2", 407 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 408 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 409 | }, 410 | "css-select": { 411 | "version": "1.2.0", 412 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 413 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 414 | "requires": { 415 | "boolbase": "~1.0.0", 416 | "css-what": "2.1", 417 | "domutils": "1.5.1", 418 | "nth-check": "~1.0.1" 419 | } 420 | }, 421 | "css-what": { 422 | "version": "2.1.3", 423 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 424 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" 425 | }, 426 | "cssom": { 427 | "version": "0.4.4", 428 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", 429 | "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" 430 | }, 431 | "cssstyle": { 432 | "version": "2.3.0", 433 | "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", 434 | "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", 435 | "requires": { 436 | "cssom": "~0.3.6" 437 | }, 438 | "dependencies": { 439 | "cssom": { 440 | "version": "0.3.8", 441 | "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", 442 | "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" 443 | } 444 | } 445 | }, 446 | "dashdash": { 447 | "version": "1.14.1", 448 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 449 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 450 | "requires": { 451 | "assert-plus": "^1.0.0" 452 | } 453 | }, 454 | "data-urls": { 455 | "version": "2.0.0", 456 | "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", 457 | "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", 458 | "requires": { 459 | "abab": "^2.0.3", 460 | "whatwg-mimetype": "^2.3.0", 461 | "whatwg-url": "^8.0.0" 462 | } 463 | }, 464 | "dayjs": { 465 | "version": "1.8.31", 466 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.31.tgz", 467 | "integrity": "sha512-mPh1mslned+5PuIuiUfbw4CikHk6AEAf2Baxih+wP5fssv+wmlVhvgZ7mq+BhLt7Sr/Hc8leWDiwe6YnrpNt3g==" 468 | }, 469 | "debug": { 470 | "version": "3.1.0", 471 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 472 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 473 | "requires": { 474 | "ms": "2.0.0" 475 | } 476 | }, 477 | "decamelize": { 478 | "version": "1.2.0", 479 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 480 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 481 | }, 482 | "decimal.js": { 483 | "version": "10.2.0", 484 | "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", 485 | "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==" 486 | }, 487 | "deep-is": { 488 | "version": "0.1.3", 489 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 490 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" 491 | }, 492 | "deepmerge": { 493 | "version": "4.2.2", 494 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 495 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" 496 | }, 497 | "delayed-stream": { 498 | "version": "1.0.0", 499 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 500 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 501 | }, 502 | "depd": { 503 | "version": "1.1.2", 504 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 505 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 506 | }, 507 | "destroy": { 508 | "version": "1.0.4", 509 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 510 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 511 | }, 512 | "dicer": { 513 | "version": "0.2.5", 514 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz", 515 | "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=", 516 | "requires": { 517 | "readable-stream": "1.1.x", 518 | "streamsearch": "0.1.2" 519 | } 520 | }, 521 | "dom-serializer": { 522 | "version": "0.1.1", 523 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 524 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 525 | "requires": { 526 | "domelementtype": "^1.3.0", 527 | "entities": "^1.1.1" 528 | } 529 | }, 530 | "domelementtype": { 531 | "version": "1.3.1", 532 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 533 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 534 | }, 535 | "domexception": { 536 | "version": "2.0.1", 537 | "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", 538 | "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", 539 | "requires": { 540 | "webidl-conversions": "^5.0.0" 541 | }, 542 | "dependencies": { 543 | "webidl-conversions": { 544 | "version": "5.0.0", 545 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", 546 | "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" 547 | } 548 | } 549 | }, 550 | "domhandler": { 551 | "version": "2.4.2", 552 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 553 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 554 | "requires": { 555 | "domelementtype": "1" 556 | } 557 | }, 558 | "domutils": { 559 | "version": "1.5.1", 560 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 561 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 562 | "requires": { 563 | "dom-serializer": "0", 564 | "domelementtype": "1" 565 | } 566 | }, 567 | "dotenv": { 568 | "version": "8.2.0", 569 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", 570 | "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" 571 | }, 572 | "ecc-jsbn": { 573 | "version": "0.1.2", 574 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", 575 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", 576 | "requires": { 577 | "jsbn": "~0.1.0", 578 | "safer-buffer": "^2.1.0" 579 | } 580 | }, 581 | "ecdsa-sig-formatter": { 582 | "version": "1.0.11", 583 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 584 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 585 | "requires": { 586 | "safe-buffer": "^5.0.1" 587 | } 588 | }, 589 | "ee-first": { 590 | "version": "1.1.1", 591 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 592 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 593 | }, 594 | "email-addresses": { 595 | "version": "3.1.0", 596 | "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", 597 | "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==" 598 | }, 599 | "emoji-regex": { 600 | "version": "7.0.3", 601 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 602 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 603 | }, 604 | "encodeurl": { 605 | "version": "1.0.2", 606 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 607 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 608 | }, 609 | "entities": { 610 | "version": "1.1.2", 611 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 612 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" 613 | }, 614 | "escape-html": { 615 | "version": "1.0.3", 616 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 617 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 618 | }, 619 | "escape-string-regexp": { 620 | "version": "1.0.5", 621 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 622 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 623 | }, 624 | "escodegen": { 625 | "version": "1.14.3", 626 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", 627 | "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", 628 | "requires": { 629 | "esprima": "^4.0.1", 630 | "estraverse": "^4.2.0", 631 | "esutils": "^2.0.2", 632 | "optionator": "^0.8.1", 633 | "source-map": "~0.6.1" 634 | } 635 | }, 636 | "esprima": { 637 | "version": "4.0.1", 638 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 639 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 640 | }, 641 | "estraverse": { 642 | "version": "4.3.0", 643 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 644 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" 645 | }, 646 | "esutils": { 647 | "version": "2.0.3", 648 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 649 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 650 | }, 651 | "etag": { 652 | "version": "1.8.1", 653 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 654 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 655 | }, 656 | "express": { 657 | "version": "4.17.1", 658 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 659 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 660 | "requires": { 661 | "accepts": "~1.3.7", 662 | "array-flatten": "1.1.1", 663 | "body-parser": "1.19.0", 664 | "content-disposition": "0.5.3", 665 | "content-type": "~1.0.4", 666 | "cookie": "0.4.0", 667 | "cookie-signature": "1.0.6", 668 | "debug": "2.6.9", 669 | "depd": "~1.1.2", 670 | "encodeurl": "~1.0.2", 671 | "escape-html": "~1.0.3", 672 | "etag": "~1.8.1", 673 | "finalhandler": "~1.1.2", 674 | "fresh": "0.5.2", 675 | "merge-descriptors": "1.0.1", 676 | "methods": "~1.1.2", 677 | "on-finished": "~2.3.0", 678 | "parseurl": "~1.3.3", 679 | "path-to-regexp": "0.1.7", 680 | "proxy-addr": "~2.0.5", 681 | "qs": "6.7.0", 682 | "range-parser": "~1.2.1", 683 | "safe-buffer": "5.1.2", 684 | "send": "0.17.1", 685 | "serve-static": "1.14.1", 686 | "setprototypeof": "1.1.1", 687 | "statuses": "~1.5.0", 688 | "type-is": "~1.6.18", 689 | "utils-merge": "1.0.1", 690 | "vary": "~1.1.2" 691 | }, 692 | "dependencies": { 693 | "debug": { 694 | "version": "2.6.9", 695 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 696 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 697 | "requires": { 698 | "ms": "2.0.0" 699 | } 700 | } 701 | } 702 | }, 703 | "extend": { 704 | "version": "3.0.2", 705 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 706 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" 707 | }, 708 | "extsprintf": { 709 | "version": "1.3.0", 710 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 711 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 712 | }, 713 | "fast-deep-equal": { 714 | "version": "3.1.3", 715 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 716 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 717 | }, 718 | "fast-json-stable-stringify": { 719 | "version": "2.1.0", 720 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 721 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 722 | }, 723 | "fast-levenshtein": { 724 | "version": "2.0.6", 725 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 726 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" 727 | }, 728 | "finalhandler": { 729 | "version": "1.1.2", 730 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 731 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 732 | "requires": { 733 | "debug": "2.6.9", 734 | "encodeurl": "~1.0.2", 735 | "escape-html": "~1.0.3", 736 | "on-finished": "~2.3.0", 737 | "parseurl": "~1.3.3", 738 | "statuses": "~1.5.0", 739 | "unpipe": "~1.0.0" 740 | }, 741 | "dependencies": { 742 | "debug": { 743 | "version": "2.6.9", 744 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 745 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 746 | "requires": { 747 | "ms": "2.0.0" 748 | } 749 | } 750 | } 751 | }, 752 | "find-up": { 753 | "version": "3.0.0", 754 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 755 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 756 | "requires": { 757 | "locate-path": "^3.0.0" 758 | } 759 | }, 760 | "follow-redirects": { 761 | "version": "1.5.10", 762 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", 763 | "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", 764 | "requires": { 765 | "debug": "=3.1.0" 766 | } 767 | }, 768 | "forever-agent": { 769 | "version": "0.6.1", 770 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 771 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 772 | }, 773 | "form-data": { 774 | "version": "2.3.3", 775 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", 776 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", 777 | "requires": { 778 | "asynckit": "^0.4.0", 779 | "combined-stream": "^1.0.6", 780 | "mime-types": "^2.1.12" 781 | } 782 | }, 783 | "forwarded": { 784 | "version": "0.1.2", 785 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 786 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 787 | }, 788 | "fresh": { 789 | "version": "0.5.2", 790 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 791 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 792 | }, 793 | "get-caller-file": { 794 | "version": "2.0.5", 795 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 796 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 797 | }, 798 | "getpass": { 799 | "version": "0.1.7", 800 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 801 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 802 | "requires": { 803 | "assert-plus": "^1.0.0" 804 | } 805 | }, 806 | "har-schema": { 807 | "version": "2.0.0", 808 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 809 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 810 | }, 811 | "har-validator": { 812 | "version": "5.1.5", 813 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", 814 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", 815 | "requires": { 816 | "ajv": "^6.12.3", 817 | "har-schema": "^2.0.0" 818 | } 819 | }, 820 | "has-flag": { 821 | "version": "3.0.0", 822 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 823 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 824 | }, 825 | "html-encoding-sniffer": { 826 | "version": "2.0.1", 827 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", 828 | "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", 829 | "requires": { 830 | "whatwg-encoding": "^1.0.5" 831 | } 832 | }, 833 | "htmlparser2": { 834 | "version": "3.10.1", 835 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 836 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 837 | "requires": { 838 | "domelementtype": "^1.3.1", 839 | "domhandler": "^2.3.0", 840 | "domutils": "^1.5.1", 841 | "entities": "^1.1.1", 842 | "inherits": "^2.0.1", 843 | "readable-stream": "^3.1.1" 844 | }, 845 | "dependencies": { 846 | "readable-stream": { 847 | "version": "3.6.0", 848 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 849 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 850 | "requires": { 851 | "inherits": "^2.0.3", 852 | "string_decoder": "^1.1.1", 853 | "util-deprecate": "^1.0.1" 854 | } 855 | }, 856 | "safe-buffer": { 857 | "version": "5.2.1", 858 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 859 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 860 | }, 861 | "string_decoder": { 862 | "version": "1.3.0", 863 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 864 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 865 | "requires": { 866 | "safe-buffer": "~5.2.0" 867 | } 868 | } 869 | } 870 | }, 871 | "http-errors": { 872 | "version": "1.7.2", 873 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 874 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 875 | "requires": { 876 | "depd": "~1.1.2", 877 | "inherits": "2.0.3", 878 | "setprototypeof": "1.1.1", 879 | "statuses": ">= 1.5.0 < 2", 880 | "toidentifier": "1.0.0" 881 | } 882 | }, 883 | "http-signature": { 884 | "version": "1.2.0", 885 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 886 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 887 | "requires": { 888 | "assert-plus": "^1.0.0", 889 | "jsprim": "^1.2.2", 890 | "sshpk": "^1.7.0" 891 | } 892 | }, 893 | "iconv-lite": { 894 | "version": "0.4.24", 895 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 896 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 897 | "requires": { 898 | "safer-buffer": ">= 2.1.2 < 3" 899 | } 900 | }, 901 | "inherits": { 902 | "version": "2.0.3", 903 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 904 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 905 | }, 906 | "ip-regex": { 907 | "version": "2.1.0", 908 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", 909 | "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" 910 | }, 911 | "ipaddr.js": { 912 | "version": "1.9.1", 913 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 914 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 915 | }, 916 | "is-fullwidth-code-point": { 917 | "version": "2.0.0", 918 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 919 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 920 | }, 921 | "is-potential-custom-element-name": { 922 | "version": "1.0.0", 923 | "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", 924 | "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" 925 | }, 926 | "is-typedarray": { 927 | "version": "1.0.0", 928 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 929 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 930 | }, 931 | "isarray": { 932 | "version": "0.0.1", 933 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 934 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" 935 | }, 936 | "isstream": { 937 | "version": "0.1.2", 938 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 939 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 940 | }, 941 | "jsbn": { 942 | "version": "0.1.1", 943 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 944 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" 945 | }, 946 | "jsdom": { 947 | "version": "16.3.0", 948 | "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", 949 | "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", 950 | "requires": { 951 | "abab": "^2.0.3", 952 | "acorn": "^7.1.1", 953 | "acorn-globals": "^6.0.0", 954 | "cssom": "^0.4.4", 955 | "cssstyle": "^2.2.0", 956 | "data-urls": "^2.0.0", 957 | "decimal.js": "^10.2.0", 958 | "domexception": "^2.0.1", 959 | "escodegen": "^1.14.1", 960 | "html-encoding-sniffer": "^2.0.1", 961 | "is-potential-custom-element-name": "^1.0.0", 962 | "nwsapi": "^2.2.0", 963 | "parse5": "5.1.1", 964 | "request": "^2.88.2", 965 | "request-promise-native": "^1.0.8", 966 | "saxes": "^5.0.0", 967 | "symbol-tree": "^3.2.4", 968 | "tough-cookie": "^3.0.1", 969 | "w3c-hr-time": "^1.0.2", 970 | "w3c-xmlserializer": "^2.0.0", 971 | "webidl-conversions": "^6.1.0", 972 | "whatwg-encoding": "^1.0.5", 973 | "whatwg-mimetype": "^2.3.0", 974 | "whatwg-url": "^8.0.0", 975 | "ws": "^7.2.3", 976 | "xml-name-validator": "^3.0.0" 977 | }, 978 | "dependencies": { 979 | "parse5": { 980 | "version": "5.1.1", 981 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", 982 | "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" 983 | } 984 | } 985 | }, 986 | "json-schema": { 987 | "version": "0.2.3", 988 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 989 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 990 | }, 991 | "json-schema-traverse": { 992 | "version": "0.4.1", 993 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 994 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" 995 | }, 996 | "json-stringify-safe": { 997 | "version": "5.0.1", 998 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 999 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1000 | }, 1001 | "jsonwebtoken": { 1002 | "version": "8.5.1", 1003 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1004 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1005 | "requires": { 1006 | "jws": "^3.2.2", 1007 | "lodash.includes": "^4.3.0", 1008 | "lodash.isboolean": "^3.0.3", 1009 | "lodash.isinteger": "^4.0.4", 1010 | "lodash.isnumber": "^3.0.3", 1011 | "lodash.isplainobject": "^4.0.6", 1012 | "lodash.isstring": "^4.0.1", 1013 | "lodash.once": "^4.0.0", 1014 | "ms": "^2.1.1", 1015 | "semver": "^5.6.0" 1016 | }, 1017 | "dependencies": { 1018 | "ms": { 1019 | "version": "2.1.2", 1020 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1021 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1022 | } 1023 | } 1024 | }, 1025 | "jsprim": { 1026 | "version": "1.4.1", 1027 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1028 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1029 | "requires": { 1030 | "assert-plus": "1.0.0", 1031 | "extsprintf": "1.3.0", 1032 | "json-schema": "0.2.3", 1033 | "verror": "1.10.0" 1034 | } 1035 | }, 1036 | "jwa": { 1037 | "version": "1.4.1", 1038 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1039 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1040 | "requires": { 1041 | "buffer-equal-constant-time": "1.0.1", 1042 | "ecdsa-sig-formatter": "1.0.11", 1043 | "safe-buffer": "^5.0.1" 1044 | } 1045 | }, 1046 | "jws": { 1047 | "version": "3.2.2", 1048 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1049 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1050 | "requires": { 1051 | "jwa": "^1.4.1", 1052 | "safe-buffer": "^5.0.1" 1053 | } 1054 | }, 1055 | "levn": { 1056 | "version": "0.3.0", 1057 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1058 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1059 | "requires": { 1060 | "prelude-ls": "~1.1.2", 1061 | "type-check": "~0.3.2" 1062 | } 1063 | }, 1064 | "locate-path": { 1065 | "version": "3.0.0", 1066 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1067 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1068 | "requires": { 1069 | "p-locate": "^3.0.0", 1070 | "path-exists": "^3.0.0" 1071 | } 1072 | }, 1073 | "lodash": { 1074 | "version": "4.17.19", 1075 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", 1076 | "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" 1077 | }, 1078 | "lodash.includes": { 1079 | "version": "4.3.0", 1080 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1081 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 1082 | }, 1083 | "lodash.isboolean": { 1084 | "version": "3.0.3", 1085 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1086 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 1087 | }, 1088 | "lodash.isinteger": { 1089 | "version": "4.0.4", 1090 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1091 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 1092 | }, 1093 | "lodash.isnumber": { 1094 | "version": "3.0.3", 1095 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1096 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 1097 | }, 1098 | "lodash.isplainobject": { 1099 | "version": "4.0.6", 1100 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1101 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 1102 | }, 1103 | "lodash.isstring": { 1104 | "version": "4.0.1", 1105 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1106 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 1107 | }, 1108 | "lodash.once": { 1109 | "version": "4.1.1", 1110 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1111 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 1112 | }, 1113 | "lodash.sortby": { 1114 | "version": "4.7.0", 1115 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1116 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 1117 | }, 1118 | "media-typer": { 1119 | "version": "0.3.0", 1120 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1121 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1122 | }, 1123 | "merge-descriptors": { 1124 | "version": "1.0.1", 1125 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1126 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1127 | }, 1128 | "methods": { 1129 | "version": "1.1.2", 1130 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1131 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1132 | }, 1133 | "mime": { 1134 | "version": "1.6.0", 1135 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1136 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1137 | }, 1138 | "mime-db": { 1139 | "version": "1.44.0", 1140 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1141 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 1142 | }, 1143 | "mime-types": { 1144 | "version": "2.1.27", 1145 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1146 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1147 | "requires": { 1148 | "mime-db": "1.44.0" 1149 | } 1150 | }, 1151 | "minimist": { 1152 | "version": "1.2.5", 1153 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1154 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1155 | }, 1156 | "mkdirp": { 1157 | "version": "0.5.5", 1158 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1159 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1160 | "requires": { 1161 | "minimist": "^1.2.5" 1162 | } 1163 | }, 1164 | "ms": { 1165 | "version": "2.0.0", 1166 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1167 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1168 | }, 1169 | "multer": { 1170 | "version": "1.4.2", 1171 | "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz", 1172 | "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==", 1173 | "requires": { 1174 | "append-field": "^1.0.0", 1175 | "busboy": "^0.2.11", 1176 | "concat-stream": "^1.5.2", 1177 | "mkdirp": "^0.5.1", 1178 | "object-assign": "^4.1.1", 1179 | "on-finished": "^2.3.0", 1180 | "type-is": "^1.6.4", 1181 | "xtend": "^4.0.0" 1182 | } 1183 | }, 1184 | "negotiator": { 1185 | "version": "0.6.2", 1186 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1187 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1188 | }, 1189 | "nth-check": { 1190 | "version": "1.0.2", 1191 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 1192 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 1193 | "requires": { 1194 | "boolbase": "~1.0.0" 1195 | } 1196 | }, 1197 | "nwsapi": { 1198 | "version": "2.2.0", 1199 | "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", 1200 | "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" 1201 | }, 1202 | "oauth-sign": { 1203 | "version": "0.9.0", 1204 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", 1205 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" 1206 | }, 1207 | "object-assign": { 1208 | "version": "4.1.1", 1209 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1210 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1211 | }, 1212 | "on-finished": { 1213 | "version": "2.3.0", 1214 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1215 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1216 | "requires": { 1217 | "ee-first": "1.1.1" 1218 | } 1219 | }, 1220 | "optionator": { 1221 | "version": "0.8.3", 1222 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1223 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1224 | "requires": { 1225 | "deep-is": "~0.1.3", 1226 | "fast-levenshtein": "~2.0.6", 1227 | "levn": "~0.3.0", 1228 | "prelude-ls": "~1.1.2", 1229 | "type-check": "~0.3.2", 1230 | "word-wrap": "~1.2.3" 1231 | } 1232 | }, 1233 | "p-limit": { 1234 | "version": "2.3.0", 1235 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1236 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1237 | "requires": { 1238 | "p-try": "^2.0.0" 1239 | } 1240 | }, 1241 | "p-locate": { 1242 | "version": "3.0.0", 1243 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1244 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1245 | "requires": { 1246 | "p-limit": "^2.0.0" 1247 | } 1248 | }, 1249 | "p-try": { 1250 | "version": "2.2.0", 1251 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1252 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1253 | }, 1254 | "parse-headers": { 1255 | "version": "2.0.3", 1256 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", 1257 | "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" 1258 | }, 1259 | "parse5": { 1260 | "version": "3.0.3", 1261 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", 1262 | "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", 1263 | "requires": { 1264 | "@types/node": "*" 1265 | } 1266 | }, 1267 | "parseurl": { 1268 | "version": "1.3.3", 1269 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1270 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1271 | }, 1272 | "path-exists": { 1273 | "version": "3.0.0", 1274 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1275 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 1276 | }, 1277 | "path-to-regexp": { 1278 | "version": "0.1.7", 1279 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1280 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1281 | }, 1282 | "performance-now": { 1283 | "version": "2.1.0", 1284 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 1285 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 1286 | }, 1287 | "pop-iterate": { 1288 | "version": "1.0.1", 1289 | "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", 1290 | "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=" 1291 | }, 1292 | "prelude-ls": { 1293 | "version": "1.1.2", 1294 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1295 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" 1296 | }, 1297 | "process-nextick-args": { 1298 | "version": "2.0.1", 1299 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1300 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1301 | }, 1302 | "proxy-addr": { 1303 | "version": "2.0.6", 1304 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 1305 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 1306 | "requires": { 1307 | "forwarded": "~0.1.2", 1308 | "ipaddr.js": "1.9.1" 1309 | } 1310 | }, 1311 | "psl": { 1312 | "version": "1.8.0", 1313 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", 1314 | "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" 1315 | }, 1316 | "punycode": { 1317 | "version": "2.1.1", 1318 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1319 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 1320 | }, 1321 | "q": { 1322 | "version": "2.0.3", 1323 | "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", 1324 | "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=", 1325 | "requires": { 1326 | "asap": "^2.0.0", 1327 | "pop-iterate": "^1.0.1", 1328 | "weak-map": "^1.0.5" 1329 | } 1330 | }, 1331 | "qs": { 1332 | "version": "6.7.0", 1333 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1334 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 1335 | }, 1336 | "querystringify": { 1337 | "version": "2.1.1", 1338 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", 1339 | "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" 1340 | }, 1341 | "range-parser": { 1342 | "version": "1.2.1", 1343 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1344 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1345 | }, 1346 | "raw-body": { 1347 | "version": "2.4.0", 1348 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1349 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1350 | "requires": { 1351 | "bytes": "3.1.0", 1352 | "http-errors": "1.7.2", 1353 | "iconv-lite": "0.4.24", 1354 | "unpipe": "1.0.0" 1355 | } 1356 | }, 1357 | "readable-stream": { 1358 | "version": "1.1.14", 1359 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1360 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1361 | "requires": { 1362 | "core-util-is": "~1.0.0", 1363 | "inherits": "~2.0.1", 1364 | "isarray": "0.0.1", 1365 | "string_decoder": "~0.10.x" 1366 | } 1367 | }, 1368 | "request": { 1369 | "version": "2.88.2", 1370 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", 1371 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", 1372 | "requires": { 1373 | "aws-sign2": "~0.7.0", 1374 | "aws4": "^1.8.0", 1375 | "caseless": "~0.12.0", 1376 | "combined-stream": "~1.0.6", 1377 | "extend": "~3.0.2", 1378 | "forever-agent": "~0.6.1", 1379 | "form-data": "~2.3.2", 1380 | "har-validator": "~5.1.3", 1381 | "http-signature": "~1.2.0", 1382 | "is-typedarray": "~1.0.0", 1383 | "isstream": "~0.1.2", 1384 | "json-stringify-safe": "~5.0.1", 1385 | "mime-types": "~2.1.19", 1386 | "oauth-sign": "~0.9.0", 1387 | "performance-now": "^2.1.0", 1388 | "qs": "~6.5.2", 1389 | "safe-buffer": "^5.1.2", 1390 | "tough-cookie": "~2.5.0", 1391 | "tunnel-agent": "^0.6.0", 1392 | "uuid": "^3.3.2" 1393 | }, 1394 | "dependencies": { 1395 | "qs": { 1396 | "version": "6.5.2", 1397 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 1398 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 1399 | }, 1400 | "tough-cookie": { 1401 | "version": "2.5.0", 1402 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1403 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1404 | "requires": { 1405 | "psl": "^1.1.28", 1406 | "punycode": "^2.1.1" 1407 | } 1408 | } 1409 | } 1410 | }, 1411 | "request-promise-core": { 1412 | "version": "1.1.4", 1413 | "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", 1414 | "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", 1415 | "requires": { 1416 | "lodash": "^4.17.19" 1417 | } 1418 | }, 1419 | "request-promise-native": { 1420 | "version": "1.0.9", 1421 | "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", 1422 | "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", 1423 | "requires": { 1424 | "request-promise-core": "1.1.4", 1425 | "stealthy-require": "^1.1.1", 1426 | "tough-cookie": "^2.3.3" 1427 | }, 1428 | "dependencies": { 1429 | "tough-cookie": { 1430 | "version": "2.5.0", 1431 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", 1432 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", 1433 | "requires": { 1434 | "psl": "^1.1.28", 1435 | "punycode": "^2.1.1" 1436 | } 1437 | } 1438 | } 1439 | }, 1440 | "require-directory": { 1441 | "version": "2.1.1", 1442 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1443 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 1444 | }, 1445 | "require-main-filename": { 1446 | "version": "2.0.0", 1447 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1448 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 1449 | }, 1450 | "requires-port": { 1451 | "version": "1.0.0", 1452 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1453 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 1454 | }, 1455 | "rootpath": { 1456 | "version": "0.1.2", 1457 | "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", 1458 | "integrity": "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms=" 1459 | }, 1460 | "safe-buffer": { 1461 | "version": "5.1.2", 1462 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1463 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1464 | }, 1465 | "safer-buffer": { 1466 | "version": "2.1.2", 1467 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1468 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1469 | }, 1470 | "saxes": { 1471 | "version": "5.0.1", 1472 | "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", 1473 | "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", 1474 | "requires": { 1475 | "xmlchars": "^2.2.0" 1476 | } 1477 | }, 1478 | "scmp": { 1479 | "version": "2.1.0", 1480 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 1481 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 1482 | }, 1483 | "semver": { 1484 | "version": "5.7.1", 1485 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1486 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1487 | }, 1488 | "send": { 1489 | "version": "0.17.1", 1490 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1491 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1492 | "requires": { 1493 | "debug": "2.6.9", 1494 | "depd": "~1.1.2", 1495 | "destroy": "~1.0.4", 1496 | "encodeurl": "~1.0.2", 1497 | "escape-html": "~1.0.3", 1498 | "etag": "~1.8.1", 1499 | "fresh": "0.5.2", 1500 | "http-errors": "~1.7.2", 1501 | "mime": "1.6.0", 1502 | "ms": "2.1.1", 1503 | "on-finished": "~2.3.0", 1504 | "range-parser": "~1.2.1", 1505 | "statuses": "~1.5.0" 1506 | }, 1507 | "dependencies": { 1508 | "debug": { 1509 | "version": "2.6.9", 1510 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1511 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1512 | "requires": { 1513 | "ms": "2.0.0" 1514 | }, 1515 | "dependencies": { 1516 | "ms": { 1517 | "version": "2.0.0", 1518 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1519 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1520 | } 1521 | } 1522 | }, 1523 | "ms": { 1524 | "version": "2.1.1", 1525 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1526 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1527 | } 1528 | } 1529 | }, 1530 | "serve-static": { 1531 | "version": "1.14.1", 1532 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1533 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1534 | "requires": { 1535 | "encodeurl": "~1.0.2", 1536 | "escape-html": "~1.0.3", 1537 | "parseurl": "~1.3.3", 1538 | "send": "0.17.1" 1539 | } 1540 | }, 1541 | "set-blocking": { 1542 | "version": "2.0.0", 1543 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1544 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 1545 | }, 1546 | "setprototypeof": { 1547 | "version": "1.1.1", 1548 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1549 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1550 | }, 1551 | "showdown": { 1552 | "version": "1.9.1", 1553 | "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", 1554 | "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", 1555 | "requires": { 1556 | "yargs": "^14.2" 1557 | } 1558 | }, 1559 | "source-map": { 1560 | "version": "0.6.1", 1561 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1562 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 1563 | "optional": true 1564 | }, 1565 | "sshpk": { 1566 | "version": "1.16.1", 1567 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", 1568 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", 1569 | "requires": { 1570 | "asn1": "~0.2.3", 1571 | "assert-plus": "^1.0.0", 1572 | "bcrypt-pbkdf": "^1.0.0", 1573 | "dashdash": "^1.12.0", 1574 | "ecc-jsbn": "~0.1.1", 1575 | "getpass": "^0.1.1", 1576 | "jsbn": "~0.1.0", 1577 | "safer-buffer": "^2.0.2", 1578 | "tweetnacl": "~0.14.0" 1579 | } 1580 | }, 1581 | "statuses": { 1582 | "version": "1.5.0", 1583 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1584 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1585 | }, 1586 | "stealthy-require": { 1587 | "version": "1.1.1", 1588 | "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", 1589 | "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" 1590 | }, 1591 | "streamsearch": { 1592 | "version": "0.1.2", 1593 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", 1594 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" 1595 | }, 1596 | "string": { 1597 | "version": "3.3.3", 1598 | "resolved": "https://registry.npmjs.org/string/-/string-3.3.3.tgz", 1599 | "integrity": "sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA=" 1600 | }, 1601 | "string-width": { 1602 | "version": "3.1.0", 1603 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1604 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1605 | "requires": { 1606 | "emoji-regex": "^7.0.1", 1607 | "is-fullwidth-code-point": "^2.0.0", 1608 | "strip-ansi": "^5.1.0" 1609 | } 1610 | }, 1611 | "string_decoder": { 1612 | "version": "0.10.31", 1613 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1614 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" 1615 | }, 1616 | "strip-ansi": { 1617 | "version": "5.2.0", 1618 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1619 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1620 | "requires": { 1621 | "ansi-regex": "^4.1.0" 1622 | } 1623 | }, 1624 | "supports-color": { 1625 | "version": "5.5.0", 1626 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1627 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1628 | "requires": { 1629 | "has-flag": "^3.0.0" 1630 | } 1631 | }, 1632 | "symbol-tree": { 1633 | "version": "3.2.4", 1634 | "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", 1635 | "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" 1636 | }, 1637 | "toidentifier": { 1638 | "version": "1.0.0", 1639 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1640 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1641 | }, 1642 | "tough-cookie": { 1643 | "version": "3.0.1", 1644 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", 1645 | "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", 1646 | "requires": { 1647 | "ip-regex": "^2.1.0", 1648 | "psl": "^1.1.28", 1649 | "punycode": "^2.1.1" 1650 | } 1651 | }, 1652 | "tr46": { 1653 | "version": "2.0.2", 1654 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", 1655 | "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", 1656 | "requires": { 1657 | "punycode": "^2.1.1" 1658 | } 1659 | }, 1660 | "tunnel-agent": { 1661 | "version": "0.6.0", 1662 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1663 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1664 | "requires": { 1665 | "safe-buffer": "^5.0.1" 1666 | } 1667 | }, 1668 | "turndown": { 1669 | "version": "6.0.0", 1670 | "resolved": "https://registry.npmjs.org/turndown/-/turndown-6.0.0.tgz", 1671 | "integrity": "sha512-UVJBhSyRHCpNKtQ00mNWlYUM/i+tcipkb++F0PrOpt0L7EhNd0AX9mWEpL2dRFBu7LWXMp4HgAMA4OeKKnN7og==", 1672 | "requires": { 1673 | "jsdom": "^16.2.0" 1674 | } 1675 | }, 1676 | "tweetnacl": { 1677 | "version": "0.14.5", 1678 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 1679 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" 1680 | }, 1681 | "twilio": { 1682 | "version": "3.48.1", 1683 | "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.48.1.tgz", 1684 | "integrity": "sha512-gUfkLPt4llVXWuUeZ5V3O0zyWvG0yt49CFUoAUoOlqsoILoVjcwGe5xfDhk87J6Iotc1CX4tMeBupdHmd2Cn1g==", 1685 | "requires": { 1686 | "@types/express": "^4.17.7", 1687 | "axios": "^0.19.2", 1688 | "dayjs": "^1.8.29", 1689 | "jsonwebtoken": "^8.5.1", 1690 | "lodash": "^4.17.19", 1691 | "q": "2.0.x", 1692 | "qs": "^6.9.4", 1693 | "rootpath": "^0.1.2", 1694 | "scmp": "^2.1.0", 1695 | "url-parse": "^1.4.7", 1696 | "xmlbuilder": "^13.0.2" 1697 | }, 1698 | "dependencies": { 1699 | "qs": { 1700 | "version": "6.9.4", 1701 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", 1702 | "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" 1703 | } 1704 | } 1705 | }, 1706 | "type-check": { 1707 | "version": "0.3.2", 1708 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1709 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1710 | "requires": { 1711 | "prelude-ls": "~1.1.2" 1712 | } 1713 | }, 1714 | "type-is": { 1715 | "version": "1.6.18", 1716 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1717 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1718 | "requires": { 1719 | "media-typer": "0.3.0", 1720 | "mime-types": "~2.1.24" 1721 | } 1722 | }, 1723 | "typedarray": { 1724 | "version": "0.0.6", 1725 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1726 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 1727 | }, 1728 | "unpipe": { 1729 | "version": "1.0.0", 1730 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1731 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1732 | }, 1733 | "uri-js": { 1734 | "version": "4.2.2", 1735 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 1736 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 1737 | "requires": { 1738 | "punycode": "^2.1.0" 1739 | } 1740 | }, 1741 | "url-parse": { 1742 | "version": "1.4.7", 1743 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", 1744 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", 1745 | "requires": { 1746 | "querystringify": "^2.1.1", 1747 | "requires-port": "^1.0.0" 1748 | } 1749 | }, 1750 | "util-deprecate": { 1751 | "version": "1.0.2", 1752 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1753 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1754 | }, 1755 | "utils-merge": { 1756 | "version": "1.0.1", 1757 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1758 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1759 | }, 1760 | "uuid": { 1761 | "version": "3.4.0", 1762 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 1763 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" 1764 | }, 1765 | "vary": { 1766 | "version": "1.1.2", 1767 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1768 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1769 | }, 1770 | "verror": { 1771 | "version": "1.10.0", 1772 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 1773 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 1774 | "requires": { 1775 | "assert-plus": "^1.0.0", 1776 | "core-util-is": "1.0.2", 1777 | "extsprintf": "^1.2.0" 1778 | } 1779 | }, 1780 | "w3c-hr-time": { 1781 | "version": "1.0.2", 1782 | "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", 1783 | "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", 1784 | "requires": { 1785 | "browser-process-hrtime": "^1.0.0" 1786 | } 1787 | }, 1788 | "w3c-xmlserializer": { 1789 | "version": "2.0.0", 1790 | "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", 1791 | "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", 1792 | "requires": { 1793 | "xml-name-validator": "^3.0.0" 1794 | } 1795 | }, 1796 | "weak-map": { 1797 | "version": "1.0.5", 1798 | "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", 1799 | "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=" 1800 | }, 1801 | "webidl-conversions": { 1802 | "version": "6.1.0", 1803 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", 1804 | "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" 1805 | }, 1806 | "whatwg-encoding": { 1807 | "version": "1.0.5", 1808 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", 1809 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", 1810 | "requires": { 1811 | "iconv-lite": "0.4.24" 1812 | } 1813 | }, 1814 | "whatwg-mimetype": { 1815 | "version": "2.3.0", 1816 | "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", 1817 | "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" 1818 | }, 1819 | "whatwg-url": { 1820 | "version": "8.1.0", 1821 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.1.0.tgz", 1822 | "integrity": "sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==", 1823 | "requires": { 1824 | "lodash.sortby": "^4.7.0", 1825 | "tr46": "^2.0.2", 1826 | "webidl-conversions": "^5.0.0" 1827 | }, 1828 | "dependencies": { 1829 | "webidl-conversions": { 1830 | "version": "5.0.0", 1831 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", 1832 | "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" 1833 | } 1834 | } 1835 | }, 1836 | "which-module": { 1837 | "version": "2.0.0", 1838 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1839 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 1840 | }, 1841 | "word-wrap": { 1842 | "version": "1.2.3", 1843 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1844 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" 1845 | }, 1846 | "wrap-ansi": { 1847 | "version": "5.1.0", 1848 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1849 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1850 | "requires": { 1851 | "ansi-styles": "^3.2.0", 1852 | "string-width": "^3.0.0", 1853 | "strip-ansi": "^5.0.0" 1854 | } 1855 | }, 1856 | "ws": { 1857 | "version": "7.3.1", 1858 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", 1859 | "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==" 1860 | }, 1861 | "xml-name-validator": { 1862 | "version": "3.0.0", 1863 | "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", 1864 | "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" 1865 | }, 1866 | "xmlbuilder": { 1867 | "version": "13.0.2", 1868 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", 1869 | "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" 1870 | }, 1871 | "xmlchars": { 1872 | "version": "2.2.0", 1873 | "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", 1874 | "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" 1875 | }, 1876 | "xtend": { 1877 | "version": "4.0.2", 1878 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1879 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1880 | }, 1881 | "y18n": { 1882 | "version": "4.0.0", 1883 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 1884 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" 1885 | }, 1886 | "yargs": { 1887 | "version": "14.2.3", 1888 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", 1889 | "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", 1890 | "requires": { 1891 | "cliui": "^5.0.0", 1892 | "decamelize": "^1.2.0", 1893 | "find-up": "^3.0.0", 1894 | "get-caller-file": "^2.0.1", 1895 | "require-directory": "^2.1.1", 1896 | "require-main-filename": "^2.0.0", 1897 | "set-blocking": "^2.0.0", 1898 | "string-width": "^3.0.0", 1899 | "which-module": "^2.0.0", 1900 | "y18n": "^4.0.0", 1901 | "yargs-parser": "^15.0.1" 1902 | } 1903 | }, 1904 | "yargs-parser": { 1905 | "version": "15.0.1", 1906 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", 1907 | "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", 1908 | "requires": { 1909 | "camelcase": "^5.0.0", 1910 | "decamelize": "^1.2.0" 1911 | } 1912 | } 1913 | } 1914 | } 1915 | --------------------------------------------------------------------------------