fix(core): Bot Server is runnable again after refactory.

This commit is contained in:
Rodrigo Rodriguez (pragmatismo.io) 2018-11-30 11:55:44 -02:00
parent 3f32e48fad
commit 9379dec1b0
14 changed files with 187 additions and 563 deletions

5
package-lock.json generated
View file

@ -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",

View file

@ -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"

View file

@ -80,6 +80,7 @@ export class WelcomeDialog extends IGBDialog {
await step.replaceDialog('/answer', { query: step.context.activity.text });
}
}
return await step.next();
}
]));

View file

@ -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<any> {
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) {}
}

View file

@ -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<IGBInstance> {
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<GuaribasPackage> {
public async deployPackageToStorage(instanceId: number, packageName: string): Promise<GuaribasPackage> {
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<GuaribasPackage> {
public async getPackageByName(instanceId: number, packageName: string): Promise<GuaribasPackage> {
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 });
}
}
}

View file

@ -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();

View file

@ -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;
}
}

View file

@ -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.');
}

View file

@ -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",

View file

@ -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": {

View file

@ -318,9 +318,6 @@ class GBUIApp extends React.Component {
gbCss = <GBCss instance={this.state.instance} />;
function getToken() {
return new Promise((resolve: any, reject: any): any => {
resolve(token);
});
}
// speechOptions = {

View file

@ -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);

View file

@ -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);
}

View file

@ -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();