diff --git a/src/actions/setupActions.ts b/src/actions/setupActions.ts index 1c266330..fed92c67 100644 --- a/src/actions/setupActions.ts +++ b/src/actions/setupActions.ts @@ -37,8 +37,15 @@ const runCommands = async (commands: string[], language: string = 'JAVASCRIPT') } } +// collect active file watchers (listeners) +const watchers: {[key: string]: vscode.FileSystemWatcher} = {} -const setupActions = async (workspaceRoot: vscode.WorkspaceFolder, {commands, commits, files}: G.StepActions): Promise => { +const disposeWatcher = (listener: string) => { + watchers[listener].dispose() + delete watchers[listener] +} + +const setupActions = async (workspaceRoot: vscode.WorkspaceFolder, {commands, commits, files, listeners}: G.StepActions): Promise => { // run commits if (commits) { for (const commit of commits) { @@ -46,6 +53,33 @@ const setupActions = async (workspaceRoot: vscode.WorkspaceFolder, {commands, co } } + // run file watchers (listeners) + if (listeners) { + for (const listener of listeners) { + if (!watchers[listener]) { + const pattern = new vscode.RelativePattern( + vscode.workspace.getWorkspaceFolder(workspaceRoot.uri)!, + listener + ) + watchers[listener] = vscode.workspace.createFileSystemWatcher( + pattern + ) + watchers[listener].onDidChange(() => { + // trigger save + vscode.commands.executeCommand('coderoad.run_test', null, () => { + // cleanup watcher on success + disposeWatcher(listener) + }) + }) + } + } + } else { + // remove all watchers + for (const listener of Object.keys(watchers)) { + disposeWatcher(listener) + } + } + // run command if (commands) { await runCommands(commands) diff --git a/src/editor/commands.ts b/src/editor/commands.ts index a625fc7b..2ed22d99 100644 --- a/src/editor/commands.ts +++ b/src/editor/commands.ts @@ -54,7 +54,7 @@ export const createCommands = ({extensionPath, workspaceState, workspaceRoot}: C // set from last setup stepAction currentStepId = stepId }, - [COMMANDS.RUN_TEST]: (current: {stepId: string} | undefined) => { + [COMMANDS.RUN_TEST]: (current: {stepId: string} | undefined, onSuccess: () => void) => { console.log('-------- command.run_test ------ ') // use stepId from client, or last set stepId const payload = {stepId: current ? current.stepId : currentStepId} @@ -62,6 +62,7 @@ export const createCommands = ({extensionPath, workspaceState, workspaceRoot}: C onSuccess: () => { // send test pass message back to client webview.send({type: 'TEST_PASS', payload}) + onSuccess() vscode.window.showInformationMessage('PASS') }, onFail: () => { diff --git a/typings/graphql.d.ts b/typings/graphql.d.ts index 49c0a130..42a04d09 100644 --- a/typings/graphql.d.ts +++ b/typings/graphql.d.ts @@ -133,6 +133,7 @@ export type StepActions = { commits: Array files?: Maybe> commands?: Maybe> + listeners?: Maybe> } export type TestRunner = 'JEST' @@ -494,6 +495,7 @@ export type StepActionsResolvers< commits?: Resolver, ParentType, ContextType> files?: Resolver>, ParentType, ContextType> commands?: Resolver>, ParentType, ContextType> + listeners?: Resolver>, ParentType, ContextType> } export type TutorialResolvers< @@ -632,9 +634,3 @@ export interface IntrospectionResultData { }[] } } -const result: IntrospectionResultData = { - __schema: { - types: [], - }, -} -export default result diff --git a/web-app/package-lock.json b/web-app/package-lock.json index 52260b0f..20c835bf 100644 --- a/web-app/package-lock.json +++ b/web-app/package-lock.json @@ -14,9 +14,9 @@ } }, "@alifd/next": { - "version": "1.18.11", - "resolved": "https://registry.npmjs.org/@alifd/next/-/next-1.18.11.tgz", - "integrity": "sha512-2IkcMz6DDAAfOWzdSVEwnnonZucTPB/9j/vqNsxF+0hcOfzf+4SbSVleBDUkwdYpdGWL0tLelAeipepP07Dctw==", + "version": "1.18.14", + "resolved": "https://registry.npmjs.org/@alifd/next/-/next-1.18.14.tgz", + "integrity": "sha512-V4Bna0BVzBUYlPgeajqOFq8RbuqxUwlpFJObdIy1glAOvusXNvJ8bDVvVx6cHyS7Y9rMscyS4l1E24fzwR+GqA==", "requires": { "@alifd/field": "~1.3.3", "@alifd/validate": "~1.1.4", @@ -1116,9 +1116,9 @@ "dev": true }, "@emotion/is-prop-valid": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.3.tgz", - "integrity": "sha512-We7VBiltAJ70KQA0dWkdPMXnYoizlxOXpvtjmu5/MBnExd+u0PGgV27WCYanmLAbCwAU30Le/xA0CQs/F/Otig==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.5.tgz", + "integrity": "sha512-6ZODuZSFofbxSbcxwsFz+6ioPjb0ISJRRPLZ+WIbjcU2IMU0Io+RGQjjaTgOvNQl007KICBm7zXQaYQEC1r6Bg==", "dev": true, "requires": { "@emotion/memoize": "0.7.3" @@ -1131,9 +1131,9 @@ "dev": true }, "@emotion/serialize": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.13.tgz", - "integrity": "sha512-Tw+z6oIFCXeznoH25TozFoOUJ9BIyKBgZ9Gif3ej9aqPeP/Dzct8WIXSsz08xxyt1RPlKokvJ3fzMDq0UjL3RQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.14.tgz", + "integrity": "sha512-6hTsySIuQTbDbv00AnUO6O6Xafdwo5GswRlMZ5hHqiFx+4pZ7uGWXUQFW46Kc2taGhP89uXMXn/lWQkdyTosPA==", "dev": true, "requires": { "@emotion/hash": "0.7.3", @@ -1150,24 +1150,24 @@ "dev": true }, "@emotion/styled": { - "version": "10.0.22", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.22.tgz", - "integrity": "sha512-3+dnBk8NjXnddI8Gi2VJLMmup0bCG8HQkZLaeNky+GSLl8VyxQfuaK5I5aDVvgQ3UzkxrcZrFB3vHYU/iUakBA==", + "version": "10.0.23", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-10.0.23.tgz", + "integrity": "sha512-gNr04eqBQ2iYUx8wFLZDfm3N8/QUOODu/ReDXa693uyQGy2OqA+IhPJk+kA7id8aOfwAsMuvZ0pJImEXXKtaVQ==", "dev": true, "requires": { - "@emotion/styled-base": "^10.0.22", - "babel-plugin-emotion": "^10.0.22" + "@emotion/styled-base": "^10.0.23", + "babel-plugin-emotion": "^10.0.23" } }, "@emotion/styled-base": { - "version": "10.0.22", - "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.22.tgz", - "integrity": "sha512-ikSuAcz86BcmlZM5EysqCH0EUssYm5ardrWNVM3Ri5ODpOlKPrT//jVozJU2uK3q5GRcqZHLqagP/nd9beNUfQ==", + "version": "10.0.24", + "resolved": "https://registry.npmjs.org/@emotion/styled-base/-/styled-base-10.0.24.tgz", + "integrity": "sha512-AnBImerf0h4dGAJVo0p0VE8KoAns71F28ErGFK474zbNAHX6yqSWQUasb+1jvg/VPwZjCp19+tAr6oOB0pwmLQ==", "dev": true, "requires": { "@babel/runtime": "^7.5.5", - "@emotion/is-prop-valid": "0.8.3", - "@emotion/serialize": "^0.11.12", + "@emotion/is-prop-valid": "0.8.5", + "@emotion/serialize": "^0.11.14", "@emotion/utils": "0.11.2" } }, @@ -1511,17 +1511,17 @@ } }, "@storybook/addon-actions": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.2.5.tgz", - "integrity": "sha512-81N+M1GX4XB7Mirhhu3kiZJkjspfk2e1ysoJtwULjWeZfo2CLYLUAil4onr08Os2LH4RLJaj2hpS3hLflBio4g==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-5.2.6.tgz", + "integrity": "sha512-CwTJPqe3NcEU7oqS5KoiCX9FXYmI2Dyp1Sh6r90JmXZ8B49ZXm6BDLX0gS3TooD6/AcdU8xdBcSvN0CkxQ5QGA==", "dev": true, "requires": { - "@storybook/addons": "5.2.5", - "@storybook/api": "5.2.5", - "@storybook/client-api": "5.2.5", - "@storybook/components": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/theming": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/api": "5.2.6", + "@storybook/client-api": "5.2.6", + "@storybook/components": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/theming": "5.2.6", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", @@ -1533,25 +1533,25 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/addon-knobs": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.2.5.tgz", - "integrity": "sha512-jr8HvtGciYaJqWgsl8CVYemcvC0Apw9YaLCV/ez8wmB4im94lmotE4llE+ZgpyIn6U6ikUYjQEeNzUMvEn25Xg==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-knobs/-/addon-knobs-5.2.6.tgz", + "integrity": "sha512-whEZl6PpUPtOWBhmWlZ11EloxN6ad3WrJk5FyYlg3BcXG/HtlMVogBKdch83SYTT9jhHwbfwKnAng9J3UjgPbQ==", "dev": true, "requires": { - "@storybook/addons": "5.2.5", - "@storybook/api": "5.2.5", - "@storybook/client-api": "5.2.5", - "@storybook/components": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/theming": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/api": "5.2.6", + "@storybook/client-api": "5.2.6", + "@storybook/components": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/theming": "5.2.6", "@types/react-color": "^3.0.1", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", @@ -1567,22 +1567,22 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/addon-links": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-5.2.5.tgz", - "integrity": "sha512-QuXOcZlDSRWEIwmHJZ9uAsjtNysVUsofX5yABX+x5Nkm4BCqT1NyAuu8Xq9IlyLF1ngiOF61dy530p4lcntmHA==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-5.2.6.tgz", + "integrity": "sha512-YourSVtTtsCJnjQRKsb8kRD1XWd+XYv5ZR4Teuq7xDGcsFthVwavnql3pDHL60KWXHPXc46t/8r5bw7Yi8Kzzw==", "dev": true, "requires": { - "@storybook/addons": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/router": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/router": "5.2.6", "common-tags": "^1.8.0", "core-js": "^3.0.1", "global": "^4.3.2", @@ -1591,47 +1591,47 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/addons": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.2.5.tgz", - "integrity": "sha512-CvMj7Bs3go9tv5rZuAvFwuwe8p/16LDCHS7+5nVFosvcL8nuN339V3rzakw8nLy/S6XKeZ1ACu4t3vYkreRE3w==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-5.2.6.tgz", + "integrity": "sha512-5MF64lsAhIEMxTbVpYROz5Wez595iwSw45yXyP8gWt12d+EmFO5tdy7cYJCxcMuVhDfaCI78tFqS9orr1atVyA==", "dev": true, "requires": { - "@storybook/api": "5.2.5", - "@storybook/channels": "5.2.5", - "@storybook/client-logger": "5.2.5", - "@storybook/core-events": "5.2.5", + "@storybook/api": "5.2.6", + "@storybook/channels": "5.2.6", + "@storybook/client-logger": "5.2.6", + "@storybook/core-events": "5.2.6", "core-js": "^3.0.1", "global": "^4.3.2", "util-deprecate": "^1.0.2" }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/api": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.2.5.tgz", - "integrity": "sha512-JvLafqFVgA3dIWpLMoGNk4sRuogE5imhD6/g0d8DOwnCID9xowj5xIptSrCTKvGGGxuN3wWRGn6I2lEbY6969g==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/api/-/api-5.2.6.tgz", + "integrity": "sha512-X/di44/SAL68mD6RHTX2qdWwhjRW6BgcfPtu0dMd38ErB3AfsfP4BITXs6kFOeSM8kWiaQoyuw0pOBzA8vlYug==", "dev": true, "requires": { - "@storybook/channels": "5.2.5", - "@storybook/client-logger": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/router": "5.2.5", - "@storybook/theming": "5.2.5", + "@storybook/channels": "5.2.6", + "@storybook/client-logger": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/router": "5.2.6", + "@storybook/theming": "5.2.6", "core-js": "^3.0.1", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", @@ -1647,9 +1647,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "semver": { @@ -1661,55 +1661,55 @@ } }, "@storybook/channel-postmessage": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.2.5.tgz", - "integrity": "sha512-GoiC6dUM3YfNKpvj3syxQIQJLHBnH61CfLJzz4xygmn+3keHtjtz6yPHaU4+00MSSP2uDzqePkjgXx4DcLedHA==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-5.2.6.tgz", + "integrity": "sha512-y+63wWiEc/Q4s4MZ3KJ//5A8j5VLufxuLvPxwv9FuS4z8lmN0fqeGJn857qIlFGbZhzsQaoRdmfsCQpBBgUneg==", "dev": true, "requires": { - "@storybook/channels": "5.2.5", - "@storybook/client-logger": "5.2.5", + "@storybook/channels": "5.2.6", + "@storybook/client-logger": "5.2.6", "core-js": "^3.0.1", "global": "^4.3.2", "telejson": "^3.0.2" }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/channels": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.2.5.tgz", - "integrity": "sha512-I+zB3ym5ozBcNBqyzZbvB6gRIG/ZKKkqy5k6LwKd5NMx7NU7zU74+LQUBBOcSIrigj8kCArZz7rlgb0tlSKXxQ==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-5.2.6.tgz", + "integrity": "sha512-/UsktYsXuvb1efjVPCEivhh5ywRhm7hl73pQnpJLJHRqyLMM2I5nGPFELTTNuU9yWy7sP9QL5gRqBBPe1sqjZQ==", "dev": true, "requires": { "core-js": "^3.0.1" }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/client-api": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.2.5.tgz", - "integrity": "sha512-n7CAZ3+DZ7EUdmXbq8mXRb+stOavC8GMw3CzjGSo8O6t4rFcMpZQAzjS0YRX1RG/CGFSv9d3R3TNvEBcBGTwRg==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-5.2.6.tgz", + "integrity": "sha512-upynf4ER2fkThNnE+mBlfRFFJxTiOh60fho1ODFcBun9BbvRD2wOHLvw7+WigIhb99HM20vk8f2dhv3I5Udzlg==", "dev": true, "requires": { - "@storybook/addons": "5.2.5", - "@storybook/channel-postmessage": "5.2.5", - "@storybook/channels": "5.2.5", - "@storybook/client-logger": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/router": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/channel-postmessage": "5.2.6", + "@storybook/channels": "5.2.6", + "@storybook/client-logger": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/router": "5.2.6", "common-tags": "^1.8.0", "core-js": "^3.0.1", "eventemitter3": "^4.0.0", @@ -1722,38 +1722,38 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/client-logger": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.2.5.tgz", - "integrity": "sha512-6DyYUrMgAvF+th0foH7UNz+2JJpRdvNbpvYKtvi/+hlvRIaI6AqANgLkPUgMibaif5TLzjCr0bLdAYcjeJz03w==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-5.2.6.tgz", + "integrity": "sha512-hJvPD267cCwLIRMOISjDH8h9wbwOcXIJip29UlJbU9iMtZtgE+YelmlpmZJvqcDfUiXWWrOh7tP76mj8EAfwIQ==", "dev": true, "requires": { "core-js": "^3.0.1" }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/components": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.2.5.tgz", - "integrity": "sha512-6NVaBJm5wY53e9k+2ZiL2ABsHghE1ssQciLTG3jJPahnM6rfkM8ue66rhxhP88jE9isT48JgOZOJepEyxDz/fg==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-5.2.6.tgz", + "integrity": "sha512-C7OS90bZ1ZvxlWUZ3B2MPFFggqAtUo7X8DqqS3IwsuDUiK9dD/KS0MwPgOuFDnOTW1R5XqmQd/ylt53w3s/U5g==", "dev": true, "requires": { - "@storybook/client-logger": "5.2.5", - "@storybook/theming": "5.2.5", + "@storybook/client-logger": "5.2.6", + "@storybook/theming": "5.2.6", "@types/react-syntax-highlighter": "10.1.0", "@types/react-textarea-autosize": "^4.3.3", "core-js": "^3.0.1", @@ -1774,17 +1774,17 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/core": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.2.5.tgz", - "integrity": "sha512-R6A6VzSh++pB1a+9DsywW5Mlp0/eauQz1A8m2DrllWcTHTjbn0ZovlG5HBrKjpknFXpCWxkUKE4eTAE2tWsryA==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-5.2.6.tgz", + "integrity": "sha512-q7Ful7TCm9nmjgLsJFqIwVv395NlaOXgGajyaQCQlCKB2V+jgs7GDmdCNNdWAOue4eAsFU6wQSP9lWtq0yzK4w==", "dev": true, "requires": { "@babel/plugin-proposal-class-properties": "^7.3.3", @@ -1792,15 +1792,15 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-env": "^7.4.5", - "@storybook/addons": "5.2.5", - "@storybook/channel-postmessage": "5.2.5", - "@storybook/client-api": "5.2.5", - "@storybook/client-logger": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/node-logger": "5.2.5", - "@storybook/router": "5.2.5", - "@storybook/theming": "5.2.5", - "@storybook/ui": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/channel-postmessage": "5.2.6", + "@storybook/client-api": "5.2.6", + "@storybook/client-logger": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/node-logger": "5.2.6", + "@storybook/router": "5.2.6", + "@storybook/theming": "5.2.6", + "@storybook/ui": "5.2.6", "airbnb-js-shims": "^1 || ^2", "ansi-to-html": "^0.6.11", "autoprefixer": "^9.4.9", @@ -1858,9 +1858,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "node-fetch": { @@ -1884,26 +1884,26 @@ } }, "@storybook/core-events": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.2.5.tgz", - "integrity": "sha512-O5GM8XEBbYNbM6Z7a4H1bbnbO2cxQrXMhEwansC7a7YinQdkTPiuGxke3NiyK+7pLDh778kpQyjoCjXq6UfAoQ==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-5.2.6.tgz", + "integrity": "sha512-W8kLJ7tc0aAxs11CPUxUOCReocKL4MYGyjTg8qwk0USLzPUb/FUQWmhcm2ilFz6Nz8dXLcKrXdRVYTmiMsgAeg==", "dev": true, "requires": { "core-js": "^3.0.1" }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/node-logger": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.2.5.tgz", - "integrity": "sha512-UNyXGOhOr4Bn9wKwBTZABTBXQzrgvGxPLSmvAFZuMx9ZhqoT/EXAuLUl0/wiJtkyuYpoOOskNwIdKxLBdTKS2w==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-5.2.6.tgz", + "integrity": "sha512-Z3mn9CUSiG7kR2OBoz4lNeoeBS094h5d9wufZSp5S+M47L6KEXmTgNcuePKj+t8Z8KT/Ph8B63bjChseKp3DNw==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -1914,9 +1914,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "regenerator-runtime": { @@ -1928,17 +1928,17 @@ } }, "@storybook/react": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.2.5.tgz", - "integrity": "sha512-yPOL0jBEfYo3YkRJkXnIzAQ3L9lTju27mg+0bW+y3lpJAM23ffAxrRyOGV7bzj99EA7dak2lw8Hj4yVHTplBdg==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-5.2.6.tgz", + "integrity": "sha512-yzhxxuoUx4jwn+PymU5wemzLb9ryXD9Y2Dv5kipCDkUS4cqDJwKcVO8tyhMigFUGTHREmJTmAESCKKPDR45SiQ==", "dev": true, "requires": { "@babel/plugin-transform-react-constant-elements": "^7.2.0", "@babel/preset-flow": "^7.0.0", "@babel/preset-react": "^7.0.0", - "@storybook/addons": "5.2.5", - "@storybook/core": "5.2.5", - "@storybook/node-logger": "5.2.5", + "@storybook/addons": "5.2.6", + "@storybook/core": "5.2.6", + "@storybook/node-logger": "5.2.6", "@svgr/webpack": "^4.0.3", "@types/webpack-env": "^1.13.7", "babel-plugin-add-react-displayname": "^0.0.5", @@ -1958,9 +1958,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "regenerator-runtime": { @@ -1978,9 +1978,9 @@ } }, "@storybook/router": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.2.5.tgz", - "integrity": "sha512-e6ElDAWSoEW1KSnsTbVwbpzaZ8CNWYw0Ok3b5AHfY2fuSH5L4l6s6k/bP7QSYqvWUeTvkFQYux7A2rOFCriAgA==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-5.2.6.tgz", + "integrity": "sha512-/FZd3fYg5s2QzOqSIP8UMOSnCIFFIlli/jKlOxvm3WpcpxgwQOY4lfHsLO+r9ThCLs2UvVg2R/HqGrOHqDFU7A==", "dev": true, "requires": { "@reach/router": "^1.2.1", @@ -1993,22 +1993,22 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/theming": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.2.5.tgz", - "integrity": "sha512-PGZNYrRgAhXFJKnktFpyyKlaDXEhtTi5XPq5ASVJrsPW6l963Mk2EMKSm4TCTxIJhs0Kx4cv2MnNZFDqHf47eg==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-5.2.6.tgz", + "integrity": "sha512-Xa9R/H8DDgmvxsCHloJUJ2d9ZQl80AeqHrL+c/AKNpx05s9lV74DcinusCf0kz72YGUO/Xt1bAjuOvLnAaS8Gw==", "dev": true, "requires": { "@emotion/core": "^10.0.14", "@emotion/styled": "^10.0.14", - "@storybook/client-logger": "5.2.5", + "@storybook/client-logger": "5.2.6", "common-tags": "^1.8.0", "core-js": "^3.0.1", "deep-object-diff": "^1.1.0", @@ -2021,27 +2021,27 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } }, "@storybook/ui": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.2.5.tgz", - "integrity": "sha512-C+5KmeTtdG6xkGXPmFDHPxTcSvVohuFD1399fnzjYhfLlRJ04ix3g16rcyDTxRtrFgFidOyGHdzCypgkdaN8dQ==", - "dev": true, - "requires": { - "@storybook/addons": "5.2.5", - "@storybook/api": "5.2.5", - "@storybook/channels": "5.2.5", - "@storybook/client-logger": "5.2.5", - "@storybook/components": "5.2.5", - "@storybook/core-events": "5.2.5", - "@storybook/router": "5.2.5", - "@storybook/theming": "5.2.5", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-5.2.6.tgz", + "integrity": "sha512-jT3PtpEsTqnESO0U8BotC+5P971Xqy0s2leSZcgU9PNe4Eb7NaxypSULOulPgPAx1JOmMipUBdK54PP/nyudkA==", + "dev": true, + "requires": { + "@storybook/addons": "5.2.6", + "@storybook/api": "5.2.6", + "@storybook/channels": "5.2.6", + "@storybook/client-logger": "5.2.6", + "@storybook/components": "5.2.6", + "@storybook/core-events": "5.2.6", + "@storybook/router": "5.2.6", + "@storybook/theming": "5.2.6", "copy-to-clipboard": "^3.0.8", "core-js": "^3.0.1", "core-js-pure": "^3.0.1", @@ -2070,9 +2070,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "regenerator-runtime": { @@ -2312,9 +2312,9 @@ } }, "@types/jest": { - "version": "24.0.21", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.21.tgz", - "integrity": "sha512-uyqFvx78Tuy0h5iLCPWRCvi5HhWwEqhIj30doitp191oYLqlCxUyAJHdWVm5+Nr271/vPnkyt6rWeEIjGowBTg==", + "version": "24.0.22", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.22.tgz", + "integrity": "sha512-t2OvhNZnrNjlzi2i0/cxbLVM59WN15I2r1Qtb7wDv28PnV9IzrPtagFRey/S9ezdLD0zyh1XGMQIEQND2YEfrw==", "dev": true, "requires": { "@types/jest-diff": "*" @@ -2348,9 +2348,9 @@ } }, "@types/node": { - "version": "12.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.5.tgz", - "integrity": "sha512-KEjODidV4XYUlJBF3XdjSH5FWoMCtO0utnhtdLf1AgeuZLOrRbvmU/gaRCVg7ZaQDjVf3l84egiY0mRNe5xE4A==" + "version": "12.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", + "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==" }, "@types/prismjs": { "version": "1.16.0", @@ -2409,9 +2409,9 @@ } }, "@types/react-dom": { - "version": "16.9.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.3.tgz", - "integrity": "sha512-FUuZKXPr9qlzUT9lhuzrZgLjH63TvNn28Ch3MvKG4B+F52zQtO8DtE0Opbncy3xaucNZM2WIPfuNTgkbKx5Brg==", + "version": "16.9.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.4.tgz", + "integrity": "sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw==", "dev": true, "requires": { "@types/react": "*" @@ -2427,9 +2427,9 @@ } }, "@types/react-textarea-autosize": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.4.tgz", - "integrity": "sha512-LLqG27BJGt8ja9x4umQXbnK9pRd0dI23X/GXBcuf476feOZ+e5QiKJYmWOHwAJC3YLl3YixDSigzfF4gzVQZ5w==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@types/react-textarea-autosize/-/react-textarea-autosize-4.3.5.tgz", + "integrity": "sha512-PiDL83kPMTolyZAWW3lyzO6ktooTb9tFTntVy7CA83/qFLWKLJ5bLeRboy6J6j3b1e8h2Eec6gBTEOOJRjV14A==", "dev": true, "requires": { "@types/react": "*" @@ -2989,9 +2989,9 @@ } }, "ansi-to-html": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.12.tgz", - "integrity": "sha512-qBkIqLW979675mP76yB7yVkzeAWtATegdnDQ0RA3CZzknx0yUlNxMSML4xFdBfTs2GWYFQ1FELfbGbVSPzJ+LA==", + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.13.tgz", + "integrity": "sha512-Ys2/umuaTlQvP9DLkaa7UzRKF2FLrfod/hNHXS9QhXCrw7seObG6ksOGmNz3UoK+adwM8L9vQfG7mvaxfJ3Jvw==", "dev": true, "requires": { "entities": "^1.1.2" @@ -3642,15 +3642,15 @@ } }, "babel-plugin-emotion": { - "version": "10.0.22", - "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.22.tgz", - "integrity": "sha512-e3Yo9+GD6ovrcZlt2Unjgfyy0gfdz0+8httltToWL+biFMhLPPT1PJlc0GHy9i+vtPSrTBNY2hawfPJnuG2L3g==", + "version": "10.0.23", + "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.23.tgz", + "integrity": "sha512-1JiCyXU0t5S2xCbItejCduLGGcKmF3POT0Ujbexog2MI4IlRcIn/kWjkYwCUZlxpON0O5FC635yPl/3slr7cKQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@emotion/hash": "0.7.3", "@emotion/memoize": "0.7.3", - "@emotion/serialize": "^0.11.12", + "@emotion/serialize": "^0.11.14", "babel-plugin-macros": "^2.0.0", "babel-plugin-syntax-jsx": "^6.18.0", "convert-source-map": "^1.5.0", @@ -5165,9 +5165,9 @@ } }, "core-js-pure": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.3.4.tgz", - "integrity": "sha512-hqxt6XpR4zIMNUY920oNyAtwaq4yg8IScmXumnfyRWF9+ur7wtjr/4eCdfTJzY64jmi8WRCwIqNBKzYeOKdvnw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.4.0.tgz", + "integrity": "sha512-d49s6GiW3ePYM8vCglfLLo6bueYx+Sff6MYtjohTMSB0AoxVfABXMUSmYHtKAEvW77T9JTKMyHrhE20nZ8gYDA==", "dev": true }, "core-util-is": { @@ -7439,9 +7439,9 @@ } }, "find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.1.0.tgz", + "integrity": "sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -8688,20 +8688,20 @@ } }, "hast-util-parse-selector": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.2.tgz", - "integrity": "sha512-jIMtnzrLTjzqgVEQqPEmwEZV+ea4zHRFTP8Z2Utw0I5HuBOXHzUPPQWr6ouJdJqDKLbFU/OEiYwZ79LalZkmmw==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.3.tgz", + "integrity": "sha512-nxbeqjQNxsvo/uYYAw9kij6td05YVUlf1qti09rVfbWSLT5H6wo3c+USIwX6nzXWk5kFZzXnEqO82856r0aM2Q==", "dev": true }, "hastscript": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.0.tgz", - "integrity": "sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.1.tgz", + "integrity": "sha512-xHo1Hkcqd0LlWNuDL3/BxwhgAGp3d7uEvCMgCTrBY+zsOooPPH+8KAvW8PCgl+GB8H3H44nfSaF0A4BQ+4xlYg==", "dev": true, "requires": { "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.2.0", - "property-information": "^5.0.1", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", "space-separated-tokens": "^1.0.0" } }, @@ -10802,9 +10802,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true }, "dotenv": { @@ -12577,12 +12577,29 @@ } }, "polished": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.1.tgz", - "integrity": "sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.2.tgz", + "integrity": "sha512-9Rch6iMZckABr6EFCLPZsxodeBpXMo9H4fRlfR/9VjMEyy5xpo1/WgXlJGgSjPyVhEZNycbW7UmYMNyWS5MI0g==", "dev": true, "requires": { - "@babel/runtime": "^7.4.5" + "@babel/runtime": "^7.6.3" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + } } }, "popper.js": { @@ -13927,9 +13944,9 @@ "dev": true }, "qs": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", - "integrity": "sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", "dev": true }, "query-string": { @@ -14368,9 +14385,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-popper": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.4.tgz", - "integrity": "sha512-9AcQB29V+WrBKk6X7p0eojd1f25/oJajVdMZkywIoAV6Ag7hzE1Mhyeup2Q1QnvFRtGQFQvtqfhlEoDAPfKAVA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.6.tgz", + "integrity": "sha512-kLTfa9z8n+0jJvRVal9+vIuirg41rObg4Bbrvv/ZfsGPQDN9reyVVSxqnHF1ZNgXgV7x11PeUfd5ItF8DZnqhg==", "dev": true, "requires": { "@babel/runtime": "^7.1.2", @@ -14413,9 +14430,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz", - "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.2" @@ -14976,9 +14993,9 @@ } }, "react-textarea-autosize": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.0.tgz", - "integrity": "sha512-c2FlR/fP0qbxmlrW96SdrbgP/v0XZMTupqB90zybvmDVDutytUgPl7beU35klwcTeMepUIQEpQUn3P3bdshGPg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-7.1.2.tgz", + "integrity": "sha512-uH3ORCsCa3C6LHxExExhF4jHoXYCQwE5oECmrRsunlspaDAbS4mGKNlWZqjLfInWtFQcf0o1n1jC/NGXFdUBCg==", "dev": true, "requires": { "@babel/runtime": "^7.1.2", @@ -16158,9 +16175,9 @@ }, "dependencies": { "core-js": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.4.tgz", - "integrity": "sha512-BtibooaAmSOptGLRccsuX/dqgPtXwNgqcvYA6kOTTMzonRxZ+pJS4e+6mvVutESfXMeTnK8m3M+aBu3bkJbR+w==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", "dev": true } } @@ -17468,9 +17485,9 @@ "dev": true }, "typescript": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", - "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==" }, "typescript-eslint-parser": { "version": "22.0.0", diff --git a/web-app/package.json b/web-app/package.json index 3606a829..6dd742e6 100644 --- a/web-app/package.json +++ b/web-app/package.json @@ -26,7 +26,7 @@ "extends": "react-app" }, "dependencies": { - "@alifd/next": "^1.18.11", + "@alifd/next": "^1.18.14", "@alifd/theme-4": "^0.2.0", "@apollo/react-hooks": "^3.1.3", "apollo-boost": "^0.4.4", @@ -40,25 +40,25 @@ "react": "^16.11.0", "react-dom": "^16.11.0", "reselect": "^4.0.0", - "typescript": "^3.6.4", + "typescript": "^3.7.2", "xstate": "^4.6.7" }, "devDependencies": { "@babel/core": "^7.5.4", - "@storybook/addon-actions": "^5.2.5", - "@storybook/addon-knobs": "^5.2.5", - "@storybook/addon-links": "^5.2.5", - "@storybook/addons": "^5.2.5", - "@storybook/react": "^5.2.5", + "@storybook/addon-actions": "^5.2.6", + "@storybook/addon-knobs": "^5.2.6", + "@storybook/addon-links": "^5.2.6", + "@storybook/addons": "^5.2.6", + "@storybook/react": "^5.2.6", "@types/graphql": "^14.5.0", "@types/highlight.js": "^9.12.3", - "@types/jest": "^24.0.21", + "@types/jest": "^24.0.22", "@types/markdown-it": "0.0.9", - "@types/node": "^12.12.5", + "@types/node": "^12.12.7", "@types/prismjs": "^1.16.0", "@types/ramda": "^0.26.33", "@types/react": "^16.9.11", - "@types/react-dom": "^16.9.3", + "@types/react-dom": "^16.9.4", "@types/storybook__react": "^4.0.2", "babel-loader": "8.0.5", "babel-plugin-import": "^1.12.1", diff --git a/web-app/src/components/Button/index.tsx b/web-app/src/components/Button/index.tsx new file mode 100644 index 00000000..c793f895 --- /dev/null +++ b/web-app/src/components/Button/index.tsx @@ -0,0 +1,16 @@ +import * as React from 'react' +import { Button as AlifdButton } from '@alifd/next' + +interface Props { + children: string + type?: 'primary' | 'secondary' | 'normal' + onClick(): void +} + +const Button = (props: Props) => ( + + {props.children} + +) + +export default Button diff --git a/web-app/src/components/Card/index.tsx b/web-app/src/components/Card/index.tsx new file mode 100644 index 00000000..78b6f008 --- /dev/null +++ b/web-app/src/components/Card/index.tsx @@ -0,0 +1,16 @@ +import * as React from 'react' +import { Card as AlifdCard } from '@alifd/next' + +interface Props { + children: React.ReactNode + onClick?: () => void + style?: React.CSSProperties +} + +const Card = (props: Props) => ( + + {props.children} + +) + +export default Card diff --git a/web-app/src/containers/Continue/index.tsx b/web-app/src/containers/Continue/index.tsx index 2504e0d1..634b08fa 100644 --- a/web-app/src/containers/Continue/index.tsx +++ b/web-app/src/containers/Continue/index.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { Button, Card } from '@alifd/next' +import Button from '../../components/Button' +import Card from '../../components/Card' import * as CR from 'typings' import * as G from 'typings/graphql' @@ -12,14 +13,14 @@ interface Props { export const ContinuePage = (props: Props) => (

