From bf2af453f2ee24b1772ae4de3d8c1a6fc808cb6f Mon Sep 17 00:00:00 2001 From: Justin Wilaby Date: Mon, 19 Nov 2018 13:35:02 -0800 Subject: [PATCH 1/4] #935 - added the ability to input App insights manually --- package-lock.json | 366 +++++++++--------- .../data/sagas/servicesExplorerSagas.spec.ts | 6 +- .../src/data/sagas/servicesExplorerSagas.ts | 8 +- .../connectLuisAppPromptDialog.tsx | 108 ------ .../connectServicePromptDialog.spec.tsx} | 14 +- .../connectServicePromptDialog.tsx | 145 +++++++ .../connectServicePromptDialogContainer.ts} | 12 +- packages/app/client/src/ui/dialogs/index.ts | 2 +- .../connectedServiceEditor.scss | 3 + .../connectedServiceEditor.scss.d.ts | 2 + .../connectedServiceEditor.spec.tsx | 36 +- .../connectedServiceEditor.tsx | 63 ++- .../connectedServicePicker.tsx | 3 +- .../servicesExplorer.spec.tsx | 50 ++- .../servicesExplorer/servicesExplorer.tsx | 38 +- .../servicesExplorerContainer.ts | 9 +- .../app/client/src/utils/serviceTypeLables.ts | 2 + .../src/widget/textField/textField.scss | 2 +- .../src/widget/textField/textField.scss.d.ts | 1 + .../src/widget/textField/textField.tsx | 6 +- 20 files changed, 501 insertions(+), 375 deletions(-) delete mode 100644 packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.tsx rename packages/app/client/src/ui/dialogs/{connectLuisAppPromptDialog/connectLuisAppPromptDialog.spec.tsx => connectServicePromptDialog/connectServicePromptDialog.spec.tsx} (81%) create mode 100644 packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx rename packages/app/client/src/ui/dialogs/{connectLuisAppPromptDialog/connectLuisAppPromptDialogContainer.ts => connectServicePromptDialog/connectServicePromptDialogContainer.ts} (87%) create mode 100644 packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss create mode 100644 packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss.d.ts diff --git a/package-lock.json b/package-lock.json index 231222640..b5a2fec61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2032,7 +2032,7 @@ }, "@types/chokidar": { "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@types/chokidar/-/chokidar-1.7.5.tgz", + "resolved": "http://registry.npmjs.org/@types/chokidar/-/chokidar-1.7.5.tgz", "integrity": "sha512-PDkSRY7KltW3M60hSBlerxI8SFPXsO3AL/aRVsO4Kh9IHRW74Ih75gUuTd/aE4LSSFqypb10UIX3QzOJwBQMGQ==", "requires": { "@types/events": "*", @@ -2058,7 +2058,7 @@ }, "@types/events": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==" }, "@types/express": { @@ -2091,7 +2091,7 @@ }, "@types/formidable": { "version": "1.0.31", - "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-1.0.31.tgz", + "resolved": "http://registry.npmjs.org/@types/formidable/-/formidable-1.0.31.tgz", "integrity": "sha512-dIhM5t8lRP0oWe2HF8MuPvdd1TpPTjhDMAqemcq6oIZQCBQTovhBAdTQ5L5veJB4pdQChadmHuxtB0YzqvfU3Q==", "requires": { "@types/events": "*", @@ -2121,7 +2121,7 @@ }, "@types/lscache": { "version": "1.0.29", - "resolved": "https://registry.npmjs.org/@types/lscache/-/lscache-1.0.29.tgz", + "resolved": "http://registry.npmjs.org/@types/lscache/-/lscache-1.0.29.tgz", "integrity": "sha1-BoqKzKhmjAorXV3LKAD6M0x7H2A=" }, "@types/mime": { @@ -2541,7 +2541,7 @@ }, "adaptivecards": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/adaptivecards/-/adaptivecards-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/adaptivecards/-/adaptivecards-1.0.0.tgz", "integrity": "sha1-96HxdpJRYmirQMpU8Z/aP6WJdjQ=" }, "address": { @@ -2640,7 +2640,7 @@ }, "ansi-align": { "version": "2.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/ansi-align/-/ansi-align-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "requires": { "string-width": "^2.0.0" @@ -2920,7 +2920,7 @@ }, "array-ify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" }, "array-initial": { @@ -3189,7 +3189,7 @@ "dependencies": { "chalk": { "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -3425,7 +3425,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "requires": { "babel-plugin-syntax-object-rest-spread": "^6.13.0", @@ -3471,7 +3471,7 @@ }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, "babel-plugin-syntax-trailing-function-commas": { @@ -4073,7 +4073,7 @@ }, "base64url": { "version": "2.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/base64url/-/base64url-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" }, "batch": { @@ -4102,7 +4102,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { "readable-stream": "^2.3.5", @@ -4192,7 +4192,7 @@ }, "boom": { "version": "2.10.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/boom/-/boom-2.10.1.tgz", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { "hoek": "2.x.x" @@ -4229,7 +4229,7 @@ }, "async": { "version": "1.5.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/async/-/async-1.5.2.tgz", + "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "jsonwebtoken": { @@ -4315,12 +4315,12 @@ "dependencies": { "core-js": { "version": "2.4.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/core-js/-/core-js-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" }, "react-redux": { "version": "5.0.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/react-redux/-/react-redux-5.0.5.tgz", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.5.tgz", "integrity": "sha1-+OjHsjlCJXblLWt9sGQ5RpvphGo=", "requires": { "create-react-class": "^15.5.3", @@ -4334,7 +4334,7 @@ }, "tslib": { "version": "1.7.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/tslib/-/tslib-1.7.1.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=" } } @@ -4355,7 +4355,7 @@ "dependencies": { "camelcase": { "version": "4.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/camelcase/-/camelcase-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" } } @@ -4524,12 +4524,12 @@ }, "buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, "buffer-fill": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/buffer-fill/-/buffer-fill-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-from": { @@ -4631,7 +4631,7 @@ }, "bunyan": { "version": "1.8.12", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/bunyan/-/bunyan-1.8.12.tgz", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "requires": { "dtrace-provider": "~0.8", @@ -4642,7 +4642,7 @@ }, "byline": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/byline/-/byline-5.0.0.tgz", "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" }, "byte-size": { @@ -4905,12 +4905,12 @@ }, "chromium-pickle-js": { "version": "0.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" }, "chrono-node": { "version": "1.3.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/chrono-node/-/chrono-node-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-1.3.5.tgz", "integrity": "sha1-oklSmKMtqCvMAa2b59d++l4kQSI=", "requires": { "moment": "^2.10.3" @@ -5031,7 +5031,7 @@ }, "cli-boxes": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/cli-boxes/-/cli-boxes-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" }, "cli-cursor": { @@ -5188,7 +5188,7 @@ }, "cmd-shim": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/cmd-shim/-/cmd-shim-2.0.2.tgz", "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", "requires": { "graceful-fs": "^4.1.2", @@ -5234,7 +5234,7 @@ }, "color": { "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "resolved": "http://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "requires": { "clone": "^1.0.2", @@ -5291,7 +5291,7 @@ }, "columnify": { "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/columnify/-/columnify-1.5.4.tgz", "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", "requires": { "strip-ansi": "^3.0.0", @@ -5330,7 +5330,7 @@ }, "compare-func": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/compare-func/-/compare-func-1.3.2.tgz", "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", "requires": { "array-ify": "^1.0.0", @@ -5339,7 +5339,7 @@ "dependencies": { "dot-prop": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/dot-prop/-/dot-prop-3.0.0.tgz", "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "requires": { "is-obj": "^1.0.0" @@ -5349,7 +5349,7 @@ }, "compare-version": { "version": "0.1.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/compare-version/-/compare-version-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=" }, "component-emitter": { @@ -5979,7 +5979,7 @@ }, "create-error-class": { "version": "3.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/create-error-class/-/create-error-class-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "requires": { "capture-stack-trace": "^1.0.0" @@ -6048,7 +6048,7 @@ }, "cryptiles": { "version": "2.0.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/cryptiles/-/cryptiles-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { "boom": "2.x.x" @@ -6074,7 +6074,7 @@ }, "crypto-random-string": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, "css": { @@ -6123,7 +6123,7 @@ }, "css-select": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "requires": { "boolbase": "~1.0.0", @@ -6248,7 +6248,7 @@ }, "csv-parse": { "version": "1.3.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/csv-parse/-/csv-parse-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-1.3.3.tgz", "integrity": "sha1-0c/YdDwvhJoKuy/VRNtWaV0ZpJA=" }, "csv-stringify": { @@ -6365,7 +6365,7 @@ }, "decamelize-keys": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/decamelize-keys/-/decamelize-keys-1.1.0.tgz", "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "requires": { "decamelize": "^1.1.0", @@ -6379,7 +6379,7 @@ }, "decompress-response": { "version": "3.3.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/decompress-response/-/decompress-response-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "requires": { "mimic-response": "^1.0.0" @@ -6387,7 +6387,7 @@ }, "dedent": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/dedent/-/dedent-0.7.0.tgz", "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" }, "deep-equal": { @@ -6489,7 +6489,7 @@ }, "defaults": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "requires": { "clone": "^1.0.2" @@ -6543,7 +6543,7 @@ "dependencies": { "pify": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" } } @@ -6704,7 +6704,7 @@ "dependencies": { "domelementtype": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" } } @@ -6778,12 +6778,12 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer3": { "version": "0.1.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/duplexer3/-/duplexer3-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "duplexify": { @@ -6852,7 +6852,7 @@ }, "ecdsa-sig-formatter": { "version": "1.0.10", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", "requires": { "safe-buffer": "^5.0.1" @@ -7245,7 +7245,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "path-exists": { @@ -7260,7 +7260,7 @@ }, "electron-is-dev": { "version": "0.3.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/electron-is-dev/-/electron-is-dev-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/electron-is-dev/-/electron-is-dev-0.3.0.tgz", "integrity": "sha1-FOb9pcaOnk7L7/nM8DfL18BcWv4=" }, "electron-osx-sign": { @@ -7286,7 +7286,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "plist": { @@ -7579,7 +7579,7 @@ }, "escape-regexp-component": { "version": "1.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", "integrity": "sha1-nGO20LJf8qiMOtvRjFthrMO5+qI=" }, "escape-string-regexp": { @@ -7701,7 +7701,7 @@ }, "execa": { "version": "0.7.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/execa/-/execa-0.7.0.tgz", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { "cross-spawn": "^5.0.1", @@ -7715,7 +7715,7 @@ "dependencies": { "cross-spawn": { "version": "5.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/cross-spawn/-/cross-spawn-5.1.0.tgz", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { "lru-cache": "^4.0.1", @@ -7727,7 +7727,7 @@ }, "exit": { "version": "0.1.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/exit/-/exit-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, "expand-brackets": { @@ -8026,7 +8026,7 @@ }, "extract-zip": { "version": "1.6.7", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/extract-zip/-/extract-zip-1.6.7.tgz", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", "requires": { "concat-stream": "1.6.2", @@ -8111,7 +8111,7 @@ }, "fbjs": { "version": "0.8.17", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/fbjs/-/fbjs-0.8.17.tgz", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { "core-js": "^1.0.0", @@ -8125,14 +8125,14 @@ "dependencies": { "core-js": { "version": "1.2.7", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/core-js/-/core-js-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" } } }, "fd-slicer": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/fd-slicer/-/fd-slicer-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "requires": { "pend": "~1.2.0" @@ -8402,7 +8402,7 @@ }, "from": { "version": "0.1.7", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/from/-/from-0.1.7.tgz", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" }, "from2": { @@ -9013,7 +9013,7 @@ }, "generate-object-property": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/generate-object-property/-/generate-object-property-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "requires": { "is-property": "^1.0.0" @@ -9031,7 +9031,7 @@ }, "get-pkg-repo": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", "requires": { "hosted-git-info": "^2.1.4", @@ -9159,7 +9159,7 @@ }, "git-remote-origin-url": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", "requires": { "gitconfiglocal": "^1.0.0", @@ -9260,7 +9260,7 @@ }, "gitconfiglocal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", "requires": { "ini": "^1.3.2" @@ -9381,7 +9381,7 @@ }, "global-dirs": { "version": "0.1.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/global-dirs/-/global-dirs-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "requires": { "ini": "^1.3.4" @@ -9626,7 +9626,7 @@ }, "handle-thing": { "version": "1.2.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/handle-thing/-/handle-thing-1.2.5.tgz", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" }, "handlebars": { @@ -9830,7 +9830,7 @@ }, "hawk": { "version": "3.1.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/hawk/-/hawk-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { "boom": "2.x.x", @@ -9873,12 +9873,12 @@ }, "hoek": { "version": "2.16.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/hoek/-/hoek-2.16.3.tgz", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "hoist-non-react-statics": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" }, "home-or-tmp": { @@ -9910,7 +9910,7 @@ }, "hpack.js": { "version": "2.1.6", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/hpack.js/-/hpack.js-2.1.6.tgz", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { "inherits": "^2.0.1", @@ -9957,7 +9957,7 @@ }, "http-deceiver": { "version": "1.2.7", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/http-deceiver/-/http-deceiver-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, "http-errors": { @@ -10124,7 +10124,7 @@ }, "import-lazy": { "version": "2.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/import-lazy/-/import-lazy-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" }, "import-local": { @@ -10220,7 +10220,7 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/ansi-regex/-/ansi-regex-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "rxjs": { @@ -10233,7 +10233,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/strip-ansi/-/strip-ansi-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { "ansi-regex": "^3.0.0" @@ -10335,7 +10335,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { "builtin-modules": "^1.0.0" @@ -10433,7 +10433,7 @@ }, "is-installed-globally": { "version": "0.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "requires": { "global-dirs": "^0.1.0", @@ -10464,7 +10464,7 @@ }, "is-npm": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-npm/-/is-npm-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" }, "is-number": { @@ -10492,17 +10492,17 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-object": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-object/-/is-object-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, "is-path-cwd": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" }, "is-path-in-cwd": { @@ -10515,7 +10515,7 @@ }, "is-path-inside": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-path-inside/-/is-path-inside-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "requires": { "path-is-inside": "^1.0.1" @@ -10551,12 +10551,12 @@ }, "is-property": { "version": "1.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-property/-/is-property-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" }, "is-redirect": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-redirect/-/is-redirect-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, "is-regex": { @@ -10569,7 +10569,7 @@ }, "is-regexp": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-regexp/-/is-regexp-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, "is-relative": { @@ -10582,7 +10582,7 @@ }, "is-retry-allowed": { "version": "1.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" }, "is-root": { @@ -10628,7 +10628,7 @@ }, "is-text-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/is-text-path/-/is-text-path-1.0.1.tgz", "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "requires": { "text-extensions": "^1.0.0" @@ -10682,7 +10682,7 @@ }, "isemail": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/isemail/-/isemail-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" }, "isexe": { @@ -10697,7 +10697,7 @@ }, "isomorphic-fetch": { "version": "2.2.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { "node-fetch": "^1.0.1", @@ -11202,7 +11202,7 @@ }, "jest-environment-jsdom": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz", "integrity": "sha512-FviwfR+VyT3Datf13+ULjIMO5CSeajlayhhYQwpzgunswoaLIPutdbrnfUHEMyJCwvqQFaVtTmn9+Y8WCt6n1w==", "requires": { "jest-mock": "^22.4.3", @@ -11212,7 +11212,7 @@ }, "jest-message-util": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz", "integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==", "requires": { "@babel/code-frame": "^7.0.0-beta.35", @@ -11224,12 +11224,12 @@ }, "jest-mock": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz", "integrity": "sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q==" }, "jest-util": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz", "integrity": "sha512-rfDfG8wyC5pDPNdcnAlZgwKnzHvZDu8Td2NJI/jAGKEGxJPYiE4F0ss/gSAkG4778Y23Hvbz+0GMrDJTeo7RjQ==", "requires": { "callsites": "^2.0.0", @@ -11316,7 +11316,7 @@ }, "jest-get-type": { "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" }, "jest-haste-map": { @@ -11815,7 +11815,7 @@ }, "joi": { "version": "6.10.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/joi/-/joi-6.10.1.tgz", + "resolved": "http://registry.npmjs.org/joi/-/joi-6.10.1.tgz", "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { "hoek": "2.x.x", @@ -11972,12 +11972,12 @@ }, "jsonparse": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, "jsonpointer": { "version": "4.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/jsonpointer/-/jsonpointer-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" }, "jsonwebtoken": { @@ -12005,7 +12005,7 @@ }, "jspeech": { "version": "0.1.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/jspeech/-/jspeech-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/jspeech/-/jspeech-0.1.1.tgz", "integrity": "sha1-n+wcnRGeFJBajeqCpQWvBs+Sg1k=" }, "jsprim": { @@ -12197,7 +12197,7 @@ }, "license-list": { "version": "0.1.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/license-list/-/license-list-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/license-list/-/license-list-0.1.3.tgz", "integrity": "sha1-GJu1pIFubmmCnUgb7lEXKU1lRU0=", "requires": { "glob": "^7.0.5", @@ -12207,7 +12207,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -12229,7 +12229,7 @@ }, "linkify-it": { "version": "2.0.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/linkify-it/-/linkify-it-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.0.3.tgz", "integrity": "sha1-2UpGSPmxwXnWT6lykSaL22zpQ08=", "requires": { "uc.micro": "^1.0.1" @@ -12319,7 +12319,7 @@ }, "lodash._basecopy": { "version": "3.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, "lodash._basefor": { @@ -12354,12 +12354,12 @@ }, "lodash._getnative": { "version": "3.9.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, "lodash._isiterateecall": { "version": "3.0.9", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" }, "lodash._reinterpolate": { @@ -12408,7 +12408,7 @@ }, "lodash.get": { "version": "4.4.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.get/-/lodash.get-4.4.2.tgz", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, "lodash.includes": { @@ -12418,12 +12418,12 @@ }, "lodash.isarguments": { "version": "3.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isarray": { "version": "3.0.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, "lodash.isboolean": { @@ -12433,7 +12433,7 @@ }, "lodash.isequal": { "version": "4.5.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, "lodash.isinteger": { @@ -12463,7 +12463,7 @@ }, "lodash.keys": { "version": "3.1.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.keys/-/lodash.keys-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "requires": { "lodash._getnative": "^3.0.0", @@ -12483,12 +12483,12 @@ }, "lodash.once": { "version": "4.1.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.once/-/lodash.once-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, "lodash.restparam": { "version": "3.6.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, "lodash.sortby": { @@ -12520,7 +12520,7 @@ }, "lodash.toarray": { "version": "4.4.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, "lodash.uniq": { @@ -12756,7 +12756,7 @@ }, "markdown-it": { "version": "8.3.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/markdown-it/-/markdown-it-8.3.1.tgz", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.3.1.tgz", "integrity": "sha1-L0tiKUjM3Bk9ZvPKLUMSWsSscyM=", "requires": { "argparse": "^1.0.7", @@ -12826,12 +12826,12 @@ }, "mdurl": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/mdurl/-/mdurl-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { @@ -12875,7 +12875,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -12892,7 +12892,7 @@ }, "merge-stream": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/merge-stream/-/merge-stream-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { "readable-stream": "^2.0.1" @@ -13052,7 +13052,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "minimist-options": { @@ -13142,7 +13142,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -13218,7 +13218,7 @@ }, "mv": { "version": "2.1.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/mv/-/mv-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { @@ -13229,7 +13229,7 @@ "dependencies": { "glob": { "version": "6.0.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/glob/-/glob-6.0.4.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "optional": true, "requires": { @@ -13242,7 +13242,7 @@ }, "rimraf": { "version": "2.4.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/rimraf/-/rimraf-2.4.5.tgz", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { @@ -13292,7 +13292,7 @@ }, "ncp": { "version": "2.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/ncp/-/ncp-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" }, "nearley": { @@ -13309,7 +13309,7 @@ }, "negotiator": { "version": "0.6.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/negotiator/-/negotiator-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "neo-async": { @@ -13861,7 +13861,7 @@ }, "nugget": { "version": "2.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/nugget/-/nugget-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", "requires": { "debug": "^2.1.3", @@ -13883,7 +13883,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -14254,7 +14254,7 @@ }, "p-is-promise": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-limit": { @@ -14487,7 +14487,7 @@ }, "parse-color": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/parse-color/-/parse-color-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", "requires": { "color-convert": "~0.5.0" @@ -14495,7 +14495,7 @@ "dependencies": { "color-convert": { "version": "0.5.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/color-convert/-/color-convert-0.5.3.tgz", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" } } @@ -14512,7 +14512,7 @@ }, "parse-github-repo-url": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=" }, "parse-glob": { @@ -14604,7 +14604,7 @@ }, "path-is-inside": { "version": "1.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/path-is-inside/-/path-is-inside-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { @@ -14655,7 +14655,7 @@ }, "pause-stream": { "version": "0.0.11", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/pause-stream/-/pause-stream-0.0.11.tgz", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "requires": { "through": "~2.3" @@ -14675,7 +14675,7 @@ }, "pend": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/pend/-/pend-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "performance-now": { @@ -15237,7 +15237,7 @@ }, "pretty-bytes": { "version": "1.0.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "requires": { "get-stdin": "^4.0.1", @@ -15290,7 +15290,7 @@ }, "progress-stream": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/progress-stream/-/progress-stream-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", "requires": { "speedometer": "~0.1.2", @@ -15299,7 +15299,7 @@ "dependencies": { "isarray": { "version": "0.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "object-keys": { @@ -15309,7 +15309,7 @@ }, "readable-stream": { "version": "1.1.14", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/readable-stream/-/readable-stream-1.1.14.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "requires": { "core-util-is": "~1.0.0", @@ -15320,12 +15320,12 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, "through2": { "version": "0.2.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/through2/-/through2-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", "requires": { "readable-stream": "~1.1.9", @@ -15334,7 +15334,7 @@ }, "xtend": { "version": "2.1.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/xtend/-/xtend-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "requires": { "object-keys": "~0.4.0" @@ -15570,7 +15570,7 @@ }, "quick-lru": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/quick-lru/-/quick-lru-1.1.0.tgz", "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" }, "raf": { @@ -15686,7 +15686,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } @@ -15975,7 +15975,7 @@ }, "read-cmd-shim": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz", "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=", "requires": { "graceful-fs": "^4.1.2" @@ -16040,7 +16040,7 @@ }, "read-installed": { "version": "4.0.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/read-installed/-/read-installed-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", "integrity": "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=", "requires": { "debuglog": "^1.0.1", @@ -16169,7 +16169,7 @@ }, "read-text-file": { "version": "1.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/read-text-file/-/read-text-file-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/read-text-file/-/read-text-file-1.1.0.tgz", "integrity": "sha1-0MPxh2iCj5EH1huws2jue5D3GJM=", "requires": { "iconv-lite": "^0.4.17", @@ -16178,7 +16178,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -16218,7 +16218,7 @@ }, "readline-sync": { "version": "1.4.9", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/readline-sync/-/readline-sync-1.4.9.tgz", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz", "integrity": "sha1-PtqOZfI80qF+YTAbHwADOWr17No=" }, "realpath-native": { @@ -16317,7 +16317,7 @@ }, "redux-observable": { "version": "0.13.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/redux-observable/-/redux-observable-0.13.0.tgz", + "resolved": "https://registry.npmjs.org/redux-observable/-/redux-observable-0.13.0.tgz", "integrity": "sha1-NbJsLNu3HkmbMcqZYdoFgcKXOQk=" }, "redux-promise-middleware": { @@ -16402,7 +16402,7 @@ }, "registry-url": { "version": "3.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/registry-url/-/registry-url-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "requires": { "rc": "^1.0.1" @@ -16721,7 +16721,7 @@ }, "rsa-pem-from-mod-exp": { "version": "0.8.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/rsa-pem-from-mod-exp/-/rsa-pem-from-mod-exp-0.8.4.tgz", + "resolved": "https://registry.npmjs.org/rsa-pem-from-mod-exp/-/rsa-pem-from-mod-exp-0.8.4.tgz", "integrity": "sha1-NipCxtMEBW1JOz8SvOq7LGV2ptQ=" }, "rst-selector-parser": { @@ -16829,7 +16829,7 @@ }, "sanitize-filename": { "version": "1.6.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "requires": { "truncate-utf8-bytes": "^1.0.0" @@ -17006,7 +17006,7 @@ }, "select-hose": { "version": "2.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/select-hose/-/select-hose-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { @@ -17029,7 +17029,7 @@ }, "semver-diff": { "version": "2.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/semver-diff/-/semver-diff-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "requires": { "semver": "^5.0.3" @@ -17146,7 +17146,7 @@ }, "setimmediate": { "version": "1.0.5", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/setimmediate/-/setimmediate-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { @@ -17226,7 +17226,7 @@ }, "single-line-log": { "version": "1.1.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/single-line-log/-/single-line-log-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", "requires": { "string-width": "^1.0.1" @@ -17234,7 +17234,7 @@ "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { "number-is-nan": "^1.0.0" @@ -17242,7 +17242,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", @@ -17394,7 +17394,7 @@ }, "sntp": { "version": "1.0.9", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/sntp/-/sntp-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { "hoek": "2.x.x" @@ -17551,7 +17551,7 @@ }, "spdy": { "version": "3.4.7", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/spdy/-/spdy-3.4.7.tgz", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", "requires": { "debug": "^2.6.8", @@ -17598,7 +17598,7 @@ }, "speedometer": { "version": "0.1.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/speedometer/-/speedometer-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=" }, "split": { @@ -17627,7 +17627,7 @@ }, "sprintf-js": { "version": "1.1.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/sprintf-js/-/sprintf-js-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" }, "sshpk": { @@ -17666,7 +17666,7 @@ }, "stat-mode": { "version": "0.2.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/stat-mode/-/stat-mode-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=" }, "static-extend": { @@ -17925,7 +17925,7 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "strong-log-transformer": { @@ -18050,7 +18050,7 @@ }, "temp-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" }, "temp-file": { @@ -18066,7 +18066,7 @@ }, "temp-write": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/temp-write/-/temp-write-3.4.0.tgz", "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=", "requires": { "graceful-fs": "^4.1.2", @@ -18079,7 +18079,7 @@ }, "term-size": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/term-size/-/term-size-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { "execa": "^0.7.0" @@ -18205,12 +18205,12 @@ }, "throttleit": { "version": "0.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/throttleit/-/throttleit-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=" }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -18243,7 +18243,7 @@ }, "timed-out": { "version": "4.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/timed-out/-/timed-out-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { @@ -18345,7 +18345,7 @@ }, "topo": { "version": "1.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/topo/-/topo-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", "requires": { "hoek": "2.x.x" @@ -18387,7 +18387,7 @@ }, "trim-off-newlines": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" }, "trim-right": { @@ -18405,7 +18405,7 @@ }, "truncate-utf8-bytes": { "version": "1.0.2", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "requires": { "utf8-byte-length": "^1.0.1" @@ -18449,7 +18449,7 @@ }, "tslint-loader": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tslint-loader/-/tslint-loader-3.6.0.tgz", + "resolved": "http://registry.npmjs.org/tslint-loader/-/tslint-loader-3.6.0.tgz", "integrity": "sha512-Me9Qf/87BOfCY8uJJw+J7VMF4U8WiMXKLhKKKugMydF0xMhMOt9wo2mjYTNhwbF9H7SHh8PAIwRG8roisTNekQ==", "requires": { "loader-utils": "^1.0.2", @@ -18523,7 +18523,7 @@ }, "typical": { "version": "2.6.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/typical/-/typical-2.6.1.tgz", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=" }, "typings-for-css-modules-loader": { @@ -18762,7 +18762,7 @@ }, "unique-string": { "version": "1.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/unique-string/-/unique-string-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "requires": { "crypto-random-string": "^1.0.0" @@ -18816,7 +18816,7 @@ }, "unzip-response": { "version": "2.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/unzip-response/-/unzip-response-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "upath": { @@ -18892,7 +18892,7 @@ }, "url-join": { "version": "1.1.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/url-join/-/url-join-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=" }, "url-loader": { @@ -18957,7 +18957,7 @@ }, "url-to-options": { "version": "1.0.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/url-to-options/-/url-to-options-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, "use": { @@ -18967,7 +18967,7 @@ }, "utf8-byte-length": { "version": "1.0.4", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" }, "util": { @@ -18992,7 +18992,7 @@ }, "util-extend": { "version": "1.0.3", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/util-extend/-/util-extend-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=" }, "util.promisify": { @@ -19069,12 +19069,12 @@ "dependencies": { "extsprintf": { "version": "1.2.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/extsprintf/-/extsprintf-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" }, "verror": { "version": "1.6.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/verror/-/verror-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", "requires": { "extsprintf": "1.2.0" @@ -19241,7 +19241,7 @@ }, "wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "resolved": "https://botbuilder.myget.org/F/botbuilder-v4-js-daily/npm/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "requires": { "defaults": "^1.0.3" @@ -19842,7 +19842,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", @@ -19936,7 +19936,7 @@ }, "xdg-basedir": { "version": "3.0.0", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" }, "xml-name-validator": { @@ -19951,7 +19951,7 @@ }, "xmldom": { "version": "0.1.27", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/xmldom/-/xmldom-0.1.27.tgz", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" }, "xregexp": { @@ -20017,7 +20017,7 @@ }, "yauzl": { "version": "2.4.1", - "resolved": "https://botbuilder.myget.org/F/botbuilder-tools-daily/npm/yauzl/-/yauzl-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "requires": { "fd-slicer": "~1.0.1" diff --git a/packages/app/client/src/data/sagas/servicesExplorerSagas.spec.ts b/packages/app/client/src/data/sagas/servicesExplorerSagas.spec.ts index 89131ceb8..ba41234e7 100644 --- a/packages/app/client/src/data/sagas/servicesExplorerSagas.spec.ts +++ b/packages/app/client/src/data/sagas/servicesExplorerSagas.spec.ts @@ -1,7 +1,7 @@ import { AzureLoginFailedDialogContainer, AzureLoginSuccessDialogContainer, - ConnectLuisAppPromptDialogContainer, + ConnectServicePromptDialogContainer, GetStartedWithCSDialogContainer } from '../../ui/dialogs'; import { DialogService } from '../../ui/dialogs/service'; // ☣☣ careful! ☣☣ @@ -96,7 +96,7 @@ describe('The ServiceExplorerSagas', () => { azureAuthWorkflowComponents: { loginFailedDialog: AzureLoginFailedDialogContainer, loginSuccessDialog: AzureLoginSuccessDialogContainer, - promptDialog: ConnectLuisAppPromptDialogContainer + promptDialog: ConnectServicePromptDialogContainer }, getStartedDialog: GetStartedWithCSDialogContainer, editorComponent: ConnectedServiceEditorContainer, @@ -371,7 +371,7 @@ describe('The ServiceExplorerSagas', () => { azureAuthWorkflowComponents: { loginFailedDialog: AzureLoginFailedDialogContainer, loginSuccessDialog: AzureLoginSuccessDialogContainer, - promptDialog: ConnectLuisAppPromptDialogContainer + promptDialog: ConnectServicePromptDialogContainer }, getStartedDialog: GetStartedWithCSDialogContainer, editorComponent: ConnectedServiceEditorContainer, diff --git a/packages/app/client/src/data/sagas/servicesExplorerSagas.ts b/packages/app/client/src/data/sagas/servicesExplorerSagas.ts index c9c62d615..e60f38047 100644 --- a/packages/app/client/src/data/sagas/servicesExplorerSagas.ts +++ b/packages/app/client/src/data/sagas/servicesExplorerSagas.ts @@ -220,9 +220,11 @@ function* openContextMenuForService(action: ConnectedServiceAction) : IterableIterator { const menuItems = [ - { label: 'Language Understanding (LUIS)', id: ServiceTypes.Luis }, - { label: 'QnA Maker', id: ServiceTypes.QnA }, - { label: 'Dispatch', id: ServiceTypes.Dispatch } + { label: 'Add Language Understanding (LUIS)', id: ServiceTypes.Luis }, + { label: 'Add QnA Maker', id: ServiceTypes.QnA }, + { label: 'Add Dispatch', id: ServiceTypes.Dispatch }, + { type: 'separator' }, + { label: 'Add Azure Application Insights', id: ServiceTypes.AppInsights} ]; const response = yield CommandServiceImpl.remoteCall(SharedConstants.Commands.Electron.DisplayContextMenu, menuItems); diff --git a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.tsx b/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.tsx deleted file mode 100644 index 1da129503..000000000 --- a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import * as React from 'react'; -import { Component } from 'react'; -import { DefaultButton, Dialog, DialogFooter, PrimaryButton } from '@bfemulator/ui-react'; -import { ServiceTypes } from 'botframework-config/lib/schema'; -import * as styles from '../dialogStyles.scss'; - -export interface ConnectLuisAppPromptDialogProps { - cancel: () => void; - confirm: () => void; - addLuisAppManually: () => void; - onAnchorClick: (url: string) => void; - serviceType?: ServiceTypes; -} - -export class ConnectLuisAppPromptDialog extends Component { - public render() { - if (this.props.serviceType === 'luis') { - return this.luisView; - } else if (this.props.serviceType === 'qna') { - return this.qnaView; - } else { - return this.dispatchView; - } - } - - private get luisView(): JSX.Element { - return ( - -

