diff --git a/package-lock.json b/package-lock.json index 217d5770..de16d5ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,30 +52,6 @@ } } }, - "@azure/cosmos": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/@azure/cosmos/-/cosmos-3.6.2.tgz", - "integrity": "sha512-UOcZSLO0gHuIh/Gam01GC6KGjjDYWWM2PXZDjhW7FWVOeFi0FBRYPvTpI2Iw799GnskPfEF+LJ8nNqmur1wEWA==", - "requires": { - "@types/debug": "^4.1.4", - "debug": "^4.1.1", - "fast-json-stable-stringify": "^2.0.0", - "node-abort-controller": "^1.0.4", - "node-fetch": "^2.6.0", - "os-name": "^3.1.0", - "priorityqueuejs": "^1.0.0", - "semaphore": "^1.0.5", - "tslib": "^1.10.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" - } - } - }, "@azure/ms-rest-azure-env": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@azure/ms-rest-azure-env/-/ms-rest-azure-env-1.1.2.tgz", @@ -1120,6 +1096,17 @@ } } }, + "@derhuerst/http-basic": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.0.tgz", + "integrity": "sha512-v1cqPUpFjU8DInW4YkC9caGKy8kUkqz0z10yCHawkxgpaJPId0F5xKi8fUY5rqC58F9Muz9T136jNReZQH9xIw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, "@glimmer/interfaces": { "version": "0.41.4", "resolved": "https://registry.npmjs.org/@glimmer/interfaces/-/interfaces-0.41.4.tgz", @@ -1672,19 +1659,6 @@ "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==" }, - "@types/debug": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz", - "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==" - }, - "@types/documentdb": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@types/documentdb/-/documentdb-1.10.5.tgz", - "integrity": "sha512-FHQV9Nc1ffrLkQxO0zFlDCRPyHZtuKmAAuJIi278COhtkKBuBRuKOzoO3JlT0yfUrivPjAzNae+gh9fS++r0Ag==", - "requires": { - "@types/node": "*" - } - }, "@types/dotenv": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/@types/dotenv/-/dotenv-6.1.1.tgz", @@ -2300,6 +2274,33 @@ "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.3.0.tgz", + "integrity": "sha512-WHnQJFcOrIWT1RLOkFFBQkFVvyt9BPOOrH+Dp152Zk4R993rSzXUGPmkybIcUFhHE2d/iHH+nCaOWVCDbO8fgA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "asn1.js-rfc2560": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/asn1.js-rfc2560/-/asn1.js-rfc2560-5.0.1.tgz", + "integrity": "sha512-1PrVg6kuBziDN3PGFmRk3QrjpKvP9h/Hv5yMrFZvC1kpzP6dQRzf5BpKstANqHBkaOUmTpakJWhicTATOA/SbA==", + "requires": { + "asn1.js-rfc5280": "^3.0.0" + } + }, + "asn1.js-rfc5280": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/asn1.js-rfc5280/-/asn1.js-rfc5280-3.0.0.tgz", + "integrity": "sha512-Y2LZPOWeZ6qehv698ZgOGGCZXBQShObWnGthTrIFlIQjuV1gg2B8QOhWFRExq/MR1VnPpIIe7P9vX2vElxv+Pg==", + "requires": { + "asn1.js": "^5.0.0" + } + }, "assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", @@ -2626,49 +2627,6 @@ "@types/geojson": "^7946.0.4" } }, - "azure-storage": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/azure-storage/-/azure-storage-2.10.2.tgz", - "integrity": "sha512-pOyGPya9+NDpAfm5YcFfklo57HfjDbYLXxs4lomPwvRxmb0Di/A+a+RkUmEFzaQ8S13CqxK40bRRB0sjj2ZQxA==", - "requires": { - "browserify-mime": "~1.2.9", - "extend": "^3.0.2", - "json-edm-parser": "0.1.2", - "md5.js": "1.3.4", - "readable-stream": "~2.0.0", - "request": "^2.86.0", - "underscore": "~1.8.3", - "uuid": "^3.0.0", - "validator": "~9.4.1", - "xml2js": "0.2.8", - "xmlbuilder": "^9.0.7" - }, - "dependencies": { - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - }, - "validator": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz", - "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA==" - }, - "xml2js": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz", - "integrity": "sha1-m4FpCTFjH/CdGVdUn69U9PmAs8I=", - "requires": { - "sax": "0.5.x" - } - } - } - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -2842,11 +2800,6 @@ "chainsaw": "~0.1.0" } }, - "binary-search-bounds": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.3.tgz", - "integrity": "sha1-X/hhbW3SylOIvIWy1iZuK52lAtw=" - }, "bl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", @@ -2885,6 +2838,11 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -3076,28 +3034,6 @@ } } }, - "botbuilder-azure": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/botbuilder-azure/-/botbuilder-azure-4.7.0.tgz", - "integrity": "sha512-JaYfrnw9YduJJd8DdJkDU3ixJvUvpwHQpbQU/TginbTF12xGnHt2K4V4tOXman88jfb/Du5lawyL4nmApSbuVg==", - "requires": { - "@azure/cosmos": "^3.3.1", - "@types/documentdb": "^1.10.5", - "@types/node": "^10.12.18", - "azure-storage": "2.10.2", - "botbuilder": "4.7.0", - "documentdb": "1.14.5", - "flat": "^4.0.0", - "semaphore": "^1.1.0" - }, - "dependencies": { - "@types/node": { - "version": "10.17.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.18.tgz", - "integrity": "sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg==" - } - } - }, "botbuilder-dialogs": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/botbuilder-dialogs/-/botbuilder-dialogs-4.7.0.tgz", @@ -3223,44 +3159,6 @@ } } }, - "botlib": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/botlib/-/botlib-1.4.5.tgz", - "integrity": "sha512-y9HvVNCpMwwJbFvfXyBStHDJ/u+ujiw0PXVcehesWQY8K7zh+rsFHDIJg5rj1ocbAuR0LhkFTcKh3ZAZcin9SQ==", - "requires": { - "async": "3.1.0", - "botbuilder": "4.7.0", - "botbuilder-ai": "4.7.0", - "botbuilder-azure": "4.7.0", - "botbuilder-dialogs": "4.7.0", - "chrono-node": "1.3.11", - "dotenv-extended": "2.7.1", - "iconv-lite": "0.5.0", - "ms": "2.1.2", - "pragmatismo-io-framework": "1.0.20", - "reflect-metadata": "0.1.13", - "sequelize": "5.21.5", - "sequelize-typescript": "1.1.0", - "underscore": "1.9.1", - "wait-until": "0.0.2", - "winston": "3.2.1" - }, - "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" - }, - "iconv-lite": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz", - "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } - }, "bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -3313,11 +3211,6 @@ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" }, - "browserify-mime": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/browserify-mime/-/browserify-mime-1.2.9.tgz", - "integrity": "sha1-rrGvKN5sDXpqLOQK22j/GEIq8x8=" - }, "browserslist": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz", @@ -3362,8 +3255,7 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "buffer-indexof-polyfill": { "version": "1.0.1", @@ -3645,21 +3537,6 @@ "integrity": "sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=", "dev": true }, - "chrono-node": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-1.3.11.tgz", - "integrity": "sha512-jDWRnY6nYvzfV3HPYBqo+tot7tcsUs9i3arGbMdI0TouPSXP2C2y/Ctp27rxKTQDi6yuTxAB2cw+Q6igGhOhdQ==", - "requires": { - "moment": "2.21.0" - }, - "dependencies": { - "moment": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.21.0.tgz", - "integrity": "sha512-TCZ36BjURTeFTM/CwRcViQlfkMvL1/vFISuNLO5GkcVm1+QHfbSiNqZuWeMFjj1/3+uAjXswgRk30j1kkLYJBQ==" - } - } - }, "cjk-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cjk-regex/-/cjk-regex-2.0.0.tgz", @@ -4033,6 +3910,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -4055,6 +3933,7 @@ "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -4063,17 +3942,20 @@ "colornames": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true }, "colors": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -4233,6 +4115,46 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "config-chain": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", @@ -4662,6 +4584,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -5130,6 +5053,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, "requires": { "colorspace": "1.1.x", "enabled": "1.0.x", @@ -5183,32 +5107,6 @@ "dns-packet": "^5.1.2" } }, - "documentdb": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/documentdb/-/documentdb-1.14.5.tgz", - "integrity": "sha512-0nDoQQiq5jzGIxOQF2y2bUOrFYehvk9pIrXy0dscXc3JsepNYhNVmjIsug5sgYPbt+XUYtMXpsfjzGCnYgNXgw==", - "requires": { - "big-integer": "^1.6.25", - "binary-search-bounds": "2.0.3", - "int64-buffer": "^0.1.9", - "priorityqueuejs": "1.0.0", - "semaphore": "1.0.5", - "tunnel": "0.0.5", - "underscore": "1.8.3" - }, - "dependencies": { - "semaphore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.0.5.tgz", - "integrity": "sha1-tJJXbmavGT25XWXiXsU/Xxl5jWA=" - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" - } - } - }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", @@ -5361,6 +5259,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, "requires": { "env-variable": "0.0.x" } @@ -5488,10 +5387,16 @@ } } }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" + }, "env-variable": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", - "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -5533,14 +5438,12 @@ "es6-promise": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", - "dev": true + "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==" }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -5677,6 +5580,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -5985,7 +5889,8 @@ "fast-safe-stringify": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", - "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==", + "dev": true }, "fastq": { "version": "1.6.0", @@ -5999,7 +5904,18 @@ "fecha": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, + "ffmpeg-static": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.1.0.tgz", + "integrity": "sha512-MbLvomoRFmm/EswLoM5frg1fnDAHdMxeaYzfOlH5ujSnd47FAzDnjjLxzmsvVZFwJaOj2DYVt9Pstmttj6eEoQ==", + "requires": { + "@derhuerst/http-basic": "^8.2.0", + "env-paths": "^2.2.0", + "progress": "^2.0.3" + } }, "figures": { "version": "2.0.0", @@ -6979,15 +6895,6 @@ } } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -7081,6 +6988,21 @@ } } }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.19.tgz", + "integrity": "sha512-46/xThm3zvvc9t9/7M3AaLEqtOpqlYYYcCZbpYVAQHG20+oMZBkae/VMrn4BTi6AJ8cpack0mEXhGiKmDNbLrQ==" + } + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -7276,11 +7198,6 @@ } } }, - "int64-buffer": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", - "integrity": "sha1-J3siiofZWtd30HwTgyAiQGpHNCM=" - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -7808,14 +7725,6 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "json-edm-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/json-edm-parser/-/json-edm-parser-0.1.2.tgz", - "integrity": "sha1-HmCw/vG8CvZ7wNFG393lSGzWFbQ=", - "requires": { - "jsonparse": "~1.2.0" - } - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -7886,7 +7795,8 @@ "jsonparse": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", - "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=" + "integrity": "sha1-XAxWhRBxYOcv50ib3eoLRMK8Z70=", + "dev": true }, "jsonwebtoken": { "version": "8.0.1", @@ -7993,6 +7903,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, "requires": { "colornames": "^1.1.1" } @@ -8659,6 +8570,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -8714,7 +8626,8 @@ "macos-release": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", - "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==" + "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==", + "dev": true }, "make-dir": { "version": "2.1.0", @@ -8787,15 +8700,6 @@ "supports-hyperlinks": "^1.0.1" } }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -8928,6 +8832,45 @@ "picomatch": "^2.0.5" } }, + "microsoft-cognitiveservices-speech-sdk": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/microsoft-cognitiveservices-speech-sdk/-/microsoft-cognitiveservices-speech-sdk-1.11.0.tgz", + "integrity": "sha512-03nPTggWCjkvVvJ6Y795UUKkFhdVn32yYqIpI/vEvAQAssffbcP5syU8JfUzN9TF4UfYvUFKlnyNgGj7y1DyAw==", + "requires": { + "asn1.js-rfc2560": "^5.0.0", + "asn1.js-rfc5280": "^3.0.0", + "https-proxy-agent": "^3.0.1", + "simple-lru-cache": "0.0.2", + "ws": "^7.2.0" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -8956,6 +8899,11 @@ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -9404,12 +9352,8 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-abort-controller": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-1.0.4.tgz", - "integrity": "sha512-7cNtLKTAg0LrW3ViS2C7UfIzbL3rZd8L0++5MidbKqQVJ8yrH6+1VRSHl33P0ZjBTbOJd37d9EYekvHyKkB0QQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node-emoji": { "version": "1.10.0", @@ -9429,11 +9373,6 @@ "semver": "^5.7.0" } }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" - }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", @@ -13199,6 +13138,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -13676,7 +13616,8 @@ "one-time": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true }, "onetime": { "version": "2.0.1", @@ -13712,6 +13653,11 @@ "wordwrap": "~0.0.2" } }, + "opusscript": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.7.tgz", + "integrity": "sha512-DcBadTdYTUuH9zQtepsLjQn4Ll6rs3dmeFvN+SD0ThPnxRBRm/WC1zXWPg+wgAJimB784gdZvUMA57gDP7FdVg==" + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -13732,6 +13678,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, "requires": { "macos-release": "^2.2.0", "windows-release": "^3.1.0" @@ -13810,7 +13757,8 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.1.0", @@ -13928,6 +13876,11 @@ "callsites": "^3.0.0" } }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" + }, "parse-entities": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", @@ -14012,7 +13965,8 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -15206,10 +15160,10 @@ } } }, - "priorityqueuejs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/priorityqueuejs/-/priorityqueuejs-1.0.0.tgz", - "integrity": "sha1-LuTyPCVgkT4IwHzlzN1t498sWvg=" + "prism-media": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.1.tgz", + "integrity": "sha512-R3EbKwJiYlTvGwcG1DpUt+06DsxOGS5W4AMEHT7oVOjG93MjpdhGX1whHyjnqknylLMupKAsKMEXcTNRbPe6Vw==" }, "private": { "version": "0.1.8", @@ -16187,11 +16141,6 @@ } } }, - "semaphore": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", - "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" - }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", @@ -16394,6 +16343,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -16401,7 +16351,8 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "shelljs": { "version": "0.8.3", @@ -16470,10 +16421,16 @@ "integrity": "sha512-0Sq4FvLlQEQODVA6PH2MIrc7tzYO0KT2HzzwvaVLYClWgIsuvaNUOrhrAvTi1pZHrcq7GDB4WiI3ukjqBMxcGQ==", "dev": true }, + "simple-lru-cache": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", + "integrity": "sha1-1ZzDoZPBpdAyD4Tucy9uRxPlEd0=" + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, "requires": { "is-arrayish": "^0.3.1" }, @@ -16481,7 +16438,8 @@ "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true } } }, @@ -16839,7 +16797,8 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true }, "state-toggle": { "version": "1.0.2", @@ -16951,7 +16910,8 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-final-newline": { "version": "2.0.0", @@ -17364,7 +17324,8 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true }, "text-table": { "version": "0.2.0", @@ -17645,7 +17606,8 @@ "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true }, "trough": { "version": "1.0.4", @@ -17764,6 +17726,11 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typedoc": { "version": "0.15.6", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.15.6.tgz", @@ -18314,6 +18281,11 @@ "resolved": "https://registry.npmjs.org/washyourmouthoutwithsoap/-/washyourmouthoutwithsoap-1.0.2.tgz", "integrity": "sha512-N008S6j3VoPgjUwvW1Q2roTYg9Xuy1LfR/R4BdjddhzM8YBNgIR4FpSQ9zVmNkvpi/fS9cfAQLSjWKXE3wQ1zA==" }, + "wav-converter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wav-converter/-/wav-converter-1.0.0.tgz", + "integrity": "sha512-XQD5yFGMm+zXc9mkNSNDHZu3RKTgzWn1bs6WRV3QQQGy6wtAbFA1EtFDVwAuCWErNd8gXW6kt3pNEULgvI+jqw==" + }, "weak-map": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz", @@ -18354,6 +18326,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "dev": true, "requires": { "execa": "^1.0.0" } @@ -18362,6 +18335,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, "requires": { "async": "^2.6.1", "diagnostics": "^1.1.1", @@ -18378,6 +18352,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -18386,6 +18361,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -18396,6 +18372,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -18406,6 +18383,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "dev": true, "requires": { "readable-stream": "^2.3.6", "triple-beam": "^1.2.0" @@ -18414,12 +18392,14 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18434,6 +18414,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -18543,6 +18524,11 @@ "signal-exit": "^3.0.2" } }, + "ws": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", + "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==" + }, "x256": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/x256/-/x256-0.0.2.tgz", diff --git a/package.json b/package.json index 02117bc5..19356cca 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "botbuilder-ai": "4.7.0", "botbuilder-dialogs": "4.7.0", "botframework-connector": "4.7.0", - "botlib": "1.4.5", + "botlib": "1.5.0", "chai": "4.2.0", "cli-spinner": "0.2.10", "csv-parse": "4.8.3", @@ -73,8 +73,10 @@ "exceljs": "3.5.0", "express": "4.17.1", "express-remove-route": "1.0.0", + "ffmpeg-static": "^4.1.0", "js-beautify": "1.10.2", "marked": "0.8.0", + "microsoft-cognitiveservices-speech-sdk": "^1.11.0", "mocha": "6.2.2", "ms-rest-azure": "3.0.0", "nexmo": "2.5.2", diff --git a/packages/admin.gbapp/index.ts b/packages/admin.gbapp/index.ts index a23622a9..d44a43fe 100644 --- a/packages/admin.gbapp/index.ts +++ b/packages/admin.gbapp/index.ts @@ -47,24 +47,24 @@ import { GuaribasAdmin } from './models/AdminModel'; export class GBAdminPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { core.sequelize.addModels([GuaribasAdmin]); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { AdminDialog.setup(min); } } diff --git a/packages/analytics.gblib/index.ts b/packages/analytics.gblib/index.ts index b7a62a1e..6ad8fe67 100644 --- a/packages/analytics.gblib/index.ts +++ b/packages/analytics.gblib/index.ts @@ -45,24 +45,24 @@ import { GuaribasConversation, GuaribasConversationMessage } from './models'; */ export class GBAnalyticsPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { GBLog.verbose(`loadPackage called.`); core.sequelize.addModels([GuaribasConversation, GuaribasConversationMessage]); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { GBLog.verbose(`loadBot called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } } diff --git a/packages/azuredeployer.gbapp/index.ts b/packages/azuredeployer.gbapp/index.ts index 4ddaff36..b48d1e7d 100644 --- a/packages/azuredeployer.gbapp/index.ts +++ b/packages/azuredeployer.gbapp/index.ts @@ -43,23 +43,23 @@ import { Sequelize } from 'sequelize-typescript'; * Package for Azure Deployer. */ export class GBAzureDeployerPackage implements IGBPackage { - public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public sysPackages: IGBPackage[]; + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { GBLog.verbose(`loadPackage called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { GBLog.verbose(`loadBot called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } } diff --git a/packages/azuredeployer.gbapp/services/AzureDeployerService.ts b/packages/azuredeployer.gbapp/services/AzureDeployerService.ts index adeb82b2..79126196 100644 --- a/packages/azuredeployer.gbapp/services/AzureDeployerService.ts +++ b/packages/azuredeployer.gbapp/services/AzureDeployerService.ts @@ -502,7 +502,7 @@ export class AzureDeployerService implements IGBInstallationDeployer { instance.marketplaceId = appId; instance.marketplacePassword = appPassword; - instance.engineName = GBCorePackage.CurrentEngineName; + instance.engineName = GBCorePackage['CurrentEngineName']; const parameters = { location: location, diff --git a/packages/console.gblib/index.ts b/packages/console.gblib/index.ts index 338cf243..d17035fa 100644 --- a/packages/console.gblib/index.ts +++ b/packages/console.gblib/index.ts @@ -46,23 +46,23 @@ import { ConsoleDirectLine } from './services/ConsoleDirectLine'; export class GBConsolePackage implements IGBPackage { public sysPackages: IGBPackage[]; public channel: ConsoleDirectLine; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { GBLog.verbose(`loadPackage called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { this.channel = new ConsoleDirectLine(min.instance.webchatKey); } } diff --git a/packages/core.gbapp/index.ts b/packages/core.gbapp/index.ts index 8d2dff77..9b60029d 100644 --- a/packages/core.gbapp/index.ts +++ b/packages/core.gbapp/index.ts @@ -47,26 +47,26 @@ import { GuaribasChannel, GuaribasException, GuaribasInstance, GuaribasPackage } * Package for core.gbapp. */ export class GBCorePackage implements IGBPackage { - public static CurrentEngineName = 'guaribas-1.0.0'; public sysPackages: IGBPackage[]; - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public CurrentEngineName = "guaribas-1.0.0"; + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { core.sequelize.addModels([GuaribasInstance, GuaribasPackage, GuaribasChannel, GuaribasException]); } - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { WelcomeDialog.setup(min.bot, min); WhoAmIDialog.setup(min.bot, min); SwitchBotDialog.setup(min.bot, min); diff --git a/packages/core.gbapp/services/GBConversationalService.ts b/packages/core.gbapp/services/GBConversationalService.ts index 3fc72653..4e447488 100644 --- a/packages/core.gbapp/services/GBConversationalService.ts +++ b/packages/core.gbapp/services/GBConversationalService.ts @@ -42,10 +42,13 @@ import { GBDialogStep, GBLog, GBMinInstance, IGBConversationalService, IGBCoreSe import { AzureText } from 'pragmatismo-io-framework'; import { Messages } from '../strings'; import { GBServer } from '../../../src/app'; -import { GBWhatsappPackage } from '../../whatsapp.gblib'; const urlJoin = require('url-join'); const PasswordGenerator = require("strict-password-generator").default; const Nexmo = require('nexmo'); +let sdk = require("microsoft-cognitiveservices-speech-sdk"); +var fs = require('fs') +import { Readable } from 'stream' +const prism = require('prism-media'); export interface LanguagePickerSettings { defaultLocale?: string; @@ -130,6 +133,70 @@ export class GBConversationalService implements IGBConversationalService { min.whatsAppDirectLine.sendToDevice(mobile, message); } + public static async getTextFromAudioBuffer(speechKey, cloudRegion, buffer, locale): Promise { + return new Promise(async (resolve, reject) => { + try { + let subscriptionKey = speechKey; + let serviceRegion = cloudRegion; + + var samplingRate = 16000; + var frameDuration = 20; + var channels = 1; + var frameSize = samplingRate * frameDuration / 1000; + + const oggFile = new Readable(); + oggFile._read = () => { } // _read is required but you can noop it + oggFile.push(buffer); + oggFile.push(null); + + // TODO: Use stream directly without physical files. + + fs.writeFileSync('audio.ogg', buffer); + + let wr = fs.createWriteStream('audio.pcm'); + wr.on('finish', () => { + let data = fs.readFileSync('audio.pcm'); + + let pushStream = sdk.AudioInputStream.createPushStream(); + pushStream.write(data); + pushStream.close(); + + let audioConfig = sdk.AudioConfig.fromStreamInput(pushStream); + let speechConfig = sdk.SpeechConfig.fromSubscription(subscriptionKey, serviceRegion); + speechConfig.speechRecognitionLanguage = locale; + let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig); + + recognizer.recognizeOnceAsync( + (result) => { + + resolve(result.text ? result.text : 'audio not converted'); + + recognizer.close(); + recognizer = undefined; + }, + (err) => { + reject(err); + + recognizer.close(); + recognizer = undefined; + }); + }); + + fs.createReadStream('audio.ogg') + .pipe(new prism.opus.OggDemuxer()) + .pipe(new prism.opus.Decoder({ + rate: samplingRate, + channels: channels, frameSize: frameSize + })) + .pipe(wr); + } catch (error) { + GBLog.error(error); + return Promise.reject(error); + } + }); + } + + // tslint:enable:no-unsafe-any public async sendMarkdownToMobile(min: GBMinInstance, step: GBDialogStep, mobile: string, text: string) { @@ -161,7 +228,7 @@ export class GBConversationalService implements IGBConversationalService { let currentEmbedUrl = ''; //![General Bots](/instance/images/gb.png) - for (var i = 0; i < text.length; i++) { + for (let i = 0; i < text.length; i++) { const c = text.charAt(i); switch (state) { diff --git a/packages/core.gbapp/services/GBCoreService.ts b/packages/core.gbapp/services/GBCoreService.ts index d9d402f3..e14b25a1 100644 --- a/packages/core.gbapp/services/GBCoreService.ts +++ b/packages/core.gbapp/services/GBCoreService.ts @@ -54,6 +54,7 @@ import { GuaribasInstance } from '../models/GBModel'; import { GBConfigService } from './GBConfigService'; import { GBAzureDeployerPackage } from '../../azuredeployer.gbapp'; import { GBSharePointPackage } from '../../sharepoint.gblib'; +import { CollectionUtil } from 'pragmatismo-io-framework'; const opn = require('opn'); @@ -385,27 +386,30 @@ STORAGE_SYNC=true return instances; } - public loadSysPackages(core: GBCoreService) { + public async loadSysPackages(core: GBCoreService) : Promise{ // NOTE: if there is any code before this line a semicolon // will be necessary before this line. // Loads all system packages. const sysPackages: IGBPackage[] = []; - [ - GBAdminPackage, - GBCorePackage, - GBSecurityPackage, - GBKBPackage, - GBCustomerSatisfactionPackage, - GBAnalyticsPackage, - GBWhatsappPackage, - GBAzureDeployerPackage, - GBSharePointPackage, - ].forEach(e => { + + await CollectionUtil.asyncForEach([ + GBAdminPackage, + GBCorePackage, + GBSecurityPackage, + GBKBPackage, + GBCustomerSatisfactionPackage, + GBAnalyticsPackage, + GBWhatsappPackage, + GBAzureDeployerPackage, + GBSharePointPackage, + ], async e => { GBLog.info(`Loading sys package: ${e.name}...`); const p = Object.create(e.prototype) as IGBPackage; sysPackages.push(p); - p.loadPackage(core, core.sequelize); + + await p.loadPackage(core, core.sequelize); + }); return sysPackages; diff --git a/packages/core.gbapp/services/GBDeployer.ts b/packages/core.gbapp/services/GBDeployer.ts index 6d65155c..378e2b49 100644 --- a/packages/core.gbapp/services/GBDeployer.ts +++ b/packages/core.gbapp/services/GBDeployer.ts @@ -537,7 +537,7 @@ export class GBDeployer implements IGBDeployer { } const m = await import(e); const p = new m.Package(); - p.loadPackage(core, core.sequelize); + await p.loadPackage(core, core.sequelize); appPackages.push(p); GBLog.info(`App (.gbapp) deployed: ${e}.`); appPackagesProcessed++; diff --git a/packages/core.gbapp/services/GBMinService.ts b/packages/core.gbapp/services/GBMinService.ts index 29699d08..b63318c4 100644 --- a/packages/core.gbapp/services/GBMinService.ts +++ b/packages/core.gbapp/services/GBMinService.ts @@ -209,7 +209,7 @@ export class GBMinService { // this.deployer.deployPackage(min, 'packages/default.gbdialog'); // Call the loadBot context.activity for all packages. - this.invokeLoadBot(GBServer.globals.appPackages, GBServer.globals.sysPackages, min); + await this.invokeLoadBot(GBServer.globals.appPackages, GBServer.globals.sysPackages, min); // Serves individual URL for each bot conversational interface... const url = `/api/messages/${instance.botId}`; @@ -406,6 +406,7 @@ export class GBMinService { min.packages = sysPackages; if (min.instance.whatsappServiceKey !== null) { min.whatsAppDirectLine = new WhatsappDirectLine( + min, min.botId, min.instance.whatsappBotKey, min.instance.whatsappServiceKey, @@ -424,21 +425,22 @@ export class GBMinService { return { min, adapter, conversationState }; } - private invokeLoadBot(appPackages: IGBPackage[], sysPackages: IGBPackage[], min: GBMinInstance) { - sysPackages.forEach(e => { - e.loadBot(min); - }, this); + private async invokeLoadBot(appPackages: IGBPackage[], sysPackages: IGBPackage[], min: GBMinInstance) { + await CollectionUtil.asyncForEach(sysPackages, async e => { + await e.loadBot(min); + }); - appPackages.forEach(p => { + await CollectionUtil.asyncForEach(appPackages, async p => { p.sysPackages = sysPackages; - p.loadBot(min); + await p.loadBot(min); if (p.getDialogs !== undefined) { - const dialogs = p.getDialogs(min); + const dialogs = await p.getDialogs(min); dialogs.forEach(dialog => { min.dialogs.add(new WaterfallDialog(dialog.id, dialog.waterfall)); }); } - }, this); + }); + } /** @@ -503,8 +505,8 @@ export class GBMinService { const member = context.activity.membersAdded[0]; if (member.name === min.instance.title) { GBLog.info(`Bot added to conversation, starting chat...`); - appPackages.forEach(e => { - e.onNewSession(min, step); + await CollectionUtil.asyncForEach(appPackages, async e => { + await e.onNewSession(min, step); }); await step.beginDialog('/'); } else { diff --git a/packages/customer-satisfaction.gbapp/index.ts b/packages/customer-satisfaction.gbapp/index.ts index 052e1ac9..f294a936 100644 --- a/packages/customer-satisfaction.gbapp/index.ts +++ b/packages/customer-satisfaction.gbapp/index.ts @@ -49,23 +49,23 @@ import { Sequelize } from 'sequelize-typescript'; */ export class GBCustomerSatisfactionPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { core.sequelize.addModels([GuaribasQuestionAlternate]); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { FeedbackDialog.setup(min.bot, min); QualityDialog.setup(min.bot, min); } diff --git a/packages/kb.gbapp/index.ts b/packages/kb.gbapp/index.ts index 9e727fd1..f9896a89 100644 --- a/packages/kb.gbapp/index.ts +++ b/packages/kb.gbapp/index.ts @@ -48,23 +48,23 @@ import { GuaribasAnswer, GuaribasQuestion, GuaribasSubject } from './models/inde */ export class GBKBPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { core.sequelize.addModels([GuaribasAnswer, GuaribasQuestion, GuaribasSubject]); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { AskDialog.setup(min.bot, min); FaqDialog.setup(min.bot, min); MenuDialog.setup(min.bot, min); diff --git a/packages/security.gblib/index.ts b/packages/security.gblib/index.ts index 6c589138..b7d7cd79 100644 --- a/packages/security.gblib/index.ts +++ b/packages/security.gblib/index.ts @@ -48,23 +48,23 @@ import { GuaribasGroup, GuaribasUser, GuaribasUserGroup } from './models'; */ export class GBSecurityPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { GBLog.verbose(`loadBot called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { core.sequelize.addModels([GuaribasGroup, GuaribasUser, GuaribasUserGroup]); } } diff --git a/packages/sharepoint.gblib/index.ts b/packages/sharepoint.gblib/index.ts index 36e7a04c..8e18c53b 100644 --- a/packages/sharepoint.gblib/index.ts +++ b/packages/sharepoint.gblib/index.ts @@ -44,22 +44,22 @@ import { Sequelize } from 'sequelize-typescript'; */ export class GBSharePointPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { GBLog.verbose(`loadPackage called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { GBLog.verbose(`loadBot called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } } diff --git a/packages/whatsapp.gblib/index.ts b/packages/whatsapp.gblib/index.ts index 35c0534e..275bfc10 100644 --- a/packages/whatsapp.gblib/index.ts +++ b/packages/whatsapp.gblib/index.ts @@ -46,36 +46,34 @@ import { WhatsappDirectLine } from './services/WhatsappDirectLine'; export class GBWhatsappPackage implements IGBPackage { public sysPackages: IGBPackage[]; - public loadBot(min: GBMinInstance): void { + public async loadBot(min: GBMinInstance): Promise { // Only loads engine if it is defined on services.json. if (min.instance.whatsappServiceKey !== null) { - min.whatsAppDirectLine = new WhatsappDirectLine( + min.whatsAppDirectLine = new WhatsappDirectLine(min, min.botId, min.instance.whatsappBotKey, min.instance.whatsappServiceKey, min.instance.whatsappServiceNumber, min.instance.whatsappServiceUrl ); - (async () => { - await min.whatsAppDirectLine.setup(); - }); + await min.whatsAppDirectLine.setup(); } } - public getDialogs(min: GBMinInstance) { + public async getDialogs(min: GBMinInstance) { GBLog.verbose(`getDialogs called.`); } - public loadPackage(core: IGBCoreService, sequelize: Sequelize): void { + public async loadPackage(core: IGBCoreService, sequelize: Sequelize): Promise { GBLog.verbose(`loadPackage called.`); } - public unloadPackage(core: IGBCoreService): void { + public async unloadPackage(core: IGBCoreService): Promise { GBLog.verbose(`unloadPackage called.`); } - public unloadBot(min: GBMinInstance): void { + public async unloadBot(min: GBMinInstance): Promise { GBLog.verbose(`unloadBot called.`); } - public onNewSession(min: GBMinInstance, step: GBDialogStep): void { + public async onNewSession(min: GBMinInstance, step: GBDialogStep): Promise { GBLog.verbose(`onNewSession called.`); } } diff --git a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts index e7a974c9..e6d93820 100644 --- a/packages/whatsapp.gblib/services/WhatsappDirectLine.ts +++ b/packages/whatsapp.gblib/services/WhatsappDirectLine.ts @@ -34,10 +34,11 @@ import urlJoin = require('url-join'); const Swagger = require('swagger-client'); const rp = require('request-promise'); -import { GBLog, GBService } from 'botlib'; +import { GBLog, GBService, GBMinInstance } from 'botlib'; import * as request from 'request-promise-native'; const fs = require('fs'); import { GBServer } from '../../../src/app'; +import { GBConversationalService } from '../../core.gbapp/services/GBConversationalService'; /** * Support for Whatsapp. @@ -52,10 +53,13 @@ export class WhatsappDirectLine extends GBService { public whatsappServiceUrl: string; public botId: string; private directLineSecret: string; + public conversationIds = {}; + min: GBMinInstance; constructor( + min: GBMinInstance, botId, directLineSecret, whatsappServiceKey, @@ -64,6 +68,7 @@ export class WhatsappDirectLine extends GBService { ) { super(); + this.min = min; this.botId = botId; this.directLineSecret = directLineSecret; this.whatsappServiceKey = whatsappServiceKey; @@ -99,7 +104,8 @@ export class WhatsappDirectLine extends GBService { }; try { - request.post(options); + let res = await request.post(options); + GBLog.info(res); } catch (error) { GBLog.error(`Error initializing 3rd party Whatsapp provider(1) ${error.message}`); } @@ -120,17 +126,35 @@ export class WhatsappDirectLine extends GBService { return; // Exit here. } - const text = req.body.messages[0].body; - const from = req.body.messages[0].author.split('@')[0]; - const fromName = req.body.messages[0].senderName; + const message = req.body.messages[0]; + let text = message.body; + const from = message.author.split('@')[0]; + const fromName = message.senderName; if (req.body.messages[0].fromMe) { res.end(); return; // Exit here. } - GBLog.info(`GBWhatsapp: RCV ${from}(${fromName}): ${text})`); + if (message.type === "ptt") { + + const options = { + url: message.body, + method: 'GET', + encoding: 'binary' + }; + + const res = await request(options); + let buf = Buffer.from(res, 'binary'); + text = await GBConversationalService.getTextFromAudioBuffer( + this.min.instance.speechKey, + this.min.instance.cloudLocation, + buf, 'pt-br' + ); + + } + const conversationId = this.conversationIds[from]; let client = await this.directLineClient; diff --git a/src/app.ts b/src/app.ts index c407a818..488e6d01 100644 --- a/src/app.ts +++ b/src/app.ts @@ -67,6 +67,7 @@ export class RootData { public minBoot: GBMinInstance; public wwwroot: string; // .gbui or a static webapp. public entryPointDialog: string; // To replace default welcome dialog. + } /** @@ -148,7 +149,7 @@ export class GBServer { // Deploys system and user packages. GBLog.info(`Deploying packages...`); - GBServer.globals.sysPackages = core.loadSysPackages(core); + GBServer.globals.sysPackages = await core.loadSysPackages(core); await core.checkStorage(azureDeployer); await deployer.deployPackages(core, server, GBServer.globals.appPackages);