diff --git a/integration-tests/gatsby-cli/test-helpers/invoke-cli.js b/integration-tests/gatsby-cli/test-helpers/invoke-cli.js index cbf1e1f8cb86e..56760f64dc313 100644 --- a/integration-tests/gatsby-cli/test-helpers/invoke-cli.js +++ b/integration-tests/gatsby-cli/test-helpers/invoke-cli.js @@ -1,5 +1,6 @@ import execa, { sync } from "execa" import { join } from "path" +import strip from "strip-ansi" import { createLogsMatcher } from "./matcher" const gatsbyBinLocation = join( @@ -23,12 +24,12 @@ export const GatsbyCLI = { return [ results.exitCode, - createLogsMatcher(results.stdout.toString().split("\n")), + createLogsMatcher(strip(results.stdout.toString())), ] } catch (err) { return [ err.exitCode, - createLogsMatcher(err.stdout?.toString().split("\n") || ``), + createLogsMatcher(strip(err.stdout?.toString() || ``)), ] } }, @@ -40,13 +41,13 @@ export const GatsbyCLI = { env: { NODE_ENV, CI: 1, GATSBY_LOGGER: `ink` }, }) - const logs = [] + let logs = `` res.stdout.on("data", data => { if (!res.killed) { - logs.push(data.toString()) + logs += data.toString() } - if (onExit && onExit(data.toString())) { + if (onExit && onExit(strip(logs))) { res.cancel() } }) @@ -59,7 +60,7 @@ export const GatsbyCLI = { throw err }), - () => createLogsMatcher(logs), + () => createLogsMatcher(strip(logs)), ] }, } diff --git a/integration-tests/gatsby-cli/test-helpers/matcher.js b/integration-tests/gatsby-cli/test-helpers/matcher.js index 1b15856bf5bd5..af1bfdcc6896c 100644 --- a/integration-tests/gatsby-cli/test-helpers/matcher.js +++ b/integration-tests/gatsby-cli/test-helpers/matcher.js @@ -1,29 +1,15 @@ -import strip from "strip-ansi" - export const createLogsMatcher = output => { - const logs = output.map(strip) - return { - // Useful for debuggging + // Useful for debugging logOutput() { - console.log(logs.join("\n")) + console.log(output) }, should: { contain: match => { - const foundMatch = logs.reduce( - (matches, log) => matches || new RegExp(match).test(log), - false - ) - - if (!foundMatch) { - // This will never pass, but lets user see the issues - expect(logs).toBe(match) - return - } - - // track an assertion that passes! - expect(match).toBe(match) + // ink will auto wrap things, so we need to get rid of any whitespace specific checks + // and let it just make sure there is whitespace + expect(output).toMatch(new RegExp(match.replace(/\s+/g, `\\s+`))) }, }, } diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 4a3cdab58a3a7..2dfd61c0c6129 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -53,7 +53,7 @@ "@babel/cli": "^7.12.1", "@babel/core": "^7.12.3", "@rollup/plugin-babel": "^5.1.0", - "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-replace": "^2.3.3", @@ -61,12 +61,12 @@ "@types/yargs": "^15.0.8", "babel-preset-gatsby-package": "^0.10.0-next.0", "cross-env": "^7.0.3", - "ink": "^2.7.1", - "ink-spinner": "^3.1.0", + "ink": "^3.0.8", + "ink-spinner": "^4.0.1", "npm-run-all": "4.1.5", "react": "^16.8.0", "rimraf": "^3.0.2", - "rollup": "^2.23.0", + "rollup": "^2.34.2", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-internal": "^1.0.0", "typescript": "^3.9.7" diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/cli.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/cli.tsx index 2d73a635b317b..6202b9e73c1ba 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/cli.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/cli.tsx @@ -64,30 +64,6 @@ class CLI extends React.Component { ) } - /* - Only operation on messages array is to push new message into it. Once - message is there it can't change. Because of that we can do single - transform from message object to react element and store it. - This will avoid calling React.createElement completely for every message - that can't change. - */ - if (messages.length > this.memoizedReactElementsForMessages.length) { - for ( - let index = this.memoizedReactElementsForMessages.length; - index < messages.length; - index++ - ) { - const msg = messages[index] - this.memoizedReactElementsForMessages.push( - msg.level === `ERROR` ? ( - - ) : ( - - ) - ) - } - } - const spinners: Array = [] const progressBars: Array = [] if (showProgress) { @@ -108,7 +84,21 @@ class CLI extends React.Component { return ( - {this.memoizedReactElementsForMessages} + + {(message): React.ReactElement => + message.level === `ERROR` ? ( + + ) : ( + + ) + } + {spinners.map(activity => ( diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/develop.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/develop.tsx index 177a524ef7c46..47cb3c358550d 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/develop.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/develop.tsx @@ -1,5 +1,5 @@ import React, { useContext, useState, useEffect } from "react" -import { Box, Color, StdoutContext } from "ink" +import { Box, Text, useStdout } from "ink" import StoreStateContext from "../context" import { ActivityStatuses } from "../../../constants" import { createLabel } from "./utils" @@ -24,7 +24,19 @@ const getLabel = ( // Track the width and height of the terminal. Responsive app design baby! const useTerminalResize = (): Array => { - const { stdout } = useContext(StdoutContext) + const { stdout } = useStdout() + + // stdout type is nullable, so we need to handle case where it is undefined for type checking. + // In practice this shouldn't happen ever, because AFAIK type is only nullable + // because Ink's StdoutContext is initiated with `undefined`: + // https://github.com/vadimdemedes/ink/blob/83894963727cf40ccac2256ec346e5ff3381c918/src/components/StdoutContext.ts#L20-L23 + // but ContextProvider requires stdout to be set: + // https://github.com/vadimdemedes/ink/blob/83894963727cf40ccac2256ec346e5ff3381c918/src/components/App.tsx#L18 + // https://github.com/vadimdemedes/ink/blob/83894963727cf40ccac2256ec346e5ff3381c918/src/components/App.tsx#L79-L84 + if (!stdout) { + return [0] + } + const [sizes, setSizes] = useState([stdout.columns, stdout.rows]) useEffect(() => { const resizeListener = (): void => { @@ -52,13 +64,15 @@ const Develop: React.FC = ({ pagesCount, appName, status }) => { return ( - {`—`.repeat(width)} + + {`—`.repeat(width)} + - {appName} + {appName} - {pagesCount} pages + {pagesCount} pages ) diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/error.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/error.tsx index dcda6e0e2efa0..d533e541cba33 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/error.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/error.tsx @@ -1,6 +1,6 @@ import React, { FunctionComponent } from "react" import path from "path" -import { Color, Box } from "ink" +import { Box, Text } from "ink" import { IStructuredError } from "../../../../structured-errors/types" interface IFileProps { @@ -21,10 +21,10 @@ const File: FunctionComponent = ({ filePath, location }) => { } return ( - + {path.relative(process.cwd(), filePath)} {locString} - + ) } @@ -38,7 +38,7 @@ const DocsLink: FunctionComponent = ({ docsUrl }) => { if (docsUrl === `https://gatsby.dev/issue-how-to`) return null return ( - See our docs page for more info on this error: {docsUrl} + See our docs page for more info on this error: {docsUrl} ) } @@ -56,17 +56,19 @@ export const Error: FunctionComponent = React.memo( - + {` ${details.level} `} {details.code ? `#${details.code} ` : ``} - - {details.type ? ` ` + details.type : ``} + + {details.type ? ` ` + details.type : ``} - {details.text} + + {details.text} + {details.filePath && ( - File:{` `} + File:{` `} )} diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/messages.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/messages.tsx index ea64aca4384dc..eea0fefa66f17 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/messages.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/messages.tsx @@ -1,5 +1,5 @@ import React from "react" -import { Box } from "ink" +import { Box, Text } from "ink" import { createLabel } from "./utils" import { ActivityLogLevels, LogLevels } from "../../../constants" @@ -44,16 +44,18 @@ export const Message = React.memo( message += ` - ${statusText}` } if (!level || level === `LOG`) { - return <>{message} + return {message} } const TextLabel = getLabel(level) return ( - - - {` `} - {message} + + + + {` `} + {message} + ) } diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/progress-bar.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/progress-bar.tsx index 63daf92e3c8f3..2650ba93359ba 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/progress-bar.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/progress-bar.tsx @@ -1,5 +1,5 @@ import React from "react" -import { Box } from "ink" +import { Box, Text } from "ink" import { calcElapsedTime } from "../../../../util/calc-elapsed-time" const maxWidth = 30 @@ -38,18 +38,26 @@ export function ProgressBar({ return ( - [ + [ - {`=`.repeat(((progressBarWidth - 2) * percentage) / 100)} + {`=`.repeat(((progressBarWidth - 2) * percentage) / 100)} - ] + ] - {calcElapsedTime(startTime)} s - {current}/{total} + {calcElapsedTime(startTime)} s + + + + {current}/{total} + + + + {`` + percentage}% + + + {message} - {`` + percentage}% - {message} ) } diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/spinner.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/spinner.tsx index ad999e399b7c8..45f3778bdf007 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/spinner.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/spinner.tsx @@ -1,5 +1,5 @@ import React from "react" -import { Box } from "ink" +import { Box, Text } from "ink" import InkSpinner from "ink-spinner" interface ISpinnerProps { @@ -14,7 +14,9 @@ export function Spinner({ text, statusText }: ISpinnerProps): JSX.Element { return ( - {label} + + {label} + ) } diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/components/utils.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/components/utils.tsx index 7850c3831f77b..b3b4a19ba2cca 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/components/utils.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/components/utils.tsx @@ -1,14 +1,11 @@ import React, { FunctionComponent } from "react" -import { Color, ColorProps } from "ink" - -export const ColorSwitcher: FunctionComponent = ({ - children, - ...props -}) => {children} +import { Text, TextProps } from "ink" export const createLabel = ( text: string, color: string -): FunctionComponent => (...props): JSX.Element => ( - {text} +): FunctionComponent => (...props): JSX.Element => ( + + {text} + ) diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/context.tsx b/packages/gatsby-cli/src/reporter/loggers/ink/context.tsx index 35fb7d1260191..fec4636bdf404 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/context.tsx +++ b/packages/gatsby-cli/src/reporter/loggers/ink/context.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, createContext } from "react" +import React, { useState, useLayoutEffect, createContext } from "react" import { getStore, onLogAction } from "../../redux" import { IGatsbyState } from "gatsby/src/redux/types" @@ -17,7 +17,7 @@ export const StoreStateProvider: React.FC = ({ (getStore().getState() as any) as IGatsbyState ) - useEffect( + useLayoutEffect( () => onLogAction(() => { setState((getStore().getState() as any) as IGatsbyState) diff --git a/packages/gatsby-cli/src/reporter/start-logger.ts b/packages/gatsby-cli/src/reporter/start-logger.ts index 88c5b9ecf1b25..1666cfd8f7f79 100644 --- a/packages/gatsby-cli/src/reporter/start-logger.ts +++ b/packages/gatsby-cli/src/reporter/start-logger.ts @@ -9,15 +9,8 @@ import { initializeYurnalistLogger } from "./loggers/yurnalist" import { initializeINKLogger } from "./loggers/ink" export const startLogger = (): void => { - let inkExists = false - try { - inkExists = !!require.resolve(`ink`) - // eslint-disable-next-line no-empty - } catch (err) {} - if (!process.env.GATSBY_LOGGER) { if ( - inkExists && semver.satisfies(process.version, `>=8`) && !isCI() && typeof jest === `undefined` diff --git a/packages/gatsby-recipes/package.json b/packages/gatsby-recipes/package.json index 4c1098863a5c7..af1ed65bf7292 100644 --- a/packages/gatsby-recipes/package.json +++ b/packages/gatsby-recipes/package.json @@ -73,18 +73,18 @@ "@mdx-js/react": "^2.0.0-next.4", "@mdx-js/runtime": "^2.0.0-next.4", "@rollup/plugin-babel": "^5.1.0", - "@rollup/plugin-commonjs": "^14.0.0", + "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^8.4.0", "@rollup/plugin-replace": "^2.3.3", "fetch-mock-jest": "^1.3.0", - "ink": "next", - "ink-select-input": "^4.0.0", - "ink-spinner": "^4.0.0-0", + "ink": "^3.0.8", + "ink-select-input": "^4.2.0", + "ink-spinner": "^4.0.1", "react": "^16.12.0", "react-reconciler": "^0.25.1", "rimraf": "^3.0.2", - "rollup": "^2.23.0", + "rollup": "^2.34.2 ", "rollup-plugin-auto-external": "^2.0.0", "rollup-plugin-internal": "^1.0.0", "subscriptions-transport-ws": "^0.9.16", diff --git a/packages/gatsby-recipes/src/cli/index.js b/packages/gatsby-recipes/src/cli/index.js index 8abb7ad8371ec..c4295a1360645 100644 --- a/packages/gatsby-recipes/src/cli/index.js +++ b/packages/gatsby-recipes/src/cli/index.js @@ -92,7 +92,7 @@ const RecipesList = ({ setRecipe }) => { const items = recipesList return ( - ( @@ -341,7 +341,7 @@ export default async ({ key={`${p.resourceName}-${i}`} > - {p.isDone ? `✔ ` : } + {p.isDone ? `✔ ` : } {` `} {p.resourceName}: {` `} @@ -534,7 +534,7 @@ export default async ({ if (!isReady) { return ( - Loading recipe + Loading recipe ) } diff --git a/yarn.lock b/yarn.lock index 035a9718ca3e7..360b338aa5873 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3441,18 +3441,18 @@ magic-string "^0.25.2" resolve "^1.11.0" -"@rollup/plugin-commonjs@^14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-14.0.0.tgz#4285f9ec2db686a31129e5a2b415c94aa1f836f0" - integrity sha512-+PSmD9ePwTAeU106i9FRdc+Zb3XUWyW26mo5Atr2mk82hor8+nPwkztEjFo8/B1fJKfaQDg9aM2bzQkjhi7zOw== +"@rollup/plugin-commonjs@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.0.0.tgz#2ae2228354cf0fbba6cf9f06f30b2c66a974324c" + integrity sha512-/omBIJG1nHQc+bgkYDuLpb/V08QyutP9amOrJRUSlYJZP+b/68gM//D8sxJe3Yry2QnYIr3QjR3x4AlxJEN3GA== dependencies: - "@rollup/pluginutils" "^3.0.8" + "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" - estree-walker "^1.0.1" - glob "^7.1.2" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" "@rollup/plugin-json@^4.1.0": version "4.1.0" @@ -4256,7 +4256,7 @@ "@types/react" "*" "@types/react-instantsearch-core" "*" -"@types/react@*", "@types/react@^16.9.38", "@types/react@^16.9.56": +"@types/react@*", "@types/react@^16.9.56": version "16.9.56" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.56.tgz#ea25847b53c5bec064933095fc366b1462e2adf0" integrity sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ== @@ -5642,7 +5642,7 @@ atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -auto-bind@4.0.0, auto-bind@^4.0.0: +auto-bind@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== @@ -7210,10 +7210,6 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-spinners@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - cli-spinners@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" @@ -10287,6 +10283,11 @@ estree-walker@^1.0.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -13354,60 +13355,26 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -ink-select-input@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ink-select-input/-/ink-select-input-4.0.0.tgz#ff642302b4ffea53227e96fa9152709de8a3de54" - integrity sha512-LwvsWqJh64ARY/4WxhC9B0+Dcb+BiTm9lzwTW5XH8OT5ng7drs7J7C23ZQdt25ZETCPvzg5BSZf2w6fhdg/SXw== +ink-select-input@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ink-select-input/-/ink-select-input-4.2.0.tgz#a03dc1cae81f09c29cdd4612ae0be610c65c269f" + integrity sha512-pNpVNNlvbERKKj7yFZcNCecnz6RA7Lc6UZVfwYe1a3e56LPQmTYL0mbtfENQ9PBeMagny1tCtg0pQwr9y7NtVw== dependencies: arr-rotate "^1.0.0" figures "^3.2.0" - lodash "^4.17.19" lodash.isequal "^4.5.0" -ink-spinner@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ink-spinner/-/ink-spinner-3.1.0.tgz#a1090102663bf3cc90f1dbfb81f143378a892300" - integrity sha512-sPqmE4qeJ43vJFk9DGLd0wIqhMBAr3129ZqHPt7b847fVl+YTZ3g96khI82Db+FYE7v/Fc5B3lp4ZNtJfqpRUg== - dependencies: - cli-spinners "^1.0.0" - prop-types "^15.5.10" - -ink-spinner@^4.0.0-0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ink-spinner/-/ink-spinner-4.0.0.tgz#a233df86e17b76a28ba5c76c412b30d43ef96fa7" - integrity sha512-Oq2u5SY1qZ61LbzyQReJxpoRmruLcWw3lRb7cq8t3fj9484Eo5HggayyX5OVEcCGURWyyH8kJmFZJgrSGtJqkA== +ink-spinner@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/ink-spinner/-/ink-spinner-4.0.1.tgz#f67a59ff6d4698a5d67b7bb66266ea6829a8a4e1" + integrity sha512-2eYtzzUPb22Z0Cn2bGvE4BteYjcqDhgrHnCzGJM81EHXXlyNU7aYfucPgZs2CZPy0LWz/5hwoecFhd0mj1hrbw== dependencies: - "@types/react" "^16.9.38" cli-spinners "^2.3.0" -ink@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/ink/-/ink-2.7.1.tgz#ff1c75b4b022924e2993af62297fa0e48e85618b" - integrity sha512-s7lJuQDJEdjqtaIWhp3KYHl6WV3J04U9zoQ6wVc+Xoa06XM27SXUY57qC5DO46xkF0CfgXMKkKNcgvSu/SAEpA== - dependencies: - ansi-escapes "^4.2.1" - arrify "^2.0.1" - auto-bind "^4.0.0" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-truncate "^2.1.0" - is-ci "^2.0.0" - lodash.throttle "^4.1.1" - log-update "^3.0.0" - prop-types "^15.6.2" - react-reconciler "^0.24.0" - scheduler "^0.18.0" - signal-exit "^3.0.2" - slice-ansi "^3.0.0" - string-length "^3.1.0" - widest-line "^3.1.0" - wrap-ansi "^6.2.0" - yoga-layout-prebuilt "^1.9.3" - -ink@next: - version "3.0.0-7" - resolved "https://registry.yarnpkg.com/ink/-/ink-3.0.0-7.tgz#e64a7f8ca462f1d07bc371906871c3c2b24c141c" - integrity sha512-Faw3KSntkySygliO5auyn6F1QfuT4lxc77zssuTNcW4I7AL1w1UxZJrhAE6NwaRFLxdHG8eEcvRXjr7V/ZmHmg== +ink@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/ink/-/ink-3.0.8.tgz#c527957c8fa4efcc139b67a4cbba7bb8a62b18b0" + integrity sha512-ubMFylXYaG4IkXQVhPautbhV/p6Lo0GlvAMI/jh8cGJQ39yeznJbaTTJP2CqZXezA4GOHzalpwCWqux/NEY38w== dependencies: ansi-escapes "^4.2.1" auto-bind "4.0.0" @@ -13418,7 +13385,7 @@ ink@next: code-excerpt "^3.0.0" indent-string "^4.0.0" is-ci "^2.0.0" - lodash.throttle "^4.1.1" + lodash "^4.17.20" patch-console "^1.0.0" react-devtools-core "^4.6.0" react-reconciler "^0.24.0" @@ -14034,6 +14001,13 @@ is-reference@^1.1.2: dependencies: "@types/estree" "0.0.39" +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" @@ -16130,14 +16104,6 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" -log-update@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-3.1.0.tgz#fa22abbbcb30f505906758bbbd0f292b71bc2ad9" - dependencies: - ansi-escapes "^3.2.0" - cli-cursor "^2.1.0" - wrap-ansi "^5.0.0" - log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -16292,7 +16258,7 @@ magic-string@^0.22.4: dependencies: vlq "^0.2.2" -magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5: +magic-string@^0.25.2, magic-string@^0.25.3, magic-string@^0.25.5, magic-string@^0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== @@ -22263,13 +22229,20 @@ rollup@^1, rollup@^1.32.1: "@types/node" "*" acorn "^7.1.0" -rollup@^2.0.0, rollup@^2.23.0: +rollup@^2.0.0: version "2.23.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.23.0.tgz#b7ab1fee0c0e60132fd0553c4df1e9cdacfada9d" integrity sha512-vLNmZFUGVwrnqNAJ/BvuLk1MtWzu4IuoqsH9UWK5AIdO3rt8/CSiJNvPvCIvfzrbNsqKbNzPAG1V2O4eTe2XZg== optionalDependencies: fsevents "~2.1.2" +rollup@^2.34.2, "rollup@^2.34.2 ": + version "2.34.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.34.2.tgz#fa73e05c64df587e9ed4dc80d7d4e7d4a43f8908" + integrity sha512-mvtQLqu3cNeoctS+kZ09iOPxrc1P1/Bt1z15enuQ5feyKOdM3MJAVFjjsygurDpSWn530xB4AlA83TWIzRstXA== + optionalDependencies: + fsevents "~2.1.2" + rss@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/rss/-/rss-1.2.2.tgz#50a1698876138133a74f9a05d2bdc8db8d27a921" @@ -26301,7 +26274,7 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^5.0.0, wrap-ansi@^5.1.0: +wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== @@ -26758,7 +26731,7 @@ yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" -yoga-layout-prebuilt@^1.9.3, yoga-layout-prebuilt@^1.9.6: +yoga-layout-prebuilt@^1.9.6: version "1.9.6" resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.9.6.tgz#98dde95bbf8e6e12835876e9305f1e995c4bb801" integrity sha512-Wursw6uqLXLMjBAO4SEShuzj8+EJXhCF71/rJ7YndHTkRAYSU0GY3OghRqfAk9HPUAAFMuqp3U1Wl+01vmGRQQ==