Continue

- +

{props.tutorial.version.summary.title}

{props.tutorial.version.summary.description}

- +

Start a New Tutorial

diff --git a/web-app/src/containers/New/TutorialItem.tsx b/web-app/src/containers/New/TutorialItem.tsx index 6138e706..6623963e 100644 --- a/web-app/src/containers/New/TutorialItem.tsx +++ b/web-app/src/containers/New/TutorialItem.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { Button, Card } from '@alifd/next' +import Button from '../../components/Button' +import Card from '../../components/Card' interface Props { title: string @@ -9,7 +10,7 @@ interface Props { const TutorialItem = (props: Props) => { return ( - +

{props.title}

{props.description}

diff --git a/web-app/src/containers/New/TutorialList/TutorialItem.tsx b/web-app/src/containers/New/TutorialList/TutorialItem.tsx index 6fe9bba4..195cb1cc 100644 --- a/web-app/src/containers/New/TutorialList/TutorialItem.tsx +++ b/web-app/src/containers/New/TutorialList/TutorialItem.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Card } from '@alifd/next' +import Card from '../../../components/Card' const styles = { card: { diff --git a/web-app/src/containers/New/TutorialList/index.tsx b/web-app/src/containers/New/TutorialList/index.tsx index f472159c..2322fad6 100644 --- a/web-app/src/containers/New/TutorialList/index.tsx +++ b/web-app/src/containers/New/TutorialList/index.tsx @@ -1,8 +1,8 @@ import * as React from 'react' - -import channel from '../../../services/channel' import * as G from 'typings/graphql' + import TutorialItem from './TutorialItem' +import channel from '../../../services/channel' interface Props { tutorialList: G.Tutorial[] diff --git a/web-app/src/containers/Overview/OverviewPage.tsx b/web-app/src/containers/Overview/OverviewPage.tsx index 721fbb74..f0b6447f 100644 --- a/web-app/src/containers/Overview/OverviewPage.tsx +++ b/web-app/src/containers/Overview/OverviewPage.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Button } from '@alifd/next' +import Button from '../../components/Button' import * as G from 'typings/graphql' import Markdown from '../../components/Markdown' diff --git a/web-app/src/containers/Tutorial/CompletedPage.tsx b/web-app/src/containers/Tutorial/CompletedPage.tsx index 742dc0ea..9da94ce6 100644 --- a/web-app/src/containers/Tutorial/CompletedPage.tsx +++ b/web-app/src/containers/Tutorial/CompletedPage.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Button } from '@alifd/next' +import Button from '../../components/Button' import * as CR from 'typings' const styles = { @@ -9,22 +9,22 @@ const styles = { } interface Props { - context: CR.MachineContext - send(action: CR.Action|string): void + context: CR.MachineContext + send(action: CR.Action | string): void } const CompletedPage = (props: Props) => { - const selectNewTutorial = () => { - props.send('SELECT_TUTORIAL') - } + const selectNewTutorial = () => { + props.send('SELECT_TUTORIAL') + } return ( -
-

Tutorial Complete

-
- -
-
- ) +
+

Tutorial Complete

+
+ +
+
+ ) } export default CompletedPage diff --git a/web-app/src/containers/Tutorial/LevelPage/Level/Step/index.tsx b/web-app/src/containers/Tutorial/LevelPage/Level/Step/index.tsx index cc85f1f5..c124ba41 100644 --- a/web-app/src/containers/Tutorial/LevelPage/Level/Step/index.tsx +++ b/web-app/src/containers/Tutorial/LevelPage/Level/Step/index.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import * as T from 'typings' -import { Button } from '@alifd/next' +import Button from '../../../../../components/Button' import Checkbox from '../../../../../components/Checkbox' import Markdown from '../../../../../components/Markdown' diff --git a/web-app/src/containers/Tutorial/LevelPage/Level/index.tsx b/web-app/src/containers/Tutorial/LevelPage/Level/index.tsx index 2fda3cd4..a18ede0d 100644 --- a/web-app/src/containers/Tutorial/LevelPage/Level/index.tsx +++ b/web-app/src/containers/Tutorial/LevelPage/Level/index.tsx @@ -1,9 +1,9 @@ -import { Button } from '@alifd/next' import * as React from 'react' import * as G from 'typings/graphql' import * as T from 'typings' import Step from './Step' +import Button from '../../../../components/Button' import Markdown from '../../../../components/Markdown' const styles = { diff --git a/web-app/src/services/apollo/queries/tutorial.ts b/web-app/src/services/apollo/queries/tutorial.ts index fcc3e344..a364b4cb 100644 --- a/web-app/src/services/apollo/queries/tutorial.ts +++ b/web-app/src/services/apollo/queries/tutorial.ts @@ -42,6 +42,7 @@ export default gql` commits commands files + listeners } solution { commits diff --git a/web-app/src/services/state/actions/api.ts b/web-app/src/services/state/actions/api.ts index 5e522645..43878832 100644 --- a/web-app/src/services/state/actions/api.ts +++ b/web-app/src/services/state/actions/api.ts @@ -3,7 +3,7 @@ import * as G from 'typings/graphql' import client from '../../apollo' import authenticateMutation from '../../apollo/mutations/authenticate' import {setAuthToken} from '../../apollo/auth' -import channel from '../../../services/channel' +import channel from '../../channel' interface AuthenticateData { editorLogin: {