From 9379dec1b0e11db9e245f9322dd68af66d983edf Mon Sep 17 00:00:00 2001 From: "Rodrigo Rodriguez (pragmatismo.io)" Date: Fri, 30 Nov 2018 11:55:44 -0200 Subject: [PATCH] fix(core): Bot Server is runnable again after refactory. --- package-lock.json | 5 + package.json | 1 + packages/core.gbapp/dialogs/WelcomeDialog.ts | 1 + packages/core.gbapp/services/GBAPIService.ts | 49 +- packages/core.gbapp/services/GBDeployer.ts | 100 ++-- packages/core.gbapp/services/GBMinService.ts | 14 +- packages/core.gbapp/services/GBVMService.ts | 17 +- packages/default.gbdialog/bot.vbs.js | 15 +- packages/default.gbui/package-lock.json | 516 ++++--------------- packages/default.gbui/package.json | 15 +- packages/default.gbui/src/GBUIApp.js | 3 - packages/kb.gbapp/dialogs/AskDialog.ts | 3 +- packages/whatsapp.gblib/index.ts | 2 +- src/app.ts | 9 +- 14 files changed, 187 insertions(+), 563 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17f168a0..10f5ac14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19158,6 +19158,11 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vbscript-to-typescript": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vbscript-to-typescript/-/vbscript-to-typescript-1.0.8.tgz", + "integrity": "sha512-vjElTpd4EVxUoxeGrRId4hetHdlyxIRicxkZxdErFfLJ9X7xyw0HEboXZO+s8prIC7s1eh0ulkuVbencrv6fAQ==" + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", diff --git a/package.json b/package.json index 30542ebc..c1069077 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,7 @@ "typedoc-plugin-markdown": "^1.1.18", "typescript": "3.1.6", "url-join": "4.0.0", + "vbscript-to-typescript": "^1.0.8", "wait-until": "0.0.2", "walk-promise": "0.2.0", "winston": "3.1.0" diff --git a/packages/core.gbapp/dialogs/WelcomeDialog.ts b/packages/core.gbapp/dialogs/WelcomeDialog.ts index b4dcfe75..ced210bb 100644 --- a/packages/core.gbapp/dialogs/WelcomeDialog.ts +++ b/packages/core.gbapp/dialogs/WelcomeDialog.ts @@ -80,6 +80,7 @@ export class WelcomeDialog extends IGBDialog { await step.replaceDialog('/answer', { query: step.context.activity.text }); } } + return await step.next(); } ])); diff --git a/packages/core.gbapp/services/GBAPIService.ts b/packages/core.gbapp/services/GBAPIService.ts index f489fcb0..e2d37ba6 100644 --- a/packages/core.gbapp/services/GBAPIService.ts +++ b/packages/core.gbapp/services/GBAPIService.ts @@ -32,8 +32,8 @@ 'use strict'; -import { WaterfallDialog } from 'botbuilder-dialogs'; -import { IGBInstance, IGBPackage ,GBMinInstance } from 'botlib'; +import { TurnContext } from 'botbuilder'; +import { GBMinInstance } from 'botlib'; /** * @fileoverview General Bots server core. @@ -41,41 +41,30 @@ import { IGBInstance, IGBPackage ,GBMinInstance } from 'botlib'; export class DialogClass { public min: GBMinInstance; + public context: TurnContext; constructor(min: GBMinInstance) { this.min = min; - } + } public async hear(text: string): Promise { - return new Promise((resolve, reject) => { - this.min.dialogs.add( - new WaterfallDialog('/vmExpect', [ - async step => { - await step.prompt('textPrompt', text); - return await step.next(); - }, - async step => { - resolve(step.result); - return await step.next(); - } - ]) - ); - }); - } - - public post(url: string, data) { - + // await this.context.beginDialog('textPrompt', text); } public talk(text: string) { - this.min.dialogs.add( - new WaterfallDialog('/vmSend', [ - async step => { - await step.context.sendActivity(text); - - return await step.next(); - } - ]) - ); + this.context.sendActivity(text); } + + /** + * Generic function to call any REST API. + */ + public sendEmail(to, subject, body) { + // tslint:disable-next-line:no-console + console.log(`[E-mail]: to:${to}, subject: ${subject}, body: ${body}.`); + } + + /** + * Generic function to call any REST API. + */ + public post(url: string, data) {} } diff --git a/packages/core.gbapp/services/GBDeployer.ts b/packages/core.gbapp/services/GBDeployer.ts index b79eff07..da535e02 100644 --- a/packages/core.gbapp/services/GBDeployer.ts +++ b/packages/core.gbapp/services/GBDeployer.ts @@ -42,6 +42,7 @@ const UrlJoin = require('url-join'); const Fs = require('fs'); const WaitUntil = require('wait-until'); const express = require('express'); +const child_process = require('child_process'); import { GBMinInstance, IGBCoreService, IGBInstance } from 'botlib'; import { GBError } from 'botlib'; @@ -67,13 +68,9 @@ export class GBDeployer { } public static getConnectionStringFromInstance(instance: GuaribasInstance) { - return `Server=tcp:${ - instance.storageServer - }.database.windows.net,1433;Database=${instance.storageName};User ID=${ + return `Server=tcp:${instance.storageServer}.database.windows.net,1433;Database=${instance.storageName};User ID=${ instance.storageUsername - };Password=${ - instance.storagePassword - };Trusted_Connection=False;Encrypt=True;Connection Timeout=30;`; + };Password=${instance.storagePassword};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;`; } /** @@ -81,11 +78,7 @@ export class GBDeployer { * Performs package deployment in all .gbai or default. * * */ - public deployPackages( - core: IGBCoreService, - server: any, - appPackages: IGBPackage[] - ) { + public deployPackages(core: IGBCoreService, server: any, appPackages: IGBPackage[]) { const _this = this; return new Promise( (resolve: any, reject: any): any => { @@ -122,9 +115,7 @@ export class GBDeployer { }); } - logger.info( - `Starting looking for packages (.gbot, .gbtheme, .gbkb, .gbapp)...` - ); + logger.info(`Starting looking for packages (.gbot, .gbtheme, .gbkb, .gbapp)...`); paths.forEach(e => { logger.info(`Looking in: ${e}...`); doIt(e); @@ -174,10 +165,10 @@ export class GBDeployer { /** Deploys all .gbot files first. */ botPackages.forEach(e => { - if (e!=='packages\\boot.gbot'){ - logger.info(`Deploying bot: ${e}...`); - _this.deployBot(e); - logger.info(`Bot: ${e} deployed...`); + if (e !== 'packages\\boot.gbot') { + logger.info(`Deploying bot: ${e}...`); + _this.deployBot(e); + logger.info(`Bot: ${e} deployed...`); } }); @@ -191,27 +182,16 @@ export class GBDeployer { /** Handles apps for general bots - .gbapp must stay out of deploy folder. */ - if ( - Path.extname(filename) === '.gbapp' || - Path.extname(filename) === '.gblib' - ) { + if (Path.extname(filename) === '.gbapp' || Path.extname(filename) === '.gblib') { /** Themes for bots. */ } else if (Path.extname(filename) === '.gbtheme') { server.use('/themes/' + filenameOnly, express.static(filename)); - logger.info( - `Theme (.gbtheme) assets accessible at: ${'/themes/' + - filenameOnly}.` - ); + logger.info(`Theme (.gbtheme) assets accessible at: ${'/themes/' + filenameOnly}.`); /** Knowledge base for bots. */ } else if (Path.extname(filename) === '.gbkb') { - server.use( - '/kb/' + filenameOnly + '/subjects', - express.static(UrlJoin(filename, 'subjects')) - ); - logger.info( - `KB (.gbkb) assets accessible at: ${'/kb/' + filenameOnly}.` - ); + server.use('/kb/' + filenameOnly + '/subjects', express.static(UrlJoin(filename, 'subjects'))); + logger.info(`KB (.gbkb) assets accessible at: ${'/kb/' + filenameOnly}.`); } else if (Path.extname(filename) === '.gbui') { // Already Handled } else if (Path.extname(filename) === '.gbdialog') { @@ -253,18 +233,12 @@ export class GBDeployer { public async deployBot(localPath: string): Promise { const packageType = Path.extname(localPath); const packageName = Path.basename(localPath); - const instance = await this.importer.importIfNotExistsBotPackage(null, - packageName, - localPath - ); + const instance = await this.importer.importIfNotExistsBotPackage(null, packageName, localPath); return instance; } - public async deployPackageToStorage( - instanceId: number, - packageName: string - ): Promise { + public async deployPackageToStorage(instanceId: number, packageName: string): Promise { return GuaribasPackage.create({ packageName: packageName, instanceId: instanceId @@ -308,18 +282,13 @@ export class GBDeployer { return vm.loadJS(localPath, min, this.core, this, localPath); default: - const err = GBError.create( - `GuaribasBusinessError: Unknown package type: ${packageType}.` - ); + const err = GBError.create(`GuaribasBusinessError: Unknown package type: ${packageType}.`); Promise.reject(err); break; } } - public async undeployPackageFromLocalPath( - instance: IGBInstance, - localPath: string - ) { + public async undeployPackageFromLocalPath(instance: IGBInstance, localPath: string) { const packageType = Path.extname(localPath); const packageName = Path.basename(localPath); @@ -345,9 +314,7 @@ export class GBDeployer { break; default: - const err = GBError.create( - `GuaribasBusinessError: Unknown package type: ${packageType}.` - ); + const err = GBError.create(`GuaribasBusinessError: Unknown package type: ${packageType}.`); Promise.reject(err); break; } @@ -361,9 +328,7 @@ export class GBDeployer { instance.searchIndexer ); - const connectionString = GBDeployer.getConnectionStringFromInstance( - instance - ); + const connectionString = GBDeployer.getConnectionStringFromInstance(instance); const dsName = 'gb'; try { @@ -375,13 +340,7 @@ export class GBDeployer { } } - await search.createDataSource( - dsName, - dsName, - 'GuaribasQuestion', - 'azuresql', - connectionString - ); + await search.createDataSource(dsName, dsName, 'GuaribasQuestion', 'azuresql', connectionString); try { await search.deleteIndex(); @@ -391,19 +350,22 @@ export class GBDeployer { throw err; } } - await search.createIndex( - AzureDeployerService.getKBSearchSchema(instance.searchIndex), - dsName - ); + await search.createIndex(AzureDeployerService.getKBSearchSchema(instance.searchIndex), dsName); } - public async getPackageByName( - instanceId: number, - packageName: string - ): Promise { + public async getPackageByName(instanceId: number, packageName: string): Promise { const where = { packageName: packageName, instanceId: instanceId }; return GuaribasPackage.findOne({ where: where }); } + + public installDefaultGBUI() { + const root = 'packages/default.gbui'; + if (!Fs.existsSync(`${root}/build`)) { + Fs.writeFileSync(`${root}/.env`, 'SKIP_PREFLIGHT_CHECK=true'); + child_process.execSync('npm install', { cwd: root }); + child_process.execSync('npm run build', { cwd: root }); + } + } } diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index eb974773..9d646020 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -108,6 +108,7 @@ export class GBMinService { * */ public async buildMin( + bootInstance: GuaribasInstance, server: any, appPackages: IGBPackage[], instances: GuaribasInstance[], @@ -134,7 +135,11 @@ export class GBMinService { (async () => { // Returns the instance object to clients requesting bot info. - const botId = req.params.botId; + let botId = req.params.botId; + if (botId === '[default]'){ + botId = bootInstance.botId; + } + const instance = await this.core.loadInstance(botId); if (instance) { @@ -477,8 +482,10 @@ export class GBMinService { // Processes messages. } else if (context.activity.type === 'message') { // Checks for /admin request. - - if (context.activity.text === 'admin') { + if (context.activity.text === 'vba') { + min.sandbox.context = context; + min.sandbox['chat'](min.sandbox); + } else if (context.activity.text === 'admin') { await step.beginDialog('/admin'); // Checks for /menu JSON signature. @@ -500,6 +507,7 @@ export class GBMinService { // Processes events. } else if (context.activity.type === 'event') { + // Empties dialog stack before going to the target. await step.endAll(); diff --git a/packages/core.gbapp/services/GBVMService.ts b/packages/core.gbapp/services/GBVMService.ts index 4249f6b9..4a6e480a 100644 --- a/packages/core.gbapp/services/GBVMService.ts +++ b/packages/core.gbapp/services/GBVMService.ts @@ -32,23 +32,17 @@ 'use strict'; -import { IGBCoreService, IGBInstance } from 'botlib'; -import { GBMinInstance } from 'botlib'; -const logger = require('../../../src/logger'); -import { BotAdapter } from 'botbuilder'; -import { WaterfallDialog } from 'botbuilder-dialogs'; +import { GBMinInstance, IGBCoreService } from 'botlib'; import * as fs from 'fs'; -import { Messages } from '../strings'; import { DialogClass } from './GBAPIService'; import { GBDeployer } from './GBDeployer'; const util = require('util'); +const logger = require('../../../src/logger'); const vm = require('vm'); -import processExists = require('process-exists'); -import { Sequelize } from 'sequelize-typescript'; const UrlJoin = require('url-join'); /** - * @fileoverview General Bots server core. + * @fileoverview Virtualization services for emulation of BASIC. */ export class GBVMService implements IGBCoreService { @@ -66,12 +60,11 @@ export class GBVMService implements IGBCoreService { const code: string = fs.readFileSync(localPath, 'utf8'); const sandbox: DialogClass = new DialogClass(min); const context = vm.createContext(sandbox); - vm.runInContext(code, context); - console.log(util.inspect(sandbox)); - sandbox['chat'](sandbox); await deployer.deployScriptToStorage(min.instanceId, filename); logger.info(`[GBVMService] Finished loading of ${filename}`); + + min.sandbox = sandbox; } } diff --git a/packages/default.gbdialog/bot.vbs.js b/packages/default.gbdialog/bot.vbs.js index c18aa941..22f66cb4 100644 --- a/packages/default.gbdialog/bot.vbs.js +++ b/packages/default.gbdialog/bot.vbs.js @@ -33,15 +33,8 @@ function chat(bot) { // //**************************************************************************** - bot.talk('Qual seu e-mail?'); - - main = () => { - bot.addFunction(PegaEmail); - - PegaEmail = bot => { - bot.talk('Qual seu e-mail?'); - email = bot.expectEmail; - bot.post('/restservice', email); - }; - }; + bot.talk('Please, what is your e-mail?'); + //email = bot.expectEmail(); + //bot.talk('Thanks, sending e-mail to: ' + email); + //bot.sendEmail(to, 'Message from VBA Bot', 'Yes, I can send e-mails.'); } diff --git a/packages/default.gbui/package-lock.json b/packages/default.gbui/package-lock.json index c787988b..a586ba92 100644 --- a/packages/default.gbui/package-lock.json +++ b/packages/default.gbui/package-lock.json @@ -1134,9 +1134,9 @@ "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==" }, "adaptivecards": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/adaptivecards/-/adaptivecards-1.1.0.tgz", - "integrity": "sha512-n4vRIjo0vKvjMMnTKqRZm3TXhq+8saN1s17Z0pQEtDpBWjrGbfn8e+Qx/xvgNjqFYzWIme7uZAX3DBDhSOLu/A==" + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/adaptivecards/-/adaptivecards-1.0.0.tgz", + "integrity": "sha1-96HxdpJRYmirQMpU8Z/aP6WJdjQ=" }, "address": { "version": "1.0.3", @@ -2043,15 +2043,6 @@ } } }, - "babel-runtime": { - "version": "7.0.0-beta.3", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-7.0.0-beta.3.tgz", - "integrity": "sha512-jlzZ8RACjt0QGxq+wqsw5bCQE9RcUyWpw987mDY3GYxTpOQT2xoyNoG++oVCHzr/nACLBIprfVBNvv/If1ZYcg==", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, "babel-template": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", @@ -2338,86 +2329,48 @@ } }, "botframework-webchat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-4.1.0.tgz", - "integrity": "sha512-ZvmY2iYN+VPp/myuqVRHGehgx+xtHXnv7cwn1c2nCz+/ak0WAR4D2sakxEhX4vB09t5MNUbx8GYq9GPxTI+lCA==", + "version": "0.14.3-master.72bfef9", + "resolved": "https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-0.14.3-master.72bfef9.tgz", + "integrity": "sha512-rgppVWeVd43FT5O2HpoPeVkowPtGN74cAhC+ZSGGd7HiDq5UyHtR4+PISLvR9XtRy/dLTF2afubOOThPvW+44w==", "requires": { - "@babel/runtime": "^7.0.0", - "adaptivecards": "^1.0.0", - "babel-runtime": "^7.0.0-beta.3", - "botframework-directlinejs": "^0.10.0", - "botframework-webchat-component": "4.1.0", - "botframework-webchat-core": "4.1.0", - "core-js": "^2.5.7", - "markdown-it": "^8.4.2", - "markdown-it-for-inline": "^0.1.1", - "memoize-one": "^4.0.2", - "microsoft-speech-browser-sdk": "^0.0.12", - "react": "^16.5.0", - "react-dom": "^16.5.0", - "react-redux": "^5.0.7", - "redux": "^4.0.0", - "sanitize-html": "^1.19.0", - "store": "^2.0.12", - "url-search-params-polyfill": "^5.0.0", - "web-speech-cognitive-services": "^3.0.0", - "whatwg-fetch": "^3.0.0" + "adaptivecards": "1.0.0", + "bluebird": "^3.5.1", + "botframework-directlinejs": "0.9.17", + "core-js": "2.4.1", + "jspeech": "^0.1.1", + "markdown-it": "8.3.1", + "microsoft-speech-browser-sdk": "0.0.12", + "react-redux": "5.0.5", + "redux": "3.7.2", + "redux-observable": "0.13.0", + "rxjs": "5.4.3", + "simple-update-in": "^1.2.0", + "tslib": "1.7.1" }, "dependencies": { - "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + "botframework-directlinejs": { + "version": "0.9.17", + "resolved": "https://registry.npmjs.org/botframework-directlinejs/-/botframework-directlinejs-0.9.17.tgz", + "integrity": "sha512-Ib2BhalcxbKi5rtCO1OX5VhWkfb/rN/voq5823hCIvd/p+GCI/G9jEnxzRcfFWmLUk6hWYjwUnKarIeg93YiMA==", + "requires": { + "rxjs": "^5.0.3" + } + }, + "core-js": { + "version": "2.4.1", + "resolved": "http://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "rxjs": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.3.tgz", + "integrity": "sha512-fSNi+y+P9ss+EZuV0GcIIqPUK07DEaMRUtLJvdcvMyFjc9dizuDjere+A4V7JrLGnm9iCc+nagV/4QdMTkqC4A==", + "requires": { + "symbol-observable": "^1.0.1" + } } } }, - "botframework-webchat-component": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/botframework-webchat-component/-/botframework-webchat-component-4.1.0.tgz", - "integrity": "sha512-kTgAxA1zMwblg/3/cE2GjWX9ff+NodCnVMcPm7Daas5iik74orqoPUJKARcKNH+iRihlfE/2oeoj06Gl0CB1Gw==", - "requires": { - "adaptivecards": "^1.0.0", - "botframework-webchat-core": "4.1.0", - "bytes": "^3.0.0", - "classnames": "^2.2.6", - "glamor": "^2.20.40", - "memoize-one": "^3.1.1", - "react-dictate-button": "^1.1.3", - "react-film": "^1.1.1", - "react-redux": "^5.0.7", - "react-say": "^1.1.1", - "react-scroll-to-bottom": "^1.2.0", - "redux": "^4.0.0", - "sanitize-html": "^1.18.2", - "simple-update-in": "^1.3.0" - }, - "dependencies": { - "memoize-one": { - "version": "3.1.1", - "resolved": "http://registry.npmjs.org/memoize-one/-/memoize-one-3.1.1.tgz", - "integrity": "sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA==" - } - } - }, - "botframework-webchat-core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/botframework-webchat-core/-/botframework-webchat-core-4.1.0.tgz", - "integrity": "sha512-mPw92k0Pq2ATsx1rE3oi73oy7lqrCfzV/XFK+XjXYeiSp6PMi1Mn6B4eIrnGKZe8vLQ8Y92jt0Zgq7HUl2jqLg==", - "requires": { - "@babel/runtime": "^7.0.0-rc.2", - "jsonwebtoken": "^8.3.0", - "mime": "^2.3.1", - "redux": "^4.0.0", - "redux-promise-middleware": "^5.1.1", - "redux-saga": "^0.16.0", - "simple-update-in": "^1.3.0" - } - }, - "bowser": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz", - "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2555,11 +2508,6 @@ "isarray": "^1.0.0" } }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2883,11 +2831,6 @@ } } }, - "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - }, "clean-css": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", @@ -3234,6 +3177,16 @@ "sha.js": "^2.4.8" } }, + "create-react-class": { + "version": "15.6.3", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", + "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", + "requires": { + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3290,15 +3243,6 @@ } } }, - "css-in-js-utils": { - "version": "2.0.1", - "resolved": "http://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "requires": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - } - }, "css-loader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.0.tgz", @@ -3912,14 +3856,6 @@ "webidl-conversions": "^4.0.2" } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, "domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", @@ -3988,14 +3924,6 @@ "safer-buffer": "^2.1.0" } }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4503,21 +4431,11 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "event-as-promise": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/event-as-promise/-/event-as-promise-1.0.5.tgz", - "integrity": "sha512-z/WIlyou7oTvXBjm5YYjfklr2d8gUWtx8b5GAcrIs1n1D35f7NIK0CrcYSXbY3VYikG9bUan+wScPyGXL/NH4A==" - }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=" }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" - }, "eventsource": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", @@ -6168,18 +6086,6 @@ "assert-plus": "^1.0.0" } }, - "glamor": { - "version": "2.20.40", - "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz", - "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==", - "requires": { - "fbjs": "^0.8.12", - "inline-style-prefixer": "^3.0.6", - "object-assign": "^4.1.1", - "prop-types": "^15.5.10", - "through": "^2.3.8" - } - }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -6504,12 +6410,9 @@ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, "hoist-non-react-statics": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.1.0.tgz", - "integrity": "sha512-MYcYuROh7SBM69xHGqXEwQqDux34s9tz+sCnxJmN18kgWh6JFdTw/5YdZtqsOdZJXddE/wUpCzfEdDrJj8p0Iw==", - "requires": { - "react-is": "^16.3.2" - } + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" }, "home-or-tmp": { "version": "2.0.0", @@ -6628,19 +6531,6 @@ "util.promisify": "1.0.0" } }, - "htmlparser2": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", - "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", - "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6" - } - }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -6977,11 +6867,6 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, - "hyphenate-style-name": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz", - "integrity": "sha1-MRYKNpMK2vH8BMYHT360FGXU7Es=" - }, "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", @@ -7097,15 +6982,6 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, - "inline-style-prefixer": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz", - "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=", - "requires": { - "bowser": "^1.7.3", - "css-in-js-utils": "^2.0.0" - } - }, "inquirer": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", @@ -8280,21 +8156,10 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "jsonwebtoken": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", - "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", - "requires": { - "jws": "^3.1.5", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1" - } + "jspeech": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jspeech/-/jspeech-0.1.1.tgz", + "integrity": "sha1-n+wcnRGeFJBajeqCpQWvBs+Sg1k=" }, "jsprim": { "version": "1.4.1", @@ -8315,25 +8180,6 @@ "array-includes": "^3.0.3" } }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -8394,9 +8240,9 @@ } }, "linkify-it": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", - "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.1.0.tgz", + "integrity": "sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg==", "requires": { "uc.micro": "^1.0.1" } @@ -8503,6 +8349,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, + "lodash-es": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.11.tgz", + "integrity": "sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q==" + }, "lodash._reinterpolate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", @@ -8513,66 +8364,16 @@ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, - "lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -8682,22 +8483,17 @@ } }, "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.3.1.tgz", + "integrity": "sha1-L0tiKUjM3Bk9ZvPKLUMSWsSscyM=", "requires": { "argparse": "^1.0.7", "entities": "~1.1.1", "linkify-it": "^2.0.0", "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "uc.micro": "^1.0.3" } }, - "markdown-it-for-inline": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/markdown-it-for-inline/-/markdown-it-for-inline-0.1.1.tgz", - "integrity": "sha1-Q18jFvW15o4UUM+iJC8rjVmtx18=" - }, "math-random": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", @@ -8736,11 +8532,6 @@ "mimic-fn": "^1.0.0" } }, - "memoize-one": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-4.0.3.tgz", - "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==" - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -11569,16 +11360,6 @@ } } }, - "react-dictate-button": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/react-dictate-button/-/react-dictate-button-1.1.3.tgz", - "integrity": "sha512-4Od7sTAEIvPKpZbpy1tCv7qqfRNwLnZom9hrLnNvr1FIWjSOYC94ekAP8S5kevqnVaFvSqwFisCmjd3uLmvsrA==", - "requires": { - "classnames": "^2.2.6", - "glamor": "^2.20.40", - "memoize-one": "^4.0.0" - } - }, "react-dom": { "version": "16.6.3", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.6.3.tgz", @@ -11606,15 +11387,6 @@ "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-5.1.0.tgz", "integrity": "sha512-akMy/BQT5m1J3iJIHkSb4qycq2wzllWsmmolaaFVnb+LPV9cIJ/nTud40ZsiiT0H3P+/wXIdbjx2fzF61OaeOQ==" }, - "react-film": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/react-film/-/react-film-1.1.1.tgz", - "integrity": "sha512-el6Uw1yDeiu7cKyyuL0eupAKO6vmmTX8un+5btvyYlzD15J1JWLp+Q4rKR3JfcJ2ZM8LKPhAHMfCUGV8t9lVMQ==", - "requires": { - "classnames": "^2.2.6", - "glamor": "^2.20.40" - } - }, "react-helmet": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", @@ -11626,11 +11398,6 @@ "react-side-effect": "^1.1.0" } }, - "react-is": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.6.1.tgz", - "integrity": "sha512-wOKsGtvTMYs7WAscmwwdM8sfRRvE17Ym30zFj3n37Qx5tHRfhenPKEPILHaHob6WoLFADmQm1ZNrE5xMCM6sCw==" - }, "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", @@ -11655,28 +11422,17 @@ } }, "react-redux": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.1.tgz", - "integrity": "sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.5.tgz", + "integrity": "sha1-+OjHsjlCJXblLWt9sGQ5RpvphGo=", "requires": { - "@babel/runtime": "^7.1.2", - "hoist-non-react-statics": "^3.1.0", - "invariant": "^2.2.4", + "create-react-class": "^15.5.3", + "hoist-non-react-statics": "^1.0.3", + "invariant": "^2.0.0", + "lodash": "^4.2.0", + "lodash-es": "^4.2.0", "loose-envify": "^1.1.0", - "prop-types": "^15.6.1", - "react-is": "^16.6.0", - "react-lifecycles-compat": "^3.0.0" - } - }, - "react-say": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/react-say/-/react-say-1.1.1.tgz", - "integrity": "sha512-R+XfFQjpwlD48miC0AAb6DZDq4h5DkKFnqQFi/83wpO73isfYx+wuPU6PodzRGP4rF+/6nibnKc2V328ifiALA==", - "requires": { - "classnames": "^2.2.6", - "event-as-promise": "^1.0.3", - "glamor": "^2.20.40", - "memoize-one": "^4.0.0" + "prop-types": "^15.5.10" } }, "react-scripts": { @@ -11749,17 +11505,6 @@ } } }, - "react-scroll-to-bottom": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/react-scroll-to-bottom/-/react-scroll-to-bottom-1.2.0.tgz", - "integrity": "sha512-/tAaVVnSpnMtv4PVIxmxOFh45g6PcUihIK6zH17WTPkqreRFRrbCBnC7ieVu2isV68Zjee98cmBMGgKapI9fCw==", - "requires": { - "classnames": "^2.2.6", - "glamor": "^2.20.40", - "memoize-one": "^4.0.2", - "simple-update-in": "^1.4.0" - } - }, "react-side-effect": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.1.5.tgz", @@ -11837,16 +11582,6 @@ } } }, - "readable-stream": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.0.6.tgz", - "integrity": "sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -12146,22 +11881,16 @@ } }, "redux": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.1.tgz", - "integrity": "sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" }, "dependencies": { - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "symbol-observable": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", @@ -12169,15 +11898,10 @@ } } }, - "redux-promise-middleware": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/redux-promise-middleware/-/redux-promise-middleware-5.1.1.tgz", - "integrity": "sha512-YC1tiheU28Hgmtu5HHMLiuveLgjL1aCJWsSnwquMiZBcj5i/J9qVLt6vgOnb0Gz37y4deJ/rjiNt7l6Dh+Z8lA==" - }, - "redux-saga": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-0.16.2.tgz", - "integrity": "sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w==" + "redux-observable": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/redux-observable/-/redux-observable-0.13.0.tgz", + "integrity": "sha1-NbJsLNu3HkmbMcqZYdoFgcKXOQk=" }, "regenerate": { "version": "1.4.0", @@ -12555,20 +12279,10 @@ "aproba": "^1.1.1" } }, - "rxjs": { + "rxjs-compat": { "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - } - } + "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.3.3.tgz", + "integrity": "sha512-caGN7ixiabHpOofginKEquuHk7GgaCrC7UpUQ9ZqGp80tMc68msadOeP/2AKy2R4YJsT1+TX5GZCtxO82qWkyA==" }, "safe-buffer": { "version": "5.1.2", @@ -12867,23 +12581,6 @@ } } }, - "sanitize-html": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.19.1.tgz", - "integrity": "sha512-zNYr6FvBn4bZukr9x2uny6od/9YdjCLwF+FqxivqI0YOt/m9GIxfX+tWhm52tBAPUXiTTb4bJTGVagRz5b06bw==", - "requires": { - "chalk": "^2.3.0", - "htmlparser2": "^3.9.0", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.mergewith": "^4.6.0", - "postcss": "^6.0.14", - "srcset": "^1.0.0", - "xtend": "^4.0.0" - } - }, "sass-loader": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", @@ -13539,15 +13236,6 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "srcset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", - "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", - "requires": { - "array-uniq": "^1.0.2", - "number-is-nan": "^1.0.0" - } - }, "sshpk": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", @@ -13611,11 +13299,6 @@ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, - "store": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/store/-/store-2.0.12.tgz", - "integrity": "sha1-jFNOKguDH3K3X8XxEZhXxE711ZM=" - }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -14531,11 +14214,6 @@ "requires-port": "^1.0.0" } }, - "url-search-params-polyfill": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-5.0.0.tgz", - "integrity": "sha512-+SCD22QJp4UnqPOI5UTTR0Ljuh8cHbjEf1lIiZrZ8nHTlTixqwVsVQTSfk5vrmDz7N09/Y+ka5jQr0ff35FnQQ==" - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -14675,18 +14353,6 @@ "minimalistic-assert": "^1.0.0" } }, - "web-speech-cognitive-services": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/web-speech-cognitive-services/-/web-speech-cognitive-services-3.0.0.tgz", - "integrity": "sha512-mkAsnL1pzGTn4TXKxFNwcgYL5hhh/NyvZtUghsFk6cGuP2OHebG8K04uJlcwpZnzp18HSWyi3YcYXXGU1tAZJg==", - "requires": { - "@babel/runtime": "^7.1.2", - "event-as-promise": "^1.0.5", - "events": "^3.0.0", - "memoize-one": "^4.0.0", - "simple-update-in": "^1.2.0" - } - }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", diff --git a/packages/default.gbui/package.json b/packages/default.gbui/package.json index 1366ff36..80ae13d3 100644 --- a/packages/default.gbui/package.json +++ b/packages/default.gbui/package.json @@ -2,24 +2,27 @@ "name": "default.gbui", "version": "0.0.12", "private": false, + "repository": "https://github.com/pragmatismo-io/BotServer", + "description": "Default web interface for General Bots open-core", "license": "AGPL-3.0", "homepage": ".", "dependencies": { - "ajv": "^6.5.5", + "ajv": "^6.5.4", "botframework-directlinejs": "^0.10.0", - "botframework-webchat": "4.1.0", + "botframework-webchat": "0.14.3-master.72bfef9", "deep-extend": "^0.6.0", "fetch": "^1.1.0", "msal": "^0.2.3", "powerbi-client": "^2.6.5", - "react": "^16.6.3", - "react-dom": "^16.6.3", + "react": "^16.6.0", + "react-dom": "^16.6.0", "react-helmet": "^5.2.0", - "react-player": "^1.7.0", + "react-player": "^1.6.6", "react-powerbi": "^0.3.1", "react-scripts": "^2.1.1", "react-transition-group": "^2.5.0", - "rxjs": "^6.3.3", + "rxjs": "^5.5.12", + "rxjs-compat": "^6.3.3", "url-join": "^4.0.0" }, "scripts": { diff --git a/packages/default.gbui/src/GBUIApp.js b/packages/default.gbui/src/GBUIApp.js index 191989c7..a5044e64 100644 --- a/packages/default.gbui/src/GBUIApp.js +++ b/packages/default.gbui/src/GBUIApp.js @@ -318,9 +318,6 @@ class GBUIApp extends React.Component { gbCss = ; function getToken() { - return new Promise((resolve: any, reject: any): any => { - resolve(token); - }); } // speechOptions = { diff --git a/packages/kb.gbapp/dialogs/AskDialog.ts b/packages/kb.gbapp/dialogs/AskDialog.ts index 076f965b..e911b7f8 100644 --- a/packages/kb.gbapp/dialogs/AskDialog.ts +++ b/packages/kb.gbapp/dialogs/AskDialog.ts @@ -149,6 +149,7 @@ export class AskDialog extends IGBDialog { return await step.replaceDialog('/ask', { isReturning: true }); } else { + // Second time running Search, now with no filter. const resultsB = await service.ask( @@ -161,10 +162,10 @@ export class AskDialog extends IGBDialog { // If there is some result, answer immediately. if (resultsB && resultsB.answer) { + // Saves some context info. const user = await min.userProfile.get(step.context, {}); - user.isAsking = false; user.lastQuestionId = resultsB.questionId; await min.userProfile.set(step.context, user); diff --git a/packages/whatsapp.gblib/index.ts b/packages/whatsapp.gblib/index.ts index 41829f90..5bc37b89 100644 --- a/packages/whatsapp.gblib/index.ts +++ b/packages/whatsapp.gblib/index.ts @@ -59,7 +59,7 @@ export class GBWhatsappPackage implements IGBPackage { // Only loads engine if it is defined on services.json. - if (min.instance.whatsappBotKey != '') { + if (min.instance.whatsappBotKey) { this.channel = new WhatsappDirectLine(min.botId, min.instance.whatsappBotKey, min.instance.whatsappServiceKey, min.instance.whatsappServiceNumber, min.instance.whatsappServiceUrl, min.instance.whatsappServiceWebhookUrl); } diff --git a/src/app.ts b/src/app.ts index 1c1b897a..fb2b1afb 100644 --- a/src/app.ts +++ b/src/app.ts @@ -125,10 +125,15 @@ export class GBServer { await core.saveInstance(fullInstance); let instances: GuaribasInstance[] = await core.loadAllInstances(core, azureDeployer, proxyAddress); instances = await core.ensureInstances(instances, bootInstance, core); - + if(!bootInstance) { + bootInstance = instances[0]; + } const minService: GBMinService = new GBMinService(core, conversationalService, adminService, deployer); - await minService.buildMin(server, appPackages, instances, deployer); + await minService.buildMin(bootInstance, server, appPackages, instances, deployer); + + logger.info(`Preparing default.gbui (it may take some additional time for the first time)...`); + deployer.installDefaultGBUI(); logger.info(`The Bot Server is in RUNNING mode...`); core.openBrowserInDevelopment();