- Sign in to your Azure account to select the LUIS applications
- you'd like to associate with this bot.  - Learn more about LUIS -

-

- Alternatively, you can  - add a LUIS app manually -
with the app ID, version, and authoring key -

- - - - -
- ); - } - - private get qnaView(): JSX.Element { - return ( - -

- Sign in to your Azure account to select the QnA Maker knowledge  - bases you'd like to associate with this bot.  - Learn more about QnA Maker -

-

- Alternatively, you can  - - connect to a QnA Maker knowledge base manually - -  with the app ID, version, and authoring key -

- - - - -
- ); - } - - private get dispatchView(): JSX.Element { - return ( - -

- Sign in to your Azure account to select the Dispatch model you'd like to associate with this bot.  - Learn more about Dispatch models -

-

- Alternatively, you can  - - connect to a Dispatch model manually - -  with the app ID, version, and authoring key -

- - - - -
- ); - } - - private onLearnMoreLUIS = () => { - this.props.onAnchorClick('http://aka.ms/bot-framework-emulator-LUIS-docs-home'); - } - private onLearnMoreQnAMaker = () => { - this.props.onAnchorClick('http://aka.ms/bot-framework-emulator-qna-docs-home'); - } - private onLearnMoreDispatch = () => { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-create-dispatch'); - } -} diff --git a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.spec.tsx b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx similarity index 81% rename from packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.spec.tsx rename to packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx index e7e1b5da5..535972c4c 100644 --- a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialog.spec.tsx +++ b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx @@ -3,8 +3,8 @@ import { Provider } from 'react-redux'; import { mount } from 'enzyme'; import { createStore } from 'redux'; import { azureAuth } from '../../../data/reducer/azureAuthReducer'; -import { ConnectLuisAppPromptDialog } from './connectLuisAppPromptDialog'; -import { ConnectLuisAppPromptDialogContainer } from './connectLuisAppPromptDialogContainer'; +import { ConnectServicePromptDialog } from './connectServicePromptDialog'; +import { ConnectServicePromptDialogContainer } from './connectServicePromptDialogContainer'; import { DialogService } from '../service'; jest.mock('../service', () => ({ @@ -24,23 +24,23 @@ jest.mock('../../dialogs/', () => ({ SecretPromptDialog: () => undefined })); -describe('The ConnectLuisAppPromptDialog component should', () => { +describe('The ConnectServicePromptDialog component should', () => { let parent; let node; beforeEach(() => { parent = mount( - + ); - node = parent.find(ConnectLuisAppPromptDialog); + node = parent.find(ConnectServicePromptDialog); }); it('should render deeply', () => { - expect(parent.find(ConnectLuisAppPromptDialogContainer)).not.toBe(null); + expect(parent.find(ConnectServicePromptDialogContainer)).not.toBe(null); }); it('should contain both a cancel and confirm function in the props', () => { - const prompt = parent.find(ConnectLuisAppPromptDialog); + const prompt = parent.find(ConnectServicePromptDialog); expect(typeof (prompt.props() as any).cancel).toBe('function'); expect(typeof (prompt.props() as any).confirm).toBe('function'); }); diff --git a/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx new file mode 100644 index 000000000..fbc49b148 --- /dev/null +++ b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx @@ -0,0 +1,145 @@ +import { DefaultButton, Dialog, DialogFooter, PrimaryButton } from '@bfemulator/ui-react'; +import { ServiceTypes } from 'botframework-config/lib/schema'; +import * as React from 'react'; +import { Component, MouseEvent, ReactNode } from 'react'; +import * as styles from '../dialogStyles.scss'; + +export interface ConnectServicePromptDialogProps { + cancel: () => void; + confirm: () => void; + addServiceManually: () => void; + onAnchorClick: (url: string) => void; + serviceType?: ServiceTypes; +} + +const titleMap = { + [ServiceTypes.Luis]: 'Connect your bot to a LUIS application', + [ServiceTypes.Dispatch]: 'Connect your bot to a Dispatch model', + [ServiceTypes.QnA]: 'Connect your bot to a QnA Maker knowledge base', + [ServiceTypes.AppInsights]: 'Connect to an Azure Application Insights resource' +}; + +export class ConnectServicePromptDialog extends Component { + + public render() { + return ( + + { this.dialogContent } + + + + + + ); + } + + private get dialogContent(): ReactNode { + const { serviceType } = this.props; + switch (serviceType) { + case ServiceTypes.Luis: + return this.luisContent; + + case ServiceTypes.QnA: + return this.qnaContent; + + case ServiceTypes.Dispatch: + return this.dispatchContent; + + case ServiceTypes.AppInsights: + return this.appInsightsContent; + + default: + throw new TypeError(`${serviceType} is not a know service type`); + } + } + + private get luisContent(): ReactNode { + return ( + <> +

+ { `Sign in to your Azure account to select the LUIS applications you'd like to associate with this bot. ` } + Learn more about LUIS. + +

+

+ { `Alternatively, you can ` } + add a LUIS app manually + { ` with the app ID, version, and authoring key.` } +

+ + ); + } + + private get qnaContent(): JSX.Element { + return ( + <> +

+ { 'Sign in to your Azure account to select the QnA ' + + 'Maker knowledge bases you\'d like to associate with this bot. ' } + Learn more about QnA Maker. + +

+

+ { `Alternatively, you can ` } + connect to a QnA Maker knowledge base manually + + { ' with the app ID, version, and authoring key.' } +

+ + ); + } + + private get dispatchContent(): JSX.Element { + return ( + <> +

+ { `Sign in to your Azure account to select the Dispatch model you'd like to associate with this bot. ` } + Learn more about Dispatch models. + +

+

+ { `Alternatively, you can ` } + + connect to a Dispatch model manually + + { ` with the app ID, version, and authoring key.` } +

+ + ); + } + + private get appInsightsContent(): JSX.Element { + return ( + <> +

+ { 'Sign in to your Azure account to select the Azure Application ' + + 'Insights you\'d like to associate with this bot. ' } + + Learn more about Azure Application Insights. + +

+

+ { `Alternatively, you can ` } + + connect to a azure Application Insights manually + + { ` with the app ID, version, and authoring key.` } +

+ + ); + } + + private onAnchorClick = (event: MouseEvent) => { + const { href } = event.currentTarget.dataset; + this.props.onAnchorClick(href); + } +} diff --git a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialogContainer.ts b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialogContainer.ts similarity index 87% rename from packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialogContainer.ts rename to packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialogContainer.ts index 028e4876d..4d51f8be8 100644 --- a/packages/app/client/src/ui/dialogs/connectLuisAppPromptDialog/connectLuisAppPromptDialogContainer.ts +++ b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialogContainer.ts @@ -31,27 +31,27 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // +import { SharedConstants } from '@bfemulator/app-shared'; import { connect } from 'react-redux'; import { CommandServiceImpl } from '../../../platform/commands/commandServiceImpl'; -import { ConnectLuisAppPromptDialog, ConnectLuisAppPromptDialogProps } from './connectLuisAppPromptDialog'; import { DialogService } from '../service'; -import { SharedConstants } from '@bfemulator/app-shared'; +import { ConnectServicePromptDialog, ConnectServicePromptDialogProps } from './connectServicePromptDialog'; const mapDispatchToProps = ( _dispatch: () => void, ownProps: { [propName: string]: any } -): ConnectLuisAppPromptDialogProps => { +): ConnectServicePromptDialogProps => { return { ...ownProps, cancel: () => DialogService.hideDialog(0), confirm: () => DialogService.hideDialog(1), - addLuisAppManually: () => DialogService.hideDialog(2), + addServiceManually: () => DialogService.hideDialog(2), onAnchorClick: (url) => { CommandServiceImpl.remoteCall(SharedConstants.Commands.Electron.OpenExternal, url).catch(); } }; }; -export const ConnectLuisAppPromptDialogContainer = connect( +export const ConnectServicePromptDialogContainer = connect( null, mapDispatchToProps -)(ConnectLuisAppPromptDialog); +)(ConnectServicePromptDialog); diff --git a/packages/app/client/src/ui/dialogs/index.ts b/packages/app/client/src/ui/dialogs/index.ts index 1adfeaf5b..be0d76897 100644 --- a/packages/app/client/src/ui/dialogs/index.ts +++ b/packages/app/client/src/ui/dialogs/index.ts @@ -38,7 +38,7 @@ export * from './service'; export * from './azureLoginSuccessDialog/azureLoginSuccessDialogContainer'; export * from './azureLoginPromptDialog/azureLoginPromptDialogContainer'; export * from './azureLoginFailedDialog/azureLoginFailedDialogContainer'; -export * from './connectLuisAppPromptDialog/connectLuisAppPromptDialogContainer'; +export * from './connectServicePromptDialog/connectServicePromptDialogContainer'; export * from './getStartedWithCSDialog/getStartedWithCSDialogContainer'; export * from './postMigrationDialog/postMigrationDialogContainer'; export * from './progressIndicator/progressIndicatorContainer'; diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss new file mode 100644 index 000000000..3aa17fa4e --- /dev/null +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss @@ -0,0 +1,3 @@ +.connectedServiceEditor { + width: 400px; +} diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss.d.ts b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss.d.ts new file mode 100644 index 000000000..7bd95cac0 --- /dev/null +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.scss.d.ts @@ -0,0 +1,2 @@ +// This is a generated file. Changes are likely to result in being overwritten +export const connectedServiceEditor: string; diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.spec.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.spec.tsx index 74534c3da..c350e9e5a 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.spec.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.spec.tsx @@ -1,13 +1,16 @@ +import { SharedConstants } from '@bfemulator/app-shared'; +import { PrimaryButton } from '@bfemulator/ui-react'; +import { ServiceTypes } from 'botframework-config'; +import { LuisService } from 'botframework-config/lib/models'; +import { mount } from 'enzyme'; import * as React from 'react'; import { Provider } from 'react-redux'; -import { mount } from 'enzyme'; import { combineReducers, createStore } from 'redux'; import { azureAuth } from '../../../../../data/reducer/azureAuthReducer'; -import { ConnectedServiceEditorContainer } from './connectedServiceEditorContainer'; -import { ConnectedServiceEditor } from './connectedServiceEditor'; +import { CommandServiceImpl } from '../../../../../platform/commands/commandServiceImpl'; import { DialogService } from '../../../../dialogs/service'; -import { LuisService } from 'botframework-config/lib/models'; -import { PrimaryButton } from '@bfemulator/ui-react'; +import { ConnectedServiceEditor } from './connectedServiceEditor'; +import { ConnectedServiceEditorContainer } from './connectedServiceEditorContainer'; jest.mock('../../../../dialogs/service', () => ({ DialogService: { @@ -24,6 +27,8 @@ jest.mock('../../../../dialogs/', () => ({ SecretPromptDialog: () => undefined })); +jest.mock('./connectedServiceEditor.scss', () => ({})); + describe('The ConnectedServiceEditor component should', () => { let parent; let node; @@ -98,4 +103,25 @@ describe('The ConnectedServiceEditor component should', () => { const submitBtn = node.find(PrimaryButton); expect(submitBtn.props.disabled).toBeFalsy(); }); + + it('should request to open a url when the learn more anchor is clicked based on the service type', async () => { + const remoteCallSpy = jest.spyOn(CommandServiceImpl, 'remoteCall'); + const instance = node.instance(); + expect(() => instance.onLearnMoreClick()).toThrow(); + instance.props = {...instance.props, serviceType: ServiceTypes.Luis}; + + instance.onLearnMoreClick(); + expect(remoteCallSpy).toHaveBeenCalledWith(SharedConstants.Commands.Electron.OpenExternal, + 'http://aka.ms/bot-framework-emulator-LUIS-docs-home'); + + instance.props = {...instance.props, serviceType: ServiceTypes.QnA}; + instance.onLearnMoreClick(); + expect(remoteCallSpy).toHaveBeenCalledWith(SharedConstants.Commands.Electron.OpenExternal, + 'http://aka.ms/bot-framework-emulator-qna-keys'); + + instance.props = {...instance.props, serviceType: ServiceTypes.Dispatch}; + instance.onLearnMoreClick(); + expect(remoteCallSpy).toHaveBeenCalledWith(SharedConstants.Commands.Electron.OpenExternal, + 'https://aka.ms/bot-framework-emulator-create-dispatch'); + }); }); diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx index 598650297..c00ecc006 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx @@ -31,13 +31,14 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -import { ConnectedService } from 'botframework-config/lib/models'; +import { DefaultButton, Dialog, DialogFooter, PrimaryButton, TextField } from '@bfemulator/ui-react'; import { BotConfigurationBase } from 'botframework-config/lib/botConfigurationBase'; +import { ConnectedService } from 'botframework-config/lib/models'; import { IConnectedService, ServiceTypes } from 'botframework-config/lib/schema'; -import { DefaultButton, Dialog, DialogFooter, PrimaryButton, TextField } from '@bfemulator/ui-react'; import * as React from 'react'; import { ChangeEvent, Component } from 'react'; import { serviceTypeLabels } from '../../../../../utils/serviceTypeLables'; +import * as styles from './connectedServiceEditor.scss'; interface ConnectedServiceEditorProps { connectedService: IConnectedService; @@ -54,16 +55,19 @@ interface ConnectedServiceEditorState extends Partial { const labelMap = { authoringKey: 'Authoring key', + applicationId: 'App Insights Application ID', + instrumentationKey: 'App Insight Instrumentation Key', + serviceName: 'Azure Service Name', appId: 'LUIS app ID', id: 'App ID', endpointKey: 'Endpoint key', hostname: 'Host Name', kbId: 'Knowledge base ID', name: 'Name', - resourceGroup: 'Resource group', - subscriptionId: 'Subscription ID', - subscriptionKey: 'Subscription key', - tenantId: 'Tenant ID', + resourceGroup: 'Azure Resource group', + subscriptionId: 'Azure Subscription ID', + subscriptionKey: 'Azure Subscription key', + tenantId: 'Azure Tenant ID', version: 'Version', ...serviceTypeLabels }; @@ -72,7 +76,8 @@ const titleMap = { [ServiceTypes.Luis]: 'Connect to a LUIS app', [ServiceTypes.Dispatch]: 'Connect to a Dispatch model', [ServiceTypes.QnA]: 'Connect to a QnA Maker knowledge base', - [ServiceTypes.Bot]: 'Connect to Azure Bot Service' + [ServiceTypes.Bot]: 'Connect to Azure Bot Service', + [ServiceTypes.AppInsights]: 'Connect to Application Insights resource' }; const portalMap = { @@ -90,6 +95,17 @@ const getEditableFields = (service: IConnectedService): string[] => { case ServiceTypes.QnA: return ['name', 'kbId', 'hostname', 'subscriptionKey', 'endpointKey']; + case ServiceTypes.AppInsights: + return [ + 'name', + 'tenantId', + 'subscriptionKey', + 'resourceGroup', + 'serviceName', + 'instrumentationKey', + 'applicationId' + ]; + default: throw new TypeError(`${ service.type } is not a valid service type`); } @@ -139,10 +155,10 @@ export class ConnectedServiceEditor extends Component +

You can find your knowledge base ID and subscription key in { portalMap[type] }  - + Learn more about keys in { labelMap[type] }

@@ -156,6 +172,10 @@ export class ConnectedServiceEditor extends Component { - if (ServiceTypes.Luis) { - this.props.onAnchorClick('http://aka.ms/bot-framework-emulator-LUIS-docs-home'); - } else if (ServiceTypes.QnA) { - this.props.onAnchorClick('http://aka.ms/bot-framework-emulator-qna-keys'); - } else { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-create-dispatch'); + private onLearnMoreClick = (): void => { + let url; + switch (this.props.serviceType) { + case ServiceTypes.Luis: + url = 'http://aka.ms/bot-framework-emulator-LUIS-docs-home'; + break; + + case ServiceTypes.QnA: + url = 'http://aka.ms/bot-framework-emulator-qna-keys'; + break; + + case ServiceTypes.Dispatch: + url = 'https://aka.ms/bot-framework-emulator-create-dispatch'; + break; + + default: + throw new Error(`${this.props.serviceType} is not a known service.`); } + this.props.onAnchorClick(url); } private onSubmitClick = (): void => { diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServicePicker/connectedServicePicker.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServicePicker/connectedServicePicker.tsx index 57abf6f1e..93428a97f 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServicePicker/connectedServicePicker.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServicePicker/connectedServicePicker.tsx @@ -41,7 +41,8 @@ const titleMap = { [ServiceTypes.Luis]: 'Connect to your LUIS apps', [ServiceTypes.Dispatch]: 'Connect to a Dispatch model', [ServiceTypes.QnA]: 'Connect to your QnA Maker knowledge base', - [ServiceTypes.Bot]: 'Connect to an Azure Bot Service' + [ServiceTypes.Bot]: 'Connect to an Azure Bot Service', + [ServiceTypes.AppInsights]: 'Connect to an Azure Application Insights resource' }; const connected = 'connected'; diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.spec.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.spec.tsx index 687557c3b..6016b5b7c 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.spec.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.spec.tsx @@ -1,26 +1,29 @@ +import { SharedConstants } from '@bfemulator/app-shared'; +import { LuisService } from 'botframework-config/lib/models'; +import { mount } from 'enzyme'; import * as React from 'react'; import { Provider } from 'react-redux'; -import { mount } from 'enzyme'; import { combineReducers, createStore } from 'redux'; -import { bot } from '../../../../data/reducer/bot'; -import { explorer } from '../../../../data/reducer/explorer'; -import { LuisService } from 'botframework-config/lib/models'; -import { ServicesExplorerContainer } from './servicesExplorerContainer'; -import { ServicesExplorer } from './servicesExplorer'; import { load, setActive } from '../../../../data/action/botActions'; import { openAddServiceContextMenu, openContextMenuForConnectedService, - openServiceDeepLink + openServiceDeepLink, + openSortContextMenu } from '../../../../data/action/connectedServiceActions'; -import { ConnectedServiceEditorContainer } from './connectedServiceEditor'; +import { bot } from '../../../../data/reducer/bot'; +import { explorer } from '../../../../data/reducer/explorer'; +import { CommandServiceImpl } from '../../../../platform/commands/commandServiceImpl'; import { AzureLoginFailedDialogContainer, AzureLoginSuccessDialogContainer, - ConnectLuisAppPromptDialogContainer, + ConnectServicePromptDialogContainer, GetStartedWithCSDialogContainer } from '../../../dialogs'; +import { ConnectedServiceEditorContainer } from './connectedServiceEditor'; import { ConnectedServicePickerContainer } from './connectedServicePicker/connectedServicePickerContainer'; +import { ServicesExplorer } from './servicesExplorer'; +import { ServicesExplorerContainer } from './servicesExplorerContainer'; jest.mock('../../../dialogs', () => ({ DialogService: { @@ -28,9 +31,10 @@ jest.mock('../../../dialogs', () => ({ hideDialog: () => Promise.resolve(false), } })); - +jest.mock('./servicesExplorer.scss', () => ({})); jest.mock('../servicePane/servicePane.scss', () => ({})); jest.mock('./connectedServicePicker/connectedServicePicker.scss', () => ({})); +jest.mock('./connectedServiceEditor/connectedServiceEditor.scss', () => ({})); jest.mock('./servicesExplorer.scss', () => ({})); describe('The ServicesExplorer component should', () => { @@ -94,7 +98,7 @@ describe('The ServicesExplorer component should', () => { azureAuthWorkflowComponents: { loginFailedDialog: AzureLoginFailedDialogContainer, loginSuccessDialog: AzureLoginSuccessDialogContainer, - promptDialog: ConnectLuisAppPromptDialogContainer + promptDialog: ConnectServicePromptDialogContainer }, getStartedDialog: GetStartedWithCSDialogContainer, editorComponent: ConnectedServiceEditorContainer, @@ -102,17 +106,37 @@ describe('The ServicesExplorer component should', () => { })); }); + it('should dispatch a request to open a link when an anchor is clicked', () => { + const instance = node.instance(); + const remoteCallSpy = jest.spyOn(CommandServiceImpl, 'remoteCall'); + instance.onAnchorClick({ currentTarget: { dataset: { href: 'http://someurl' } } }); + expect(remoteCallSpy).toHaveBeenCalledWith(SharedConstants.Commands.Electron.OpenExternal, 'http://someurl'); + }); + + it('should dispatch to the store when a request to open the sort context menu is made', () => { + const instance = node.instance(); + instance.onSortClick(); + expect(mockDispatch).toHaveBeenCalledWith(openSortContextMenu()); + }); + + it('should open the service deep link when the enter key is pressed on a focused list item', () => { + const instance = node.instance(); + const onLinkClickSpy = jest.spyOn(instance, 'onLinkClick'); + instance.onKeyPress({ key: 'Enter', currentTarget: { dataset: { index: 0 } } }); + expect(onLinkClickSpy).toHaveBeenCalledWith({ key: 'Enter', currentTarget: { dataset: { index: 0 } } }); + }); + it('should flag newly added services for animation', () => { const instance = node.instance(); const c = Object.getPrototypeOf(instance).constructor; const prevState = { sortCriteria: 'name', - services: [{id: 'existingService'}] + services: [{ id: 'existingService' }] }; const nextProps = { sortCriteria: 'name', - services: [{id: 'existingService'}, {id: 'newService'}] + services: [{ id: 'existingService' }, { id: 'newService' }] }; const state = c.getDerivedStateFromProps(nextProps, prevState); diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.tsx index 83556db3f..3eca160d3 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorer.tsx @@ -33,14 +33,14 @@ import { IConnectedService } from 'botframework-config/lib/schema'; import * as React from 'react'; -import { MouseEventHandler, SyntheticEvent } from 'react'; +import { MouseEvent, MouseEventHandler, SyntheticEvent } from 'react'; import { ServicePane, ServicePaneProps } from '../servicePane/servicePane'; import { ConnectedServiceEditorContainer } from './connectedServiceEditor'; import { ConnectedServicePickerPayload } from '../../../../data/action/connectedServiceActions'; import { AzureLoginFailedDialogContainer, AzureLoginSuccessDialogContainer, - ConnectLuisAppPromptDialogContainer, + ConnectServicePromptDialogContainer, GetStartedWithCSDialogContainer, ProgressIndicatorContainer } from '../../../dialogs'; @@ -99,24 +99,28 @@ export class ServicesExplorer extends ServicePane { { 'You can connect your bot to services such as ' } + data-href="https://aka.ms/bot-framework-emulator-LUIS-docs-home" + onClick={ this.onAnchorClick }> { 'Language Understanding (LUIS), ' } + data-href="https://aka.ms/bot-framework-emulator-qna-docs-home" + onClick={ this.onAnchorClick }> { 'QnA Maker, and ' } + data-href="https://aka.ms/bot-framework-emulator-create-dispatch" + onClick={ this.onAnchorClick }> Dispatch.

+ data-href="https://aka.ms/bot-framework-emulator-services" + onClick={ this.onAnchorClick }> Learn more about using services.

@@ -139,7 +143,7 @@ export class ServicesExplorer extends ServicePane { key={ index } className={ `${ styles.link } ${ toAnimate[service.id] ? styles.animateHighlight : '' } ` } onDoubleClick={ this.onLinkClick } - onKeyPress={ this.onHandleKeyPress } + onKeyPress={ this.onKeyPress } data-index={ index } tabIndex={ 0 } title={ service.name } @@ -157,7 +161,7 @@ export class ServicesExplorer extends ServicePane { this.props.openContextMenuForService(connectedService, ConnectedServiceEditorContainer); } - protected onHandleKeyPress = (e): void => { + protected onKeyPress = (e): void => { if (e.key === 'Enter') { this.onLinkClick(e); } @@ -179,7 +183,7 @@ export class ServicesExplorer extends ServicePane { azureAuthWorkflowComponents: { loginFailedDialog: AzureLoginFailedDialogContainer, loginSuccessDialog: AzureLoginSuccessDialogContainer, - promptDialog: ConnectLuisAppPromptDialogContainer + promptDialog: ConnectServicePromptDialogContainer }, getStartedDialog: GetStartedWithCSDialogContainer, editorComponent: ConnectedServiceEditorContainer, @@ -188,19 +192,7 @@ export class ServicesExplorer extends ServicePane { }); } - private onLearnMoreLUISAnchor = () => { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-LUIS-docs-home'); - } - - private onLearnMoreQnAAnchor = () => { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-qna-docs-home'); - } - - private onLearnMoreDispatchAnchor = () => { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-create-dispatch'); - } - - private onLearnMoreServicesAnchor = () => { - this.props.onAnchorClick('https://aka.ms/bot-framework-emulator-services'); + private onAnchorClick = (event: MouseEvent): void => { + this.props.onAnchorClick(event.currentTarget.dataset.href); } } diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorerContainer.ts b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorerContainer.ts index df3fb9691..77d520d71 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorerContainer.ts +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/servicesExplorerContainer.ts @@ -31,6 +31,7 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // +import { SharedConstants } from '@bfemulator/app-shared'; import { IConnectedService, ServiceTypes } from 'botframework-config/lib/schema'; import { ComponentClass } from 'react'; import { connect } from 'react-redux'; @@ -41,12 +42,11 @@ import { openServiceDeepLink, openSortContextMenu } from '../../../../data/action/connectedServiceActions'; +import { CONNECTED_SERVICES_PANEL_ID } from '../../../../data/action/explorerActions'; import { RootState } from '../../../../data/store'; +import { CommandServiceImpl } from '../../../../platform/commands/commandServiceImpl'; import { ConnectedServiceEditor } from './connectedServiceEditor/connectedServiceEditor'; import { ServicesExplorer, ServicesExplorerProps } from './servicesExplorer'; -import { CONNECTED_SERVICES_PANEL_ID } from '../../../../data/action/explorerActions'; -import { CommandServiceImpl } from '../../../../platform/commands/commandServiceImpl'; -import { SharedConstants } from '@bfemulator/app-shared'; const mapStateToProps = (state: RootState): Partial => { const { services = [] } = state.bot.activeBot; @@ -54,6 +54,7 @@ const mapStateToProps = (state: RootState): Partial => { return { services: services.filter(service => service.type === ServiceTypes.QnA || service.type === ServiceTypes.Dispatch || + service.type === ServiceTypes.AppInsights || service.type === ServiceTypes.Luis), sortCriteria, window @@ -63,7 +64,7 @@ const mapStateToProps = (state: RootState): Partial => { const mapDispatchToProps = (dispatch): Partial => { return { onAnchorClick: (url) => { - CommandServiceImpl.remoteCall(SharedConstants.Commands.Electron.OpenExternal, url).catch(); + return CommandServiceImpl.remoteCall(SharedConstants.Commands.Electron.OpenExternal, url); }, openAddServiceContextMenu: (payload: ConnectedServicePickerPayload) => dispatch(openAddServiceContextMenu(payload)), diff --git a/packages/app/client/src/utils/serviceTypeLables.ts b/packages/app/client/src/utils/serviceTypeLables.ts index 477926e87..f8b5cda5a 100644 --- a/packages/app/client/src/utils/serviceTypeLables.ts +++ b/packages/app/client/src/utils/serviceTypeLables.ts @@ -37,4 +37,6 @@ export const serviceTypeLabels = { [ServiceTypes.Luis]: 'LUIS', [ServiceTypes.Dispatch]: 'Dispatch', [ServiceTypes.QnA]: 'QnA Maker', + [ServiceTypes.AppInsights]: 'App Insights', + [ServiceTypes.Bot]: 'Azure Bot Service' }; diff --git a/packages/sdk/ui-react/src/widget/textField/textField.scss b/packages/sdk/ui-react/src/widget/textField/textField.scss index a863c2978..fb85efb8f 100644 --- a/packages/sdk/ui-react/src/widget/textField/textField.scss +++ b/packages/sdk/ui-react/src/widget/textField/textField.scss @@ -13,7 +13,7 @@ color: var(--input-placeholder-color); } - &:invalid { + &.invalid { color: var(--error-text); border: var(--input-border-error); } diff --git a/packages/sdk/ui-react/src/widget/textField/textField.scss.d.ts b/packages/sdk/ui-react/src/widget/textField/textField.scss.d.ts index 137b699a4..89d315a53 100644 --- a/packages/sdk/ui-react/src/widget/textField/textField.scss.d.ts +++ b/packages/sdk/ui-react/src/widget/textField/textField.scss.d.ts @@ -1,5 +1,6 @@ // This is a generated file. Changes are likely to result in being overwritten export const input: string; +export const invalid: string; export const label: string; export const requiredIndicator: string; export const sub: string; diff --git a/packages/sdk/ui-react/src/widget/textField/textField.tsx b/packages/sdk/ui-react/src/widget/textField/textField.tsx index 411f31094..71ab740a8 100644 --- a/packages/sdk/ui-react/src/widget/textField/textField.tsx +++ b/packages/sdk/ui-react/src/widget/textField/textField.tsx @@ -22,9 +22,13 @@ export class TextField extends Component { public render(): ReactNode { // Trim off what we don't want to send to the input tag const { inputContainerClassName = '', className = '', label, errorMessage, ...inputProps } = this.props; + let inputClassName = `${styles.input} ${className} `; + if (errorMessage) { + inputClassName += styles.invalid; + } return
{ this.labelNode } - + { this.props.children } { this.errorNode }
; From 9089cba79ce09f90416fd4b885174b2ac8106a6a Mon Sep 17 00:00:00 2001 From: Justin Wilaby Date: Mon, 19 Nov 2018 14:36:50 -0800 Subject: [PATCH 2/4] Updated unit tests --- .../connectServicePromptDialog.spec.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx index 535972c4c..bc7308425 100644 --- a/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx +++ b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.spec.tsx @@ -6,6 +6,7 @@ import { azureAuth } from '../../../data/reducer/azureAuthReducer'; import { ConnectServicePromptDialog } from './connectServicePromptDialog'; import { ConnectServicePromptDialogContainer } from './connectServicePromptDialogContainer'; import { DialogService } from '../service'; +import { ServiceTypes } from 'botframework-config'; jest.mock('../service', () => ({ DialogService: { @@ -30,7 +31,7 @@ describe('The ConnectServicePromptDialog component should', () => { beforeEach(() => { parent = mount( - + ); node = parent.find(ConnectServicePromptDialog); }); @@ -62,7 +63,7 @@ describe('The ConnectServicePromptDialog component should', () => { it('should exit with code 2 when add luis apps manually is selected', () => { const spy = jest.spyOn(DialogService, 'hideDialog'); const instance = node.instance(); - instance.props.addLuisAppManually(); + instance.props.addServiceManually(); expect(spy).toHaveBeenCalledWith(2); }); }); From bc953f37ee4ad15066e78d25d3521b719b8ba436 Mon Sep 17 00:00:00 2001 From: Justin Wilaby Date: Mon, 19 Nov 2018 16:34:59 -0800 Subject: [PATCH 3/4] Fixed typo --- .../connectServicePromptDialog/connectServicePromptDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx index fbc49b148..d3529035a 100644 --- a/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx +++ b/packages/app/client/src/ui/dialogs/connectServicePromptDialog/connectServicePromptDialog.tsx @@ -52,7 +52,7 @@ export class ConnectServicePromptDialog extends Component Date: Mon, 19 Nov 2018 16:36:59 -0800 Subject: [PATCH 4/4] Fixed type from comps --- .../connectedServiceEditor/connectedServiceEditor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx index c00ecc006..6c482b679 100644 --- a/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx +++ b/packages/app/client/src/ui/shell/explorer/servicesExplorer/connectedServiceEditor/connectedServiceEditor.tsx @@ -56,7 +56,7 @@ interface ConnectedServiceEditorState extends Partial { const labelMap = { authoringKey: 'Authoring key', applicationId: 'App Insights Application ID', - instrumentationKey: 'App Insight Instrumentation Key', + instrumentationKey: 'App Insights Instrumentation Key', serviceName: 'Azure Service Name', appId: 'LUIS app ID', id: 'App ID',