{"versions":{"6.3.1":{"name":"@jrichman/ink","version":"6.3.1","description":"React for CLI local version for Gemini CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.0","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","widest-line":"^5.0.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.8","@types/react-reconciler":"^0.32.0","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.3.1","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-mpEjxxcDazquc2dzHgRXBk9aGF32Xq1tBIAuwccC+wkbamSwh7eCDy4x+i6rZazffnXXbf8J4kKM1bMZFsDqJw==","shasum":"4d2ffeeb172cb0e22a274007d99ca3df1cdbd657","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.3.1.tgz","fileCount":141,"unpackedSize":329876,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDV0UI1KUQr7wcq9KiBo17PIraPibv+6tkHMP7GC/H/rwIgUqOWRA5kIsVpRZDJEqEluo2UToIRhU03OUb6ECXRXfE="}],"size":77520},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.3.1_1761259627723_0.787330426767747"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-10-23T22:47:07.895Z","publish_time":1761259627895,"_source_registry_name":"default","contributors":[]},"6.4.0":{"name":"@jrichman/ink","version":"6.4.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.0","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-RXr0+h414DfVRCOo7hLnGS8E83MV8AJ9qGUMR4/uGoqYID865O0p8NJ1+5QcAKzpP6ZotdIll5l9hvzalFYuDQ==","shasum":"c022542391b27f8bf4131d4ec0032f41c3f10de5","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.0.tgz","fileCount":141,"unpackedSize":374273,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBmsfCg2FA/zJWFrSJwGmvRfPQoaGJHk0Vz5nzRVbwynAiEAr3CKyULJ3OvBzg7wxXbznxvlf9ly2c10ub9+O12uwCk="}],"size":85370},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.0_1761861686142_0.37379496228529474"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-10-30T22:01:26.352Z","publish_time":1761861686352,"_source_registry_name":"default","contributors":[]},"6.4.1":{"name":"@jrichman/ink","version":"6.4.1","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.1","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-YeNdpjFjq7Qbu9FQDQiCNmw4QehoBWi9pMEr52ZM4xLwQkYNtzyi/J5169NPLQCX2kl1WepngoUrzWvuFmjeSA==","shasum":"515cb41a5d23e205edd669af800f41c97df422a3","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.1.tgz","fileCount":147,"unpackedSize":386434,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIA+LYFmxwO+/MGMUHpjLdF36GWp/gPndZZeufORR72lUAiEA3a5tWMj97XIssuknkaFiTLyyw1b4GURUk3LmCgHwOxg="}],"size":88544},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.1_1762530034842_0.6662389015516454"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-07T15:40:35.058Z","publish_time":1762530035058,"_source_registry_name":"default","contributors":[]},"6.4.2":{"name":"@jrichman/ink","version":"6.4.2","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.2","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-jfne1I/8+kVhzY/aoIWUKS0adPNRUhnN/wEsdBtSheyAp0b3c94zVsWWyDxnfXKL3RqOd40/H1FFaPLTUwjLXQ==","shasum":"5e50be8542848d5deb43b6f476169dc17b521ca2","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.2.tgz","fileCount":150,"unpackedSize":395765,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDZcWp7Tqd3AOgrWJqe9qatFPjyLUiAZTmy+D2UUd6ZdgIhAJ6LCKwRpAwgq4cyxtwPNGaeo1qnw3Plk0gmowwhOYVn"}],"size":89178},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.2_1762792502822_0.8734059290822216"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-10T16:35:03.071Z","publish_time":1762792503071,"_source_registry_name":"default","contributors":[]},"6.4.3":{"name":"@jrichman/ink","version":"6.4.3","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.3","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"24.6.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-2qm05tjtdia+d1gD7LQjPJyCPJluKDuR5B+FI3ZZXshFoU1igZBFvXs2++x9OT6d9755q+gkRPOdtH8jzx5MiQ==","shasum":"6d52ce9ec3a441d8e5a5a24a1378ab33f0172f21","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.3.tgz","fileCount":150,"unpackedSize":424246,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGJBCUhfVDjDXDtmnDJZFlJjCig9K7gWi0/d/j1v8Z96AiAPXbvKjbMk47di8V/hf6hEIw3jBleoBJOch0AVQdp0Iw=="}],"size":94094},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.3_1762994514999_0.4411791653001411"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-13T00:41:55.204Z","publish_time":1762994515204,"_source_registry_name":"default","contributors":[]},"6.4.4":{"name":"@jrichman/ink","version":"6.4.4","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.4","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-CVrVMWG+BTlPq5B6C893R7ZCGzkHsI2n+MrlrQgpQsgOZddIaVuMsM2he0foH7UF70JQUDHdEuEJP7/igkwmRg==","shasum":"7863e9f5b61666dc78bca2b3d7d84c6933fe671b","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.4.tgz","fileCount":150,"unpackedSize":425286,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDltqmsi3M2r9BrUQIC7qFxiP+1B+WUFoudI2poHEPoKgIgIrsKcy3nT/JGDkQ34YYogMnJWv8ZfyLRuGpokTDOosA="}],"size":94220},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.4_1763526591932_0.2358193918332372"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-19T04:29:52.118Z","publish_time":1763526592118,"_source_registry_name":"default","contributors":[]},"6.4.5":{"name":"@jrichman/ink","version":"6.4.5","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.5","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-mIDkZqtJbedL9XDOoqoJt3S8aGQVqEJYnCnSeLlYzkpUWCsSWC0hW40yJ0DLH86lcl8k5R5lv/9C2i/3746nWw==","shasum":"8a7a44d2a0caeae25abb6536349a85453f2d7ac8","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.5.tgz","fileCount":150,"unpackedSize":425462,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAcYx8XmVgw+VdXizAinb9pe/hHsLXD3BbCUiI6H14H/AiBKDlteIfKlG6h08EHfqBraNgUufriZQQml2XTKrbrCPw=="}],"size":94235},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.5_1763590237004_0.5860695201728383"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-19T22:10:37.374Z","publish_time":1763590237374,"_source_registry_name":"default","contributors":[]},"6.4.6":{"name":"@jrichman/ink","version":"6.4.6","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.6","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-QHl6l1cl3zPCaRMzt9TUbTX6Q5SzvkGEZDDad0DmSf5SPmT1/90k6pGPejEvDCJprkitwObXpPaTWGHItqsy4g==","shasum":"e14b5f49f5d211907ce3097551472538d2bc749f","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.6.tgz","fileCount":159,"unpackedSize":514796,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC2pzvCPETcXlVEcCg1X0XALuL8QNaQfhTt3sOjiAnMtwIgTbx0pIiO/PMyXKExbdEJubB5cAYQPyEfcvO5zXF02jw="}],"size":110737},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.6_1763780608399_0.9378539200837528"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-11-22T03:03:28.610Z","publish_time":1763780608610,"_source_registry_name":"default","contributors":[]},"6.4.7":{"name":"@jrichman/ink","version":"6.4.7","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.7","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-QHyxhNF5VonF5cRmdAJD/UPucB9nRx3FozWMjQrDGfBxfAL9lpyu72/MlFPgloS1TMTGsOt7YN6dTPPA6mh0Aw==","shasum":"aed94c31ee204050b5c956e75a93ac56bfcd7a1c","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.7.tgz","fileCount":156,"unpackedSize":507866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFALt0oAoXdegFLSd3LPGcl47hcyF5nbXghn3R4x65YSAiAHFdhWb3ldup5H4y70A/FqTo2lowur288C2C/40yJsjw=="}],"size":110771},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.7_1768003926065_0.12914906681810656"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-10T00:12:06.254Z","publish_time":1768003926254,"_source_registry_name":"default","contributors":[]},"6.4.8":{"name":"@jrichman/ink","version":"6.4.8","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.8","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-v0thcXIKl9hqF/1w4HqA6MKxIcMoWSP3YtEZIAA+eeJngXpN5lGnMkb6rllB7FnOdwyEyYaFTcu1ZVr4/JZpWQ==","shasum":"cfb54fe90975958daeaa709c9199a4e2bb421d55","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.8.tgz","fileCount":159,"unpackedSize":543290,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICmLt9NFJoaukA3/6HKH9/hmQLhmcot39n6MwKU7FIKqAiEA74eoRYGAo8VMM/yOO3GIPQk4rrGQkbDG+TLm45EtPCQ="}],"size":116535},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.8_1769451968716_0.5815672080597569"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-26T18:26:08.913Z","publish_time":1769451968913,"_source_registry_name":"default","contributors":[]},"6.4.9":{"name":"@jrichman/ink","version":"6.4.9","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.9","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-UwsR8HWPb4ZCBttgbP0Tc8BoB45CT4++UrPL9YYdjzOj0RZOys0yZqBUldGUpkoACSwwXGtEthYPh5EjT7Z1ig==","shasum":"e95c94db778ea465a395ddf79fc025181ae88734","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.9.tgz","fileCount":159,"unpackedSize":545061,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3mFsgq5CITVSM/Lt8I0t/NZ1Ij1806ogatM0xGqL3swIgIZdHprod18WF1o83NsDEUFkICbU7mcTXVJYf1ldpM4E="}],"size":116965},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.9_1770244258426_0.445721958655213"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-04T22:30:58.644Z","publish_time":1770244258644,"_source_registry_name":"default","contributors":[]},"6.4.10":{"name":"@jrichman/ink","version":"6.4.10","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.10","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-kjJqZFkGVm0QyJmga/L02rsFJroF1aP2bhXEGkpuuT7clB6/W+gxAbLNw7ZaJrG6T30DgqOT92Pu6C9mK1FWyg==","shasum":"38cfe1da0a6627af6434848444baa9948d17717b","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.10.tgz","fileCount":159,"unpackedSize":546447,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDF/NLZjpVrhYKOeVT5nSJTNA0NZuNxNaxY1Rm655frZAIhAIBJEvbm/X4O+G1uvGhnnZS/qjXmhME/gnyV5GnOy4F2"}],"size":117172},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.10_1770417139416_0.10341645399835597"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-06T22:32:19.577Z","publish_time":1770417139577,"_source_registry_name":"default","contributors":[]},"6.4.11":{"name":"@jrichman/ink","version":"6.4.11","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.11","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-93LQlzT7vvZ1XJcmOMwN4s+6W334QegendeHOMnEJBlhnpIzr8bws6/aOEHG8ZCuVD/vNeeea5m1msHIdAY6ig==","shasum":"3808ab6749cee95cfcf6f654881e17626ebdad75","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.11.tgz","fileCount":156,"unpackedSize":539013,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCZ328D81evNpC/wv1iv3LHqoL3QSt9rSPpVu4imCrn2gIgTRCeXc0ta5n2Meg7uVGKrgkh9EaczqB09MvxLlmrXNM="}],"size":116650},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.11_1771313844291_0.003285192866669062"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-17T07:37:24.441Z","publish_time":1771313844441,"_source_registry_name":"default","contributors":[]},"6.4.12":{"name":"@jrichman/ink","version":"6.4.12","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.12","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-tvOKuJuy7HTDGQOKCOFRcARpe0yl4kT/UxXyUOwWzz87FXk5zSvXGg1BMZg5jUHn/nXTDQWRPMtKht7LRQCsnA==","shasum":"eba1297bd863a74f6a8842452475e3fccd1a916f","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.12.tgz","fileCount":222,"unpackedSize":929343,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC1DdFW16GLyZi8ELdBMQrh7eR9NMuoAdd8wZg6RIP6lgIhAPiHdVv8JH9hzLQC/IQcFfVmGcd86CohHmShKn9Tz3NN"}],"size":188153},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.12_1774461895360_0.78109621414464"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-25T18:04:55.584Z","publish_time":1774461895584,"_source_registry_name":"default","contributors":[]},"6.4.13-beta.0":{"name":"@jrichman/ink","version":"6.4.13-beta.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.13-beta.0","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-qJtMT1NDEdlZIa+jw0rEWadukR4ZOvdzPVh2LVsLpoCiFhB7GRYebSiQpo0/b9F10ZRRTp6G1Zfc5DQFyGzi9Q==","shasum":"acdb7865bf1362db5a58d7235f1dc04e28f3ff63","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.13-beta.0.tgz","fileCount":222,"unpackedSize":929190,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDXUmZ7NSpRXtOM9Na5tG80sJg0v43f+ElhY/yaKBex1gIgRJcXLdsY6GOoNbJ3HabGVqzIde3G4MYEylCTh66xzps="}],"size":188161},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.13-beta.0_1774478983925_0.8610063337546705"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-25T22:49:44.220Z","publish_time":1774478984220,"_source_registry_name":"default","contributors":[]},"6.4.13-beta.1":{"name":"@jrichman/ink","version":"6.4.13-beta.1","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.13-beta.1","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-QQEu2deuFlty+wHZM1LY5dfOHjUSeZ1SnON1dZG/eVu38f+hkf160Ws6pC+8aPZdH411SrSWLG4CxcVt3lH/Yw==","shasum":"e247785c32dfdd84f15ba9db12d452493777b70b","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.13-beta.1.tgz","fileCount":222,"unpackedSize":929086,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFFjeJhqtgiIsQxwj3TBLmkb1kWj4t5GQEHgafXCOCPBAiEA0/RN9MqcTCluTcZHMC8peHRISqOWK2j6w8E5uwZT7qg="}],"size":188155},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.13-beta.1_1774481893745_0.15214250463741807"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-25T23:38:13.973Z","publish_time":1774481893973,"_source_registry_name":"default","contributors":[]},"6.4.13":{"name":"@jrichman/ink","version":"6.4.13","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.4.13","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Jn6YqpUq6XrdhlznGeFimkA+YzpWKuReOc/sp4zz6f65e/padpSxxx31KwE4SS6lrNC+L4LXa2Pa8fSaPzRf/A==","shasum":"33a25e6a5a416f273ef6278fc00b0a044984fcb8","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.4.13.tgz","fileCount":219,"unpackedSize":920552,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDxgJbEsUBzbx45Ruo5ddYGcP+s1/UEnxZ0HNQSz3WVUgIhAL/HmwmxjVp/QjkWlnZ/Gvpqi0Jw5iQaeNsysL2MZosh"}],"size":187615},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.4.13_1774494136148_0.24736215883321067"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-26T03:02:16.427Z","publish_time":1774494136427,"_source_registry_name":"default","contributors":[]},"6.5.0":{"name":"@jrichman/ink","version":"6.5.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.0","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-S4g/ng7fPZmFwclO82iWkOce8vDLy/FIDgHIfkCWGOehqHe6dexHsmq3kNQD21okh198pA5SAQTCqNQJb/svRQ==","shasum":"8e9dcd9fa92f5433971421d7ee91699c4db39d06","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.0.tgz","fileCount":219,"unpackedSize":920391,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDECnADtvcdSAVXTA7cFPtSd7kO8xzSrm1rGBXPfXKTIAIgO0dy4z8K9gTDHAqnHP38wV14+0WuIZIHromrSsCdZuU="}],"size":187618},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.0_1774496228103_0.13577385735012237"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-26T03:37:08.344Z","publish_time":1774496228344,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.0":{"name":"@jrichman/ink","version":"6.5.1-beta.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"@alcalzone/ansi-tokenize":"^0.2.1","ansi-escapes":"^7.0.0","ansi-styles":"^6.2.1","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.0","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-ZcK2ggULb2KjPcoaGJ6ZuHWF2prRIUN7ENVd46XxzfL3TQOz0PTBGGU93IVKjVUTBifWf47SJKhkWJGKKik9tA==","shasum":"45288fdc86a1ca79849e0c1d38e4a496bc1cfc7c","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.0.tgz","fileCount":240,"unpackedSize":1057452,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDoAokL9Lzly4Yr8AFUSJZL9emcPqAF+xKvjeVIyc0eaAIgYrW1ABpib/Pzt2lvkdFaGJ1fa+J4+kYGlO9uTI7Wppo="}],"size":206954},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.0_1774639563869_0.7224843672186143"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-27T19:26:04.121Z","publish_time":1774639564121,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.1":{"name":"@jrichman/ink","version":"6.5.1-beta.1","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.1.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.1","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-lMplVZJYdpLotVol0KR6AoYccpsbEyYTpIiEMnAy1i+SW+dwOktVdg0f1hCuc2S/tX0wtQ2jIPnfB+PFRieyDA==","shasum":"b7cf05785985b46131ab2516a095d092545419e9","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.1.tgz","fileCount":249,"unpackedSize":1123814,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICtfyuilhKSgVZWxPgbzDZ73o+3O7g6SPy6f8l5GrHNTAiEAjLe4JfKcIZwPiGgFlw4klvQmV6GkSAkg7JkeJdjgJwE="}],"size":219326},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.1_1774824796382_0.031148872415622364"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-29T22:53:16.591Z","publish_time":1774824796591,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.2":{"name":"@jrichman/ink","version":"6.5.1-beta.2","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.1.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.2","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-QbY7waijXi2VnsPclwBeBOdmlFOulHclqhGBPqQ/eQdftMi303c4b+835AwTqZNq+zzmaFyFHWbwpOZBt4UwfQ==","shasum":"bdf3bb610af5f246376636b3861ef6ed213862fb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.2.tgz","fileCount":252,"unpackedSize":1148344,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD8T42QXTtpsnJt+pVrzE3hew/NY1ZJpgxvPQ7Zhgy7zgIgWPVLUpzIsIpH5LddwFZb11faTH5Lt9elw8bLbewDaM4="}],"size":222014},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.2_1774855525665_0.13307299517487325"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-30T07:25:25.817Z","publish_time":1774855525817,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.3":{"name":"@jrichman/ink","version":"6.5.1-beta.3","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.3","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Bo9scex7uwjmgPRRcTnOCSTQlZU7D/QbWQk7IsGfsXFRz2mW0Sp1DRFvAZyIKEHvTnxc0cooqx9cip/aSU/QSw==","shasum":"fb27312295229cd7ffe6ec66319bbb1eb3cf3020","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.3.tgz","fileCount":252,"unpackedSize":1150094,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDqDnI5phu8r/O6heG21GqXzVoat2/413USOlCCcyY8rAIgcn0ufJxaOwV5il3v7Mb8zyKJ9FtKB1KRC4xwxpJTgAw="}],"size":222600},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.3_1774893385014_0.7431134804475643"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-30T17:56:25.233Z","publish_time":1774893385233,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.5":{"name":"@jrichman/ink","version":"6.5.1-beta.5","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.5","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-RNLfE+XsEP0HX4WSf68UKBrcD0OD4xKNGTnb5e07C3zi70vttG/uk+h2QuRR0PmNDble+GM1vPS+Ck0LMWilNA==","shasum":"aa51191634c7053e371247e171196822f81b5723","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.5.tgz","fileCount":225,"unpackedSize":1008988,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEvUf0v+Ooh/YOG5aXexud7bfXgUGZ0JAl3QlGrAl4S6AiEAh0HPymZx/zG4uiIfj8eWvih/nKBA09QgMNqqc5OF/0w="}],"size":202884},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.5_1774911686777_0.7500825925215091"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-30T23:01:26.999Z","publish_time":1774911686999,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.6":{"name":"@jrichman/ink","version":"6.5.1-beta.6","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.6","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-kiQMi8AHH/3evOyFLUMyHwvucj9XycvXXN6nfXgpwgZnLshJdh1EZ4h9NvKoyW0eCBMqOypzbSn+eeJkKqQQ8w==","shasum":"bcc814cc99854f4764a0bc392ede70f8cc8e6d02","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.6.tgz","fileCount":225,"unpackedSize":1010321,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDA4HemWMiypuF9t3KiVUEq0tFyMJr4HFAajz4k0iP4WQIhALjkZtwjSd0bEuVnewfVeSOFHd3+Uw6BfUEvsoNqf6ba"}],"size":203042},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.6_1774913267063_0.2517958147024464"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-30T23:27:47.288Z","publish_time":1774913267288,"_source_registry_name":"default","contributors":[]},"6.5.1-beta.7":{"name":"@jrichman/ink","version":"6.5.1-beta.7","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.5.1-beta.7","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-G5Kn+vX6B+UOCWeh+s7XNOjf9FZX0Yw2rblVDqlVCwh+d6NSPDbIPQ3QjvRfex2FjOkpvQSVMHhGFEiZj4iuWw==","shasum":"e6083affb7245cfea8225d54b10501937633ea62","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.5.1-beta.7.tgz","fileCount":252,"unpackedSize":1163980,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC6Q2YjShBQiL9PAgdt7Pte+6kg855zI+rxuIhByQxKPQIhAOdFviZe+o53JyrfpSBxUgjLONp0eLo7KNOHSuaj3hC7"}],"size":225524},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.5.1-beta.7_1774967400440_0.9996529886230507"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-31T14:30:00.624Z","publish_time":1774967400624,"_source_registry_name":"default","contributors":[]},"6.6.0":{"name":"@jrichman/ink","version":"6.6.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.0","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-xEgGW/NzdKYTBZD45Nk02HgBIDZmWFT0uw2day22VK1LV9NcMnExlTaOTq3DbiCcCD19omWR87Vyz/fkj1h8jA==","shasum":"e1c4b6ebb099a8dc251a56721489d9bde455680b","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.0.tgz","fileCount":225,"unpackedSize":1008970,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDeqGEPh6MC/De9s0Ov8HhXjSLby+rAstF2pNy38/F+HQIhAMVIE69V0sxNOha08b/px19Hb+g8+txgSGOje+Xw3khE"}],"size":202590},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.0_1774968842855_0.7003735086543654"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-31T14:54:03.083Z","publish_time":1774968843083,"_source_registry_name":"default","contributors":[]},"6.6.1":{"name":"@jrichman/ink","version":"6.6.1","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.1","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-mWXT1OGQedLf3MgjEz9rSDewVr7f6Xgd9IM+u/T39ydfqP5t1PtW6r6+WVO5KP/qjM9e+4vyvbiQflIDLqm4Fw==","shasum":"70b14ce856eff098e91be10781738916e5796f16","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.1.tgz","fileCount":225,"unpackedSize":1008908,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCUzdSjbqrlw2x/EQUnDOq8dxfhEn3Dvxd+8qpp/FCPMgIhALxMDkhoeW3860pR1X8BORjUI0cNx/3J6GMw89KWU/lk"}],"size":202596},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.1_1774988034508_0.6052097234996221"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-31T20:13:54.702Z","publish_time":1774988034702,"_source_registry_name":"default","contributors":[]},"6.6.2":{"name":"@jrichman/ink","version":"6.6.2","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.2","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-HOa3hchm88yOxM9sk+fws5s4Xor+Hx57YkOObh4/u7TvzDhU5gQe5QGsSpzPnwC6wRzRgLEMQ2biBcN2ltr5cw==","shasum":"5d89134e9dd200aa09a8e73de33816616e7be593","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.2.tgz","fileCount":225,"unpackedSize":1008790,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCpRzclrlVP8RPIyU0tuolhrYcA8ODa7Fq71T+2049vjwIhAMJfjKcPbetotPNnqavXL9S42WwHOTo7uPy0RzkdGj3q"}],"size":202573},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.2_1774992551733_0.6086940987638092"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-31T21:29:11.899Z","publish_time":1774992551899,"_source_registry_name":"default","contributors":[]},"6.6.3":{"name":"@jrichman/ink","version":"6.6.3","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.3","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-0v4S7TbbF2tpQrfqH1btwLgTgH+K0vY2BJbokTE5Lk1KBr4TqZ+Pyo+geSD5F+zytX6G2ajGHBQyHk8yGK4C7A==","shasum":"71fde49faf89422139af13c3b3e1e08b6325edca","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.3.tgz","fileCount":225,"unpackedSize":1008937,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDUnIFy6vWUqYLmiPezMVyKpmm4LrXiTBb20D9efP8QBwIgEpghu7nFyZLtvdw5XCBqsXXmqan5XdLf53xRzJbE5X8="}],"size":202609},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.3_1774995175696_0.9636909619511418"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-31T22:12:55.957Z","publish_time":1774995175957,"_source_registry_name":"default","contributors":[]},"6.6.4":{"name":"@jrichman/ink","version":"6.6.4","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.4","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-AMJmd0nbSu3a/JW7AveUNecJ3T2+JUXNzjSZfYPPVk0EQzzbFWP7nyC7XGdHEF6AnrmelGViTIay9m6P9uZBQQ==","shasum":"bc1d3f3adb97823e59f0ce9753c53262bac7c62c","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.4.tgz","fileCount":225,"unpackedSize":1008937,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDZZVXInbJKWFA7L6KDySQ/LidDldgXxe/fQyIi3Gwp8wIgVJZyqMT26avsfNqu0V39DbdxdyK8yUfzSW8EDOOwfJQ="}],"size":202611},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.4_1775002789574_0.7229379381967389"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-01T00:19:49.812Z","publish_time":1775002789812,"_source_registry_name":"default","contributors":[]},"6.6.5":{"name":"@jrichman/ink","version":"6.6.5","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.5","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Q+XCBkDH63qCpUkq31CfIYaWUVheCUps/bCjhZa1d0dhMDLT5xiG4BCV660Rz5N5ZsHCQbANTF/lleoL9Uo00Q==","shasum":"d38061e93bea83ba305ae8fd01b78bb9e964a63a","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.5.tgz","fileCount":225,"unpackedSize":1011019,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDAPC4Hi8mmEHOj65EsCyKwVD4RqYEpVARBGTM6YN1zmwIhAKTJT1b396BtP+PPQHd6U94ePZhwxu/xkqNWz2ePCWbk"}],"size":203113},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.5_1775077574808_0.3574041011861462"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-01T21:06:15.046Z","publish_time":1775077575046,"_source_registry_name":"default","contributors":[]},"6.6.7":{"name":"@jrichman/ink","version":"6.6.7","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.7","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-bDzQLpLzK/dn9Ur/Ku88ZZR9totVcMGrGYAgPHidsAAbe9NKztU1fggj/iu0wRp5g1kBeALb3cfagFGdDxAU1w==","shasum":"cf068578cf0547fbfca64b2271f82fbfd0741ccb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.7.tgz","fileCount":225,"unpackedSize":1014005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5MocsdlZdv4kSAotFJBl0S752Edc3Oi2CKJ/nDGTWvgIgHuULs9AJBJAdoifazYDORbtb1GvYYs+LEGrqytdkSQ0="}],"size":203757},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.7_1775111750277_0.5262667067575493"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-02T06:35:50.461Z","publish_time":1775111750461,"_source_registry_name":"default","contributors":[]},"6.6.8":{"name":"@jrichman/ink","version":"6.6.8","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.8","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-099iGdvWVIM2ivc3NEWyMF7FT06aLmrx1gMGI02ZYB4wLIFn0v/KQl6+20xEwcM6gyzj8Y8842Sf0UH2z0oTDw==","shasum":"bd451eae15f5378386de8a7a01f0adc78488fda9","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.8.tgz","fileCount":228,"unpackedSize":1017278,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEeegW9Si2ayYk4psHwd5XEVZLfS9M0IAlU3ykNtFcaDAiEAsTQq92R4odOUoJiHpsa8/xUZnD2E3kIH2DMy7bEMOMk="}],"size":204660},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.8_1775664442674_0.3535813120995668"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-08T16:07:22.843Z","publish_time":1775664442843,"_source_registry_name":"default","contributors":[]},"6.6.9":{"name":"@jrichman/ink","version":"6.6.9","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@6.6.9","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-RL9sSiLQZECnjbmBwjIHOp8yVGdWF7C/uifg7ISv/e+F3nLNsfl7FdUFQs8iZARFMJAYxMFpxW6OW+HSt9drwQ==","shasum":"782394bbb7733d7038e3126a6c21a6b649b1b0dd","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-6.6.9.tgz","fileCount":228,"unpackedSize":1017493,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFKH7mlZ740deKo48EHLwgPO1uehvHrprUzZ6/fiOF83AiBTEu+Yz+YAlGDLqSCrPuPGG9K2FBsDTxlFcznva9iSbg=="}],"size":204720},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_6.6.9_1775685783711_0.7176528088812246"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-08T22:03:03.951Z","publish_time":1775685783951,"_source_registry_name":"default","contributors":[]},"7.0.0-beta":{"name":"@jrichman/ink","version":"7.0.0-beta","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.1.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","readmeFilename":"readme.md","_id":"@jrichman/ink@7.0.0-beta","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-k9Q9rV0HBJUtrpbXn/4EpBsaYByPlA6Ulxr731wQ8AQLqciQ9Eu1LHOV/HnO9F5K/0xxNcra0xiNtcpKWWzyOg==","shasum":"7b3ea15b6df60cc50a9ffd595817e4285a623cda","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.0-beta.tgz","fileCount":225,"unpackedSize":1092121,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG6u1FlQyCcxOq5EiJOJTHYxRFgpTgGXaXR5iLOK+Jb1AiAuMkCRYkYptuCA+aZxiuI76whK8Wg2cH4TlVDebdujYg=="}],"size":214917},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.0-beta_1776044499911_0.3230814263991455"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-13T01:41:40.083Z","publish_time":1776044500083,"_source_registry_name":"default","contributors":[]},"7.0.0-beta.1":{"name":"@jrichman/ink","version":"7.0.0-beta.1","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@7.0.0-beta.1","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-vp0wWXqxObOUDj898GxI223YT3/Q2W0FWmqMDfHvjuBRlfVdr5FtTNN/n+nVZML30f1HpY5c6vAESQS5MPbhHg==","shasum":"1aa0d48f8db1faa76ecb55c8bb74cd6cdda30961","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.0-beta.1.tgz","fileCount":225,"unpackedSize":1090847,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDV/5qP8oBTtDEeoSZco6Nu8XPYmhcTMPfV1HHa6UysXAIgK1th6IeewfoDx/3tO3O/XPRNhlzxccZi7eKrK3zmSOs="}],"size":214905},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.0-beta.1_1776097900036_0.031580757816138005"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-13T16:31:40.221Z","publish_time":1776097900221,"_source_registry_name":"default","contributors":[]},"7.0.0-beta.2":{"name":"@jrichman/ink","version":"7.0.0-beta.2","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@7.0.0-beta.2","readmeFilename":"readme.md","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-cc222452y0FK1gl7/p+veunoABGL1LAfF57RfDYCGYcTxxogN3IaM/KbkaY0pKQLngLBj8mz7GyOabq+O4DY2A==","shasum":"637bb3e280e84681949919d4992c0161b5b82992","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.0-beta.2.tgz","fileCount":225,"unpackedSize":1068911,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBPCUxvHnLg8lsAYhhsZ0FNPjcyGA7XdOUJoLKEo4LaLAiAZe5UU2W3Cth/eZLldschhEuSK2/MgoOn9WgV7puPAXQ=="}],"size":213645},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.0-beta.2_1776376601998_0.04423835337742288"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-16T21:56:42.241Z","publish_time":1776376602241,"_source_registry_name":"default","contributors":[]},"7.0.0-beta.3":{"name":"@jrichman/ink","version":"7.0.0-beta.3","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@7.0.0-beta.3","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-8qBJlbUg1HRfOtLlGo6NjGL+HwYrwkoyvLXOl6Ogzcf2l0n0hudiaPpD+0VFTCQX3o01Nm5bMr4zY5TXwEXvgA==","shasum":"44dbfc329305d2ecf529e8210328b8ac0467e2c0","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.0-beta.3.tgz","fileCount":225,"unpackedSize":1073127,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGW35mCpspemgXTQv0+mkb42K68Unk+Edo4ECKB1n+qJAiEAgnl6DI1Tb8B8+EosD54u+iUsXpbEuf7mcJ8sBsCZxAg="}],"size":214386},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.0-beta.3_1777071984934_0.00565613868070014"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-24T23:06:25.187Z","publish_time":1777071985187,"_source_registry_name":"default","contributors":[]},"7.0.0":{"name":"@jrichman/ink","version":"7.0.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@7.0.0","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-shMpAVwCQyDDve0PjuAb9YI9Q6X9nrQINNk8OADlt+iz9435N1r5cuap+yozAzJcbzX0svLSeZZYjG1pzEAxZA==","shasum":"89e8d743f4ec2ad7b8d62af55f22b3972033690a","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.0.tgz","fileCount":225,"unpackedSize":1073120,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBEeWQQv4S85DeZtOpgrtwwwU+G0nKnkwf5CEAPy32uxAiA87dvehLHBthOwceWGB8Rr61iIgkKXX/vMuHWTib0zOw=="}],"size":214378},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.0_1777074582371_0.22483696595709302"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-24T23:49:42.560Z","publish_time":1777074582560,"_source_registry_name":"default","contributors":[]},"7.0.1-beta.0":{"name":"@jrichman/ink","version":"7.0.1-beta.0","description":"React for CLI","license":"MIT","repository":{"type":"git","url":"git+https://github.com/jacob314/ink.git"},"author":{"name":"Jacob Richman","email":"jacob314@gmail.com","url":"https://github.com/jacob314"},"type":"module","exports":{"types":"./build/index.d.ts","default":"./build/index.js"},"engines":{"node":">=20"},"scripts":{"dev":"tsc --watch","build":"tsc","prepare":"npm run build","test":"tsc --noEmit && NODE_OPTIONS=\"--max-old-space-size=8192\" xo && FORCE_COLOR=true ava","example":"NODE_NO_WARNINGS=1 node --loader ts-node/esm","benchmark":"NODE_NO_WARNINGS=1 node --loader ts-node/esm"},"keywords":["react","cli","jsx","stdout","components","command-line","preact","redux","print","render","colors","text"],"dependencies":{"ansi-escapes":"^7.0.0","ansi-styles":"^6.2.3","auto-bind":"^5.0.1","chalk":"^5.6.0","cli-boxes":"^3.0.0","cli-cursor":"^4.0.0","cli-truncate":"^4.0.0","code-excerpt":"^4.0.0","es-toolkit":"^1.39.10","indent-string":"^5.0.0","is-fullwidth-code-point":"^5.0.0","is-in-ci":"^2.0.0","mnemonist":"^0.40.3","patch-console":"^2.0.0","react-reconciler":"^0.32.0","signal-exit":"^3.0.7","slice-ansi":"^7.1.0","stack-utils":"^2.0.6","string-width":"^8.1.0","type-fest":"^4.27.0","wrap-ansi":"^9.0.0","ws":"^8.18.0","yargs":"^17.7.2","yoga-layout":"~3.2.1"},"devDependencies":{"@faker-js/faker":"^9.8.0","@sindresorhus/tsconfig":"^7.0.0","@sinonjs/fake-timers":"^14.0.0","@types/ms":"^2.1.0","@types/node":"^22.15.24","@types/react":"^19.1.5","@types/react-reconciler":"^0.32.2","@types/signal-exit":"^3.0.0","@types/sinon":"^17.0.3","@types/stack-utils":"^2.0.2","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vdemedes/prettier-config":"^2.0.1","@xterm/headless":"^5.5.0","ava":"^5.1.1","boxen":"^8.0.1","delay":"^6.0.0","eslint-config-xo-react":"0.27.0","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.0.0","ms":"^2.1.3","node-pty":"^1.0.0","p-queue":"^8.0.0","prettier":"^3.3.3","react":"^19.1.0","react-devtools-core":"^6.1.2","sinon":"^20.0.0","strip-ansi":"^7.1.0","ts-node":"^10.9.2","typescript":"^5.8.3","xo":"^0.59.3"},"peerDependencies":{"@types/react":">=19.0.0","react":">=19.0.0","react-devtools-core":"^6.1.2"},"peerDependenciesMeta":{"@types/react":{"optional":true},"react-devtools-core":{"optional":true}},"ava":{"workerThreads":false,"files":["test/**/*","!test/helpers/**/*","!test/fixtures/**/*"],"extensions":{"ts":"module","tsx":"module"},"nodeArguments":["--loader=ts-node/esm"]},"xo":{"extends":["xo-react"],"plugins":["react"],"prettier":true,"rules":{"react/no-unescaped-entities":"off","react/state-in-constructor":"off","react/jsx-indent":"off","react/prop-types":"off","unicorn/import-index":"off","import/no-useless-path-segments":"off","react-hooks/exhaustive-deps":"off","complexity":"off","unicorn/no-for-loop":"off","no-bitwise":"off","@typescript-eslint/naming-convention":"off","eslint-comments/no-unused-disable":"off","import/order":"off","@typescript-eslint/no-unsafe-call":"off","unicorn/prefer-code-point":"off","@typescript-eslint/prefer-for-of":"off","@typescript-eslint/prefer-nullish-coalescing":"off","ava/no-import-test-files":"off","@typescript-eslint/no-unsafe-return":"off"},"ignores":["src/parse-keypress.ts"],"overrides":[{"files":["src/**/*.{ts,tsx}","test/**/*.{ts,tsx}"],"rules":{"no-unused-expressions":"off","camelcase":["error",{"allow":["^unstable__","^internal_"]}],"unicorn/filename-case":"off","react/default-props-match-prop-types":"off","unicorn/prevent-abbreviations":"off","react/require-default-props":"off","react/jsx-curly-brace-presence":"off","@typescript-eslint/no-empty-function":"off","@typescript-eslint/promise-function-async":"warn","@typescript-eslint/explicit-function-return":"off","@typescript-eslint/explicit-function-return-type":"off","dot-notation":"off","react/boolean-prop-naming":"off","unicorn/prefer-dom-node-remove":"off","unicorn/prefer-event-target":"off"}},{"files":["examples/**/*.{ts,tsx}","benchmark/**/*.{ts,tsx}"],"rules":{"import/no-unassigned-import":"off"}}]},"prettier":"@vdemedes/prettier-config","_id":"@jrichman/ink@7.0.1-beta.0","bugs":{"url":"https://github.com/jacob314/ink/issues"},"homepage":"https://github.com/jacob314/ink#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-vRzRMXNspq92OgikN2RTC0cpyErUn/OCQ97cAWikMEcy/dd8MZ/5SLisyZPL9t8Qt0LLIlY2WOB0cLkCj18qtQ==","shasum":"0bab5313435d925677f4a5735706f7d950f7e315","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@jrichman/ink/-/ink-7.0.1-beta.0.tgz","fileCount":225,"unpackedSize":1073608,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCccVZ21e1g4OAoi+eXNmmd5Cr81l+wqmq1/85QefAG+QIgQJoY81sihSNpfktAfa/FLEQtHGTwSc6pCpvpZViwQsc="}],"size":214500},"_npmUser":{"name":"anonymous","email":"jacob314@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jacob314@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ink_7.0.1-beta.0_1778104678460_0.33064414379256"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-05-06T21:57:58.636Z","publish_time":1778104678636,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"7.0.1-beta.0","beta":"7.0.0-beta.2"},"name":"@jrichman/ink","time":{"created":"2025-10-23T22:47:16.696Z","modified":"2026-05-06T21:58:38.257Z","6.3.1":"2025-10-23T22:47:07.895Z","6.4.0":"2025-10-30T22:01:26.352Z","6.4.1":"2025-11-07T15:40:35.058Z","6.4.2":"2025-11-10T16:35:03.071Z","6.4.3":"2025-11-13T00:41:55.204Z","6.4.4":"2025-11-19T04:29:52.118Z","6.4.5":"2025-11-19T22:10:37.374Z","6.4.6":"2025-11-22T03:03:28.610Z","6.4.7":"2026-01-10T00:12:06.254Z","6.4.8":"2026-01-26T18:26:08.913Z","6.4.9":"2026-02-04T22:30:58.644Z","6.4.10":"2026-02-06T22:32:19.577Z","6.4.11":"2026-02-17T07:37:24.441Z","6.4.12":"2026-03-25T18:04:55.584Z","6.4.13-beta.0":"2026-03-25T22:49:44.220Z","6.4.13-beta.1":"2026-03-25T23:38:13.973Z","6.4.13":"2026-03-26T03:02:16.427Z","6.5.0":"2026-03-26T03:37:08.344Z","6.5.1-beta.0":"2026-03-27T19:26:04.121Z","6.5.1-beta.1":"2026-03-29T22:53:16.591Z","6.5.1-beta.2":"2026-03-30T07:25:25.817Z","6.5.1-beta.3":"2026-03-30T17:56:25.233Z","6.5.1-beta.5":"2026-03-30T23:01:26.999Z","6.5.1-beta.6":"2026-03-30T23:27:47.288Z","6.5.1-beta.7":"2026-03-31T14:30:00.624Z","6.6.0":"2026-03-31T14:54:03.083Z","6.6.1":"2026-03-31T20:13:54.702Z","6.6.2":"2026-03-31T21:29:11.899Z","6.6.3":"2026-03-31T22:12:55.957Z","6.6.4":"2026-04-01T00:19:49.812Z","6.6.5":"2026-04-01T21:06:15.046Z","6.6.7":"2026-04-02T06:35:50.461Z","6.6.8":"2026-04-08T16:07:22.843Z","6.6.9":"2026-04-08T22:03:03.951Z","7.0.0-beta":"2026-04-13T01:41:40.083Z","7.0.0-beta.1":"2026-04-13T16:31:40.221Z","7.0.0-beta.2":"2026-04-16T21:56:42.241Z","7.0.0-beta.3":"2026-04-24T23:06:25.187Z","7.0.0":"2026-04-24T23:49:42.560Z","7.0.1-beta.0":"2026-05-06T21:57:58.636Z"},"readme":"[![](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)\n\n---\n\n<div align=\"center\">\n\t<br>\n\t<br>\n\t<img width=\"240\" alt=\"Ink\" src=\"media/logo.png\">\n\t<br>\n\t<br>\n\t<br>\n</div>\n\n> React for CLIs. Build and test your CLI output using components.\n\n[![Build Status](https://github.com/vadimdemedes/ink/workflows/test/badge.svg)](https://github.com/vadimdemedes/ink/actions)\n[![npm](https://img.shields.io/npm/dm/ink?logo=npm)](https://npmjs.com/package/ink)\n\nInk provides the same component-based UI building experience that React offers in the browser, but for command-line apps.\nIt uses [Yoga](https://github.com/facebook/yoga) to build Flexbox layouts in the terminal, so most CSS-like properties are available in Ink as well.\nIf you are already familiar with React, you already know Ink.\n\nSince Ink is a React renderer, all features of React are supported.\nHead over to the [React](https://reactjs.org) website for documentation on how to use it.\nOnly Ink's methods are documented in this readme.\n\n---\n\n<div align=\"center\">\n\t<p>\n\t\t<p>\n\t\t\t<sup>\n\t\t\t\t<a href=\"https://opencollective.com/vadimdemedes\">My open source work is supported by the community ❤️</a>\n\t\t\t</sup>\n\t\t</p>\n\t</p>\n</div>\n\n## Install\n\n```sh\nnpm install ink react\n```\n\n## Usage\n\n```jsx\nimport React, {useState, useEffect} from 'react';\nimport {render, Text} from 'ink';\n\nconst Counter = () => {\n\tconst [counter, setCounter] = useState(0);\n\n\tuseEffect(() => {\n\t\tconst timer = setInterval(() => {\n\t\t\tsetCounter(previousCounter => previousCounter + 1);\n\t\t}, 100);\n\n\t\treturn () => {\n\t\t\tclearInterval(timer);\n\t\t};\n\t}, []);\n\n\treturn <Text color=\"green\">{counter} tests passed</Text>;\n};\n\nrender(<Counter />);\n```\n\n<img src=\"media/demo.svg\" width=\"600\">\n\nFeel free to play around with the code and fork this Repl at [https://repl.it/@vadimdemedes/ink-counter-demo](https://repl.it/@vadimdemedes/ink-counter-demo).\n\n## Who's Using Ink?\n\n- [Claude Code](https://github.com/anthropics/claude-code) - An agentic coding tool made by Anthropic.\n- [Gemini CLI](https://github.com/google-gemini/gemini-cli) - An agentic coding tool made by Google.\n- [GitHub Copilot for CLI](https://githubnext.com/projects/copilot-cli) - Just say what you want the shell to do.\n- [Canva CLI](https://www.canva.dev/docs/apps/canva-cli/) - CLI for creating and managing Canva Apps.\n- [Cloudflare's Wrangler](https://github.com/cloudflare/wrangler2) - The CLI for Cloudflare Workers.\n- [Linear](https://linear.app) - Linear built an internal CLI for managing deployments, configs, and other housekeeping tasks.\n- [Gatsby](https://www.gatsbyjs.org) - Gatsby is a modern web framework for blazing-fast websites.\n- [tap](https://node-tap.org) - A Test-Anything-Protocol library for JavaScript.\n- [Terraform CDK](https://github.com/hashicorp/terraform-cdk) - Cloud Development Kit (CDK) for HashiCorp Terraform.\n- [Specify CLI](https://specifyapp.com) - Automate the distribution of your design tokens.\n- [Twilio's SIGNAL](https://github.com/twilio-labs/plugin-signal2020) - CLI for Twilio's SIGNAL conference. [Blog post](https://www.twilio.com/blog/building-conference-cli-in-react).\n- [Typewriter](https://github.com/segmentio/typewriter) - Generates strongly-typed [Segment](https://segment.com) analytics clients from arbitrary JSON Schema.\n- [Prisma](https://www.prisma.io) - The unified data layer for modern applications.\n- [Blitz](https://blitzjs.com) - The Fullstack React Framework.\n- [New York Times](https://github.com/nytimes/kyt) - NYT uses Ink's `kyt` - a toolkit that encapsulates and manages the configuration for web apps.\n- [tink](https://github.com/npm/tink) - A next-generation runtime and package manager.\n- [Inkle](https://github.com/jrr/inkle) - A Wordle game.\n- [loki](https://github.com/oblador/loki) - Visual regression testing tool for Storybook.\n- [Bit](https://github.com/teambit/bit) - Build, distribute, and collaborate on components.\n- [Remirror](https://github.com/remirror/remirror) - Your friendly, world-class editor toolkit.\n- [Prime](https://github.com/birkir/prime) - Open-source GraphQL CMS.\n- [emoj](https://github.com/sindresorhus/emoj) - Find relevant emojis.\n- [emma](https://github.com/maticzav/emma-cli) - Find and install npm packages easily.\n- [npm-check-extras](https://github.com/akgondber/npm-check-extras) - Check for outdated and unused dependencies, and run update/delete actions on selected ones.\n- [swiff](https://github.com/simple-integrated-marketing/swiff) - Multi-environment command-line tools for time-saving web developers.\n- [share](https://github.com/marionebl/share-cli) - Share files quickly.\n- [Kubelive](https://github.com/ameerthehacker/kubelive) - A CLI for Kubernetes that provides live data about the cluster and its resources.\n- [changelog-view](https://github.com/jdeniau/changelog-view) - View changelogs.\n- [cfpush](https://github.com/mamachanko/cfpush) - Interactive Cloud Foundry tutorial.\n- [startd](https://github.com/mgrip/startd) - Turn your React component into a web app.\n- [wiki-cli](https://github.com/hexrcs/wiki-cli) - Search Wikipedia and read article summaries.\n- [garson](https://github.com/goliney/garson) - Build interactive, config-based command-line interfaces.\n- [git-contrib-calendar](https://github.com/giannisp/git-contrib-calendar) - Display a contributions calendar for any Git repository.\n- [gitgud](https://github.com/GitGud-org/GitGud) - Interactive command-line GUI for Git.\n- [Autarky](https://github.com/pranshuchittora/autarky) - Find and delete old `node_modules` directories to free up disk space.\n- [fast-cli](https://github.com/sindresorhus/fast-cli) - Test your download and upload speeds.\n- [tasuku](https://github.com/privatenumber/tasuku) - Minimal task runner.\n- [mnswpr](https://github.com/mordv/mnswpr) - A Minesweeper game.\n- [lrn](https://github.com/krychu/lrn) - Learning by repetition.\n- [turdle](https://github.com/mynameisankit/turdle) - A Wordle game.\n- [Shopify CLI](https://github.com/Shopify/cli) - Build apps, themes, and storefronts for the Shopify platform.\n- [ToDesktop CLI](https://www.todesktop.com/electron) - All-in-one platform for building Electron apps.\n- [Walle](https://github.com/Pobepto/walle) - A full-featured crypto wallet for EVM networks.\n- [Sudoku](https://github.com/mrozio13pl/sudoku-in-terminal) - A Sudoku game.\n- [Sea Trader](https://github.com/zyishai/sea-trader) - A Taipan!-inspired trading simulator game.\n- [srtd](https://github.com/t1mmen/srtd) - Live-reloading SQL templates for Supabase projects.\n- [tweakcc](https://github.com/Piebald-AI/tweakcc) - Customize your Claude Code styling.\n- [argonaut](https://github.com/darksworm/argonaut) - Manage Argo CD resources.\n- [Qodo Command](https://github.com/qodo-ai/command) - Build, run, and manage AI agents.\n- [Nanocoder](https://github.com/nano-collective/nanocoder) - A community-built, local-first AI coding agent with multi-provider support.\n\n*(PRs welcome. Append new entries at the end. Repos must have 100+ stars and showcase Ink beyond a basic list picker.)*\n\n## Contents\n\n- [Getting Started](#getting-started)\n- [Components](#components)\n  - [`<Text>`](#text)\n  - [`<Box>`](#box)\n  - [`<Newline>`](#newline)\n  - [`<Spacer>`](#spacer)\n  - [`<Static>`](#static)\n  - [`<Transform>`](#transform)\n- [Hooks](#hooks)\n  - [`useInput`](#useinputinputhandler-options)\n  - [`useApp`](#useapp)\n  - [`useStdin`](#usestdin)\n  - [`useStdout`](#usestdout)\n  - [`useStderr`](#usestderr)\n  - [`useFocus`](#usefocusoptions)\n  - [`useFocusManager`](#usefocusmanager)\n- [API](#api)\n- [Testing](#testing)\n- [Using React Devtools](#using-react-devtools)\n- [Screen Reader Support](#screen-reader-support)\n- [Useful Components](#useful-components)\n- [Useful Hooks](#useful-hooks)\n- [Examples](#examples)\n\n## Getting Started\n\nUse [create-ink-app](https://github.com/vadimdemedes/create-ink-app) to quickly scaffold a new Ink-based CLI.\n\n```sh\nnpx create-ink-app my-ink-cli\n```\n\nAlternatively, create a TypeScript project:\n\n```sh\nnpx create-ink-app --typescript my-ink-cli\n```\n\n<details><summary>Manual JavaScript setup</summary>\n<p>\nInk requires the same Babel setup as you would do for regular React-based apps in the browser.\n\nSet up Babel with a React preset to ensure all examples in this readme work as expected.\nAfter [installing Babel](https://babeljs.io/docs/en/usage), install `@babel/preset-react` and insert the following configuration in `babel.config.json`:\n\n```sh\nnpm install --save-dev @babel/preset-react\n```\n\n```json\n{\n\t\"presets\": [\"@babel/preset-react\"]\n}\n```\n\nNext, create a file `source.js`, where you'll type code that uses Ink:\n\n```jsx\nimport React from 'react';\nimport {render, Text} from 'ink';\n\nconst Demo = () => <Text>Hello World</Text>;\n\nrender(<Demo />);\n```\n\nThen, transpile this file with Babel:\n\n```sh\nnpx babel source.js -o cli.js\n```\n\nNow you can run `cli.js` with Node.js:\n\n```sh\nnode cli\n```\n\nIf you don't like transpiling files during development, you can use [import-jsx](https://github.com/vadimdemedes/import-jsx) or [@esbuild-kit/esm-loader](https://github.com/esbuild-kit/esm-loader) to `import` a JSX file and transpile it on the fly.\n\n</p>\n</details>\n\nInk uses [Yoga](https://github.com/facebook/yoga), a Flexbox layout engine, to build great user interfaces for your CLIs using familiar CSS-like properties you've used when building apps for the browser.\nIt's important to remember that each element is a Flexbox container.\nThink of it as if every `<div>` in the browser had `display: flex`.\nSee [`<Box>`](#box) built-in component below for documentation on how to use Flexbox layouts in Ink.\nNote that all text must be wrapped in a [`<Text>`](#text) component.\n\n## Components\n\n### `<Text>`\n\nThis component can display text and change its style to make it bold, underlined, italic, or strikethrough.\n\n```jsx\nimport {render, Text} from 'ink';\n\nconst Example = () => (\n\t<>\n\t\t<Text color=\"green\">I am green</Text>\n\t\t<Text color=\"black\" backgroundColor=\"white\">\n\t\t\tI am black on white\n\t\t</Text>\n\t\t<Text color=\"#ffffff\">I am white</Text>\n\t\t<Text bold>I am bold</Text>\n\t\t<Text italic>I am italic</Text>\n\t\t<Text underline>I am underline</Text>\n\t\t<Text strikethrough>I am strikethrough</Text>\n\t\t<Text inverse>I am inversed</Text>\n\t</>\n);\n\nrender(<Example />);\n```\n\n**Note:** `<Text>` allows only text nodes and nested `<Text>` components inside of it. For example, `<Box>` component can't be used inside `<Text>`.\n\n#### color\n\nType: `string`\n\nChange text color.\nInk uses [chalk](https://github.com/chalk/chalk) under the hood, so all its functionality is supported.\n\n```jsx\n<Text color=\"green\">Green</Text>\n<Text color=\"#005cc5\">Blue</Text>\n<Text color=\"rgb(232, 131, 136)\">Red</Text>\n```\n\n<img src=\"media/text-color.jpg\" width=\"247\">\n\n#### backgroundColor\n\nType: `string`\n\nSame as `color` above, but for background.\n\n```jsx\n<Text backgroundColor=\"green\" color=\"white\">Green</Text>\n<Text backgroundColor=\"#005cc5\" color=\"white\">Blue</Text>\n<Text backgroundColor=\"rgb(232, 131, 136)\" color=\"white\">Red</Text>\n```\n\n<img src=\"media/text-backgroundColor.jpg\" width=\"226\">\n\n#### dimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the color (make it less bright).\n\n```jsx\n<Text color=\"red\" dimColor>\n\tDimmed Red\n</Text>\n```\n\n<img src=\"media/text-dimColor.jpg\" width=\"138\">\n\n#### bold\n\nType: `boolean`\\\nDefault: `false`\n\nMake the text bold.\n\n#### italic\n\nType: `boolean`\\\nDefault: `false`\n\nMake the text italic.\n\n#### underline\n\nType: `boolean`\\\nDefault: `false`\n\nMake the text underlined.\n\n#### strikethrough\n\nType: `boolean`\\\nDefault: `false`\n\nMake the text crossed with a line.\n\n#### inverse\n\nType: `boolean`\\\nDefault: `false`\n\nInvert background and foreground colors.\n\n```jsx\n<Text inverse color=\"yellow\">\n\tInversed Yellow\n</Text>\n```\n\n<img src=\"media/text-inverse.jpg\" width=\"138\">\n\n#### wrap\n\nType: `string`\\\nAllowed values: `wrap` `truncate` `truncate-start` `truncate-middle` `truncate-end`\\\nDefault: `wrap`\n\nThis property tells Ink to wrap or truncate text if its width is larger than the container.\nIf `wrap` is passed (the default), Ink will wrap text and split it into multiple lines.\nIf `truncate-*` is passed, Ink will truncate text instead, resulting in one line of text with the rest cut off.\n\n```jsx\n<Box width={7}>\n\t<Text>Hello World</Text>\n</Box>\n//=> 'Hello\\nWorld'\n\n// `truncate` is an alias to `truncate-end`\n<Box width={7}>\n\t<Text wrap=\"truncate\">Hello World</Text>\n</Box>\n//=> 'Hello…'\n\n<Box width={7}>\n\t<Text wrap=\"truncate-middle\">Hello World</Text>\n</Box>\n//=> 'He…ld'\n\n<Box width={7}>\n\t<Text wrap=\"truncate-start\">Hello World</Text>\n</Box>\n//=> '…World'\n```\n\n### `<Box>`\n\n`<Box>` is an essential Ink component to build your layout.\nIt's like `<div style=\"display: flex\">` in the browser.\n\n```jsx\nimport {render, Box, Text} from 'ink';\n\nconst Example = () => (\n\t<Box margin={2}>\n\t\t<Text>This is a box with margin</Text>\n\t</Box>\n);\n\nrender(<Example />);\n```\n\n#### Dimensions\n\n##### width\n\nType: `number` `string`\n\nWidth of the element in spaces.\nYou can also set it as a percentage, which will calculate the width based on the width of the parent element.\n\n```jsx\n<Box width={4}>\n\t<Text>X</Text>\n</Box>\n//=> 'X   '\n```\n\n```jsx\n<Box width={10}>\n\t<Box width=\"50%\">\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>Y</Text>\n</Box>\n//=> 'X    Y'\n```\n\n##### height\n\nType: `number` `string`\n\nHeight of the element in lines (rows).\nYou can also set it as a percentage, which will calculate the height based on the height of the parent element.\n\n```jsx\n<Box height={4}>\n\t<Text>X</Text>\n</Box>\n//=> 'X\\n\\n\\n'\n```\n\n```jsx\n<Box height={6} flexDirection=\"column\">\n\t<Box height=\"50%\">\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>Y</Text>\n</Box>\n//=> 'X\\n\\n\\nY\\n\\n'\n```\n\n##### minWidth\n\nType: `number`\n\nSets a minimum width of the element.\nPercentages aren't supported yet; see https://github.com/facebook/yoga/issues/872.\n\n##### minHeight\n\nType: `number`\n\nSets a minimum height of the element.\nPercentages aren't supported yet; see https://github.com/facebook/yoga/issues/872.\n\n#### Padding\n\n##### paddingTop\n\nType: `number`\\\nDefault: `0`\n\nTop padding.\n\n##### paddingBottom\n\nType: `number`\\\nDefault: `0`\n\nBottom padding.\n\n##### paddingLeft\n\nType: `number`\\\nDefault: `0`\n\nLeft padding.\n\n##### paddingRight\n\nType: `number`\\\nDefault: `0`\n\nRight padding.\n\n##### paddingX\n\nType: `number`\\\nDefault: `0`\n\nHorizontal padding. Equivalent to setting `paddingLeft` and `paddingRight`.\n\n##### paddingY\n\nType: `number`\\\nDefault: `0`\n\nVertical padding. Equivalent to setting `paddingTop` and `paddingBottom`.\n\n##### padding\n\nType: `number`\\\nDefault: `0`\n\nPadding on all sides. Equivalent to setting `paddingTop`, `paddingBottom`, `paddingLeft` and `paddingRight`.\n\n```jsx\n<Box paddingTop={2}>Top</Box>\n<Box paddingBottom={2}>Bottom</Box>\n<Box paddingLeft={2}>Left</Box>\n<Box paddingRight={2}>Right</Box>\n<Box paddingX={2}>Left and right</Box>\n<Box paddingY={2}>Top and bottom</Box>\n<Box padding={2}>Top, bottom, left and right</Box>\n```\n\n#### Margin\n\n##### marginTop\n\nType: `number`\\\nDefault: `0`\n\nTop margin.\n\n##### marginBottom\n\nType: `number`\\\nDefault: `0`\n\nBottom margin.\n\n##### marginLeft\n\nType: `number`\\\nDefault: `0`\n\nLeft margin.\n\n##### marginRight\n\nType: `number`\\\nDefault: `0`\n\nRight margin.\n\n##### marginX\n\nType: `number`\\\nDefault: `0`\n\nHorizontal margin. Equivalent to setting `marginLeft` and `marginRight`.\n\n##### marginY\n\nType: `number`\\\nDefault: `0`\n\nVertical margin. Equivalent to setting `marginTop` and `marginBottom`.\n\n##### margin\n\nType: `number`\\\nDefault: `0`\n\nMargin on all sides. Equivalent to setting `marginTop`, `marginBottom`, `marginLeft` and `marginRight`.\n\n```jsx\n<Box marginTop={2}>Top</Box>\n<Box marginBottom={2}>Bottom</Box>\n<Box marginLeft={2}>Left</Box>\n<Box marginRight={2}>Right</Box>\n<Box marginX={2}>Left and right</Box>\n<Box marginY={2}>Top and bottom</Box>\n<Box margin={2}>Top, bottom, left and right</Box>\n```\n\n#### Gap\n\n#### gap\n\nType: `number`\\\nDefault: `0`\n\nSize of the gap between an element's columns and rows. A shorthand for `columnGap` and `rowGap`.\n\n```jsx\n<Box gap={1} width={3} flexWrap=\"wrap\">\n\t<Text>A</Text>\n\t<Text>B</Text>\n\t<Text>C</Text>\n</Box>\n// A B\n//\n// C\n```\n\n#### columnGap\n\nType: `number`\\\nDefault: `0`\n\nSize of the gap between an element's columns.\n\n```jsx\n<Box columnGap={1}>\n\t<Text>A</Text>\n\t<Text>B</Text>\n</Box>\n// A B\n```\n\n#### rowGap\n\nType: `number`\\\nDefault: `0`\n\nSize of the gap between an element's rows.\n\n```jsx\n<Box flexDirection=\"column\" rowGap={1}>\n\t<Text>A</Text>\n\t<Text>B</Text>\n</Box>\n// A\n//\n// B\n```\n\n#### Flex\n\n##### flexGrow\n\nType: `number`\\\nDefault: `0`\n\nSee [flex-grow](https://css-tricks.com/almanac/properties/f/flex-grow/).\n\n```jsx\n<Box>\n\t<Text>Label:</Text>\n\t<Box flexGrow={1}>\n\t\t<Text>Fills all remaining space</Text>\n\t</Box>\n</Box>\n```\n\n##### flexShrink\n\nType: `number`\\\nDefault: `1`\n\nSee [flex-shrink](https://css-tricks.com/almanac/properties/f/flex-shrink/).\n\n```jsx\n<Box width={20}>\n\t<Box flexShrink={2} width={10}>\n\t\t<Text>Will be 1/4</Text>\n\t</Box>\n\t<Box width={10}>\n\t\t<Text>Will be 3/4</Text>\n\t</Box>\n</Box>\n```\n\n##### flexBasis\n\nType: `number` `string`\n\nSee [flex-basis](https://css-tricks.com/almanac/properties/f/flex-basis/).\n\n```jsx\n<Box width={6}>\n\t<Box flexBasis={3}>\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>Y</Text>\n</Box>\n//=> 'X  Y'\n```\n\n```jsx\n<Box width={6}>\n\t<Box flexBasis=\"50%\">\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>Y</Text>\n</Box>\n//=> 'X  Y'\n```\n\n##### flexDirection\n\nType: `string`\\\nAllowed values: `row` `row-reverse` `column` `column-reverse`\n\nSee [flex-direction](https://css-tricks.com/almanac/properties/f/flex-direction/).\n\n```jsx\n<Box>\n\t<Box marginRight={1}>\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>Y</Text>\n</Box>\n// X Y\n\n<Box flexDirection=\"row-reverse\">\n\t<Text>X</Text>\n\t<Box marginRight={1}>\n\t\t<Text>Y</Text>\n\t</Box>\n</Box>\n// Y X\n\n<Box flexDirection=\"column\">\n\t<Text>X</Text>\n\t<Text>Y</Text>\n</Box>\n// X\n// Y\n\n<Box flexDirection=\"column-reverse\">\n\t<Text>X</Text>\n\t<Text>Y</Text>\n</Box>\n// Y\n// X\n```\n\n##### flexWrap\n\nType: `string`\\\nAllowed values: `nowrap` `wrap` `wrap-reverse`\n\nSee [flex-wrap](https://css-tricks.com/almanac/properties/f/flex-wrap/).\n\n```jsx\n<Box width={2} flexWrap=\"wrap\">\n\t<Text>A</Text>\n\t<Text>BC</Text>\n</Box>\n// A\n// B C\n```\n\n```jsx\n<Box flexDirection=\"column\" height={2} flexWrap=\"wrap\">\n\t<Text>A</Text>\n\t<Text>B</Text>\n\t<Text>C</Text>\n</Box>\n// A C\n// B\n```\n\n##### alignItems\n\nType: `string`\\\nAllowed values: `flex-start` `center` `flex-end`\n\nSee [align-items](https://css-tricks.com/almanac/properties/a/align-items/).\n\n```jsx\n<Box alignItems=\"flex-start\">\n\t<Box marginRight={1}>\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>\n\t\tA\n\t\t<Newline/>\n\t\tB\n\t\t<Newline/>\n\t\tC\n\t</Text>\n</Box>\n// X A\n//   B\n//   C\n\n<Box alignItems=\"center\">\n\t<Box marginRight={1}>\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>\n\t\tA\n\t\t<Newline/>\n\t\tB\n\t\t<Newline/>\n\t\tC\n\t</Text>\n</Box>\n//   A\n// X B\n//   C\n\n<Box alignItems=\"flex-end\">\n\t<Box marginRight={1}>\n\t\t<Text>X</Text>\n\t</Box>\n\t<Text>\n\t\tA\n\t\t<Newline/>\n\t\tB\n\t\t<Newline/>\n\t\tC\n\t</Text>\n</Box>\n//   A\n//   B\n// X C\n```\n\n##### alignSelf\n\nType: `string`\\\nDefault: `auto`\\\nAllowed values: `auto` `flex-start` `center` `flex-end`\n\nSee [align-self](https://css-tricks.com/almanac/properties/a/align-self/).\n\n```jsx\n<Box height={3}>\n\t<Box alignSelf=\"flex-start\">\n\t\t<Text>X</Text>\n\t</Box>\n</Box>\n// X\n//\n//\n\n<Box height={3}>\n\t<Box alignSelf=\"center\">\n\t\t<Text>X</Text>\n\t</Box>\n</Box>\n//\n// X\n//\n\n<Box height={3}>\n\t<Box alignSelf=\"flex-end\">\n\t\t<Text>X</Text>\n\t</Box>\n</Box>\n//\n//\n// X\n```\n\n##### justifyContent\n\nType: `string`\\\nAllowed values: `flex-start` `center` `flex-end` `space-between` `space-around` `space-evenly`\n\nSee [justify-content](https://css-tricks.com/almanac/properties/j/justify-content/).\n\n```jsx\n<Box justifyContent=\"flex-start\">\n\t<Text>X</Text>\n</Box>\n// [X      ]\n\n<Box justifyContent=\"center\">\n\t<Text>X</Text>\n</Box>\n// [   X   ]\n\n<Box justifyContent=\"flex-end\">\n\t<Text>X</Text>\n</Box>\n// [      X]\n\n<Box justifyContent=\"space-between\">\n\t<Text>X</Text>\n\t<Text>Y</Text>\n</Box>\n// [X      Y]\n\n<Box justifyContent=\"space-around\">\n\t<Text>X</Text>\n\t<Text>Y</Text>\n</Box>\n// [  X   Y  ]\n\n<Box justifyContent=\"space-evenly\">\n\t<Text>X</Text>\n\t<Text>Y</Text>\n</Box>\n// [   X   Y   ]\n```\n\n#### Visibility\n\n##### display\n\nType: `string`\\\nAllowed values: `flex` `none`\\\nDefault: `flex`\n\nSet this property to `none` to hide the element.\n\n##### overflowX\n\nType: `string`\\\nAllowed values: `visible` `hidden`\\\nDefault: `visible`\n\nBehavior for an element's overflow in the horizontal direction.\n\n##### overflowY\n\nType: `string`\\\nAllowed values: `visible` `hidden`\\\nDefault: `visible`\n\nBehavior for an element's overflow in the vertical direction.\n\n##### overflow\n\nType: `string`\\\nAllowed values: `visible` `hidden`\\\nDefault: `visible`\n\nA shortcut for setting `overflowX` and `overflowY` at the same time.\n\n#### Borders\n\n##### borderStyle\n\nType: `string`\\\nAllowed values: `single` `double` `round` `bold` `singleDouble` `doubleSingle` `classic` | `BoxStyle`\n\nAdd a border with a specified style.\nIf `borderStyle` is `undefined` (the default), no border will be added.\nInk uses border styles from the [`cli-boxes`](https://github.com/sindresorhus/cli-boxes) module.\n\n```jsx\n<Box flexDirection=\"column\">\n\t<Box>\n\t\t<Box borderStyle=\"single\" marginRight={2}>\n\t\t\t<Text>single</Text>\n\t\t</Box>\n\n\t\t<Box borderStyle=\"double\" marginRight={2}>\n\t\t\t<Text>double</Text>\n\t\t</Box>\n\n\t\t<Box borderStyle=\"round\" marginRight={2}>\n\t\t\t<Text>round</Text>\n\t\t</Box>\n\n\t\t<Box borderStyle=\"bold\">\n\t\t\t<Text>bold</Text>\n\t\t</Box>\n\t</Box>\n\n\t<Box marginTop={1}>\n\t\t<Box borderStyle=\"singleDouble\" marginRight={2}>\n\t\t\t<Text>singleDouble</Text>\n\t\t</Box>\n\n\t\t<Box borderStyle=\"doubleSingle\" marginRight={2}>\n\t\t\t<Text>doubleSingle</Text>\n\t\t</Box>\n\n\t\t<Box borderStyle=\"classic\">\n\t\t\t<Text>classic</Text>\n\t\t</Box>\n\t</Box>\n</Box>\n```\n\n<img src=\"media/box-borderStyle.jpg\" width=\"521\">\n\nAlternatively, pass a custom border style like so:\n\n```jsx\n<Box\n\tborderStyle={{\n\t\ttopLeft: '↘',\n\t\ttop: '↓',\n\t\ttopRight: '↙',\n\t\tleft: '→',\n\t\tbottomLeft: '↗',\n\t\tbottom: '↑',\n\t\tbottomRight: '↖',\n\t\tright: '←'\n\t}}\n>\n\t<Text>Custom</Text>\n</Box>\n```\n\nSee example in [examples/borders](examples/borders/borders.tsx).\n\n##### borderColor\n\nType: `string`\n\nChange border color.\nA shorthand for setting `borderTopColor`, `borderRightColor`, `borderBottomColor`, and `borderLeftColor`.\n\n```jsx\n<Box borderStyle=\"round\" borderColor=\"green\">\n\t<Text>Green Rounded Box</Text>\n</Box>\n```\n\n<img src=\"media/box-borderColor.jpg\" width=\"228\">\n\n##### borderTopColor\n\nType: `string`\n\nChange top border color.\nAccepts the same values as [`color`](#color) in `<Text>` component.\n\n```jsx\n<Box borderStyle=\"round\" borderTopColor=\"green\">\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderRightColor\n\nType: `string`\n\nChange right border color.\nAccepts the same values as [`color`](#color) in `<Text>` component.\n\n```jsx\n<Box borderStyle=\"round\" borderRightColor=\"green\">\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderBottomColor\n\nType: `string`\n\nChange bottom border color.\nAccepts the same values as [`color`](#color) in `<Text>` component.\n\n```jsx\n<Box borderStyle=\"round\" borderBottomColor=\"green\">\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderLeftColor\n\nType: `string`\n\nChange left border color.\nAccepts the same values as [`color`](#color) in `<Text>` component.\n\n```jsx\n<Box borderStyle=\"round\" borderLeftColor=\"green\">\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderDimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the border color.\nA shorthand for setting `borderTopDimColor`, `borderBottomDimColor`, `borderLeftDimColor`, and `borderRightDimColor`.\n\n```jsx\n<Box borderStyle=\"round\" borderDimColor>\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderTopDimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the top border color.\n\n```jsx\n<Box borderStyle=\"round\" borderTopDimColor>\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderBottomDimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the bottom border color.\n\n```jsx\n<Box borderStyle=\"round\" borderBottomDimColor>\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderLeftDimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the left border color.\n\n```jsx\n<Box borderStyle=\"round\" borderLeftDimColor>\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderRightDimColor\n\nType: `boolean`\\\nDefault: `false`\n\nDim the right border color.\n\n```jsx\n<Box borderStyle=\"round\" borderRightDimColor>\n\t<Text>Hello world</Text>\n</Box>\n```\n\n##### borderTop\n\nType: `boolean`\\\nDefault: `true`\n\nDetermines whether top border is visible.\n\n##### borderRight\n\nType: `boolean`\\\nDefault: `true`\n\nDetermines whether right border is visible.\n\n##### borderBottom\n\nType: `boolean`\\\nDefault: `true`\n\nDetermines whether bottom border is visible.\n\n##### borderLeft\n\nType: `boolean`\\\nDefault: `true`\n\nDetermines whether left border is visible.\n\n#### Background\n\n##### backgroundColor\n\nType: `string`\n\nBackground color for the element.\n\nAccepts the same values as [`color`](#color) in the `<Text>` component.\n\n```jsx\n<Box flexDirection=\"column\">\n\t<Box backgroundColor=\"red\" width={20} height={5} alignSelf=\"flex-start\">\n\t\t<Text>Red background</Text>\n\t</Box>\n\n\t<Box backgroundColor=\"#FF8800\" width={20} height={3} marginTop={1} alignSelf=\"flex-start\">\n\t\t<Text>Orange background</Text>\n\t</Box>\n\n\t<Box backgroundColor=\"rgb(0, 255, 0)\" width={20} height={3} marginTop={1} alignSelf=\"flex-start\">\n\t\t<Text>Green background</Text>\n\t</Box>\n</Box>\n```\n\nThe background color fills the entire `<Box>` area and is inherited by child `<Text>` components unless they specify their own `backgroundColor`.\n\n```jsx\n<Box backgroundColor=\"blue\" alignSelf=\"flex-start\">\n\t<Text>Blue inherited </Text>\n\t<Text backgroundColor=\"yellow\">Yellow override </Text>\n\t<Text>Blue inherited again</Text>\n</Box>\n```\n\nBackground colors work with borders and padding:\n\n```jsx\n<Box backgroundColor=\"cyan\" borderStyle=\"round\" padding={1} alignSelf=\"flex-start\">\n\t<Text>Background with border and padding</Text>\n</Box>\n```\n\nSee example in [examples/box-backgrounds](examples/box-backgrounds/box-backgrounds.tsx).\n\n### `<Newline>`\n\nAdds one or more newline (`\\n`) characters.\nMust be used within `<Text>` components.\n\n#### count\n\nType: `number`\\\nDefault: `1`\n\nNumber of newlines to insert.\n\n```jsx\nimport {render, Text, Newline} from 'ink';\n\nconst Example = () => (\n\t<Text>\n\t\t<Text color=\"green\">Hello</Text>\n\t\t<Newline />\n\t\t<Text color=\"red\">World</Text>\n\t</Text>\n);\n\nrender(<Example />);\n```\n\nOutput:\n\n```\nHello\nWorld\n```\n\n### `<Spacer>`\n\nA flexible space that expands along the major axis of its containing layout.\nIt's useful as a shortcut for filling all the available space between elements.\n\nFor example, using `<Spacer>` in a `<Box>` with default flex direction (`row`) will position \"Left\" on the left side and will push \"Right\" to the right side.\n\n```jsx\nimport {render, Box, Text, Spacer} from 'ink';\n\nconst Example = () => (\n\t<Box>\n\t\t<Text>Left</Text>\n\t\t<Spacer />\n\t\t<Text>Right</Text>\n\t</Box>\n);\n\nrender(<Example />);\n```\n\nIn a vertical flex direction (`column`), it will position \"Top\" at the top of the container and push \"Bottom\" to the bottom.\nNote that the container needs to be tall enough to see this in effect.\n\n```jsx\nimport {render, Box, Text, Spacer} from 'ink';\n\nconst Example = () => (\n\t<Box flexDirection=\"column\" height={10}>\n\t\t<Text>Top</Text>\n\t\t<Spacer />\n\t\t<Text>Bottom</Text>\n\t</Box>\n);\n\nrender(<Example />);\n```\n\n### `<Static>`\n\n`<Static>` component permanently renders its output above everything else.\nIt's useful for displaying activity like completed tasks or logs - things that\ndon't change after they're rendered (hence the name \"Static\").\n\nIt's preferred to use `<Static>` for use cases like these when you can't know\nor control the number of items that need to be rendered.\n\nFor example, [Tap](https://github.com/tapjs/node-tap) uses `<Static>` to display\na list of completed tests. [Gatsby](https://github.com/gatsbyjs/gatsby) uses it\nto display a list of generated pages while still displaying a live progress bar.\n\n```jsx\nimport React, {useState, useEffect} from 'react';\nimport {render, Static, Box, Text} from 'ink';\n\nconst Example = () => {\n\tconst [tests, setTests] = useState([]);\n\n\tuseEffect(() => {\n\t\tlet completedTests = 0;\n\t\tlet timer;\n\n\t\tconst run = () => {\n\t\t\t// Fake 10 completed tests\n\t\t\tif (completedTests++ < 10) {\n\t\t\t\tsetTests(previousTests => [\n\t\t\t\t\t...previousTests,\n\t\t\t\t\t{\n\t\t\t\t\t\tid: previousTests.length,\n\t\t\t\t\t\ttitle: `Test #${previousTests.length + 1}`\n\t\t\t\t\t}\n\t\t\t\t]);\n\n\t\t\t\ttimer = setTimeout(run, 100);\n\t\t\t}\n\t\t};\n\n\t\trun();\n\n\t\treturn () => {\n\t\t\tclearTimeout(timer);\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<>\n\t\t\t{/* This part will be rendered once to the terminal */}\n\t\t\t<Static items={tests}>\n\t\t\t\t{test => (\n\t\t\t\t\t<Box key={test.id}>\n\t\t\t\t\t\t<Text color=\"green\">✔ {test.title}</Text>\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</Static>\n\n\t\t\t{/* This part keeps updating as state changes */}\n\t\t\t<Box marginTop={1}>\n\t\t\t\t<Text dimColor>Completed tests: {tests.length}</Text>\n\t\t\t</Box>\n\t\t</>\n\t);\n};\n\nrender(<Example />);\n```\n\n**Note:** `<Static>` only renders new items in the `items` prop and ignores items\nthat were previously rendered. This means that when you add new items to the `items`\narray, changes you make to previous items will not trigger a rerender.\n\nSee [examples/static](examples/static/static.tsx) for an example usage of `<Static>` component.\n\n#### items\n\nType: `Array`\n\nArray of items of any type to render using the function you pass as a component child.\n\n#### style\n\nType: `object`\n\nStyles to apply to a container of child elements.\nSee [`<Box>`](#box) for supported properties.\n\n```jsx\n<Static items={...} style={{padding: 1}}>\n\t{...}\n</Static>\n```\n\n#### children(item)\n\nType: `Function`\n\nFunction that is called to render every item in the `items` array.\nThe first argument is the item itself, and the second argument is the index of that item in the\n`items` array.\n\nNote that a `key` must be assigned to the root component.\n\n```jsx\n<Static items={['a', 'b', 'c']}>\n\t{(item, index) => {\n\t\t// This function is called for every item in ['a', 'b', 'c']\n\t\t// `item` is 'a', 'b', 'c'\n\t\t// `index` is 0, 1, 2\n\t\treturn (\n\t\t\t<Box key={index}>\n\t\t\t\t<Text>Item: {item}</Text>\n\t\t\t</Box>\n\t\t);\n\t}}\n</Static>\n```\n\n### `<Transform>`\n\nTransform a string representation of React components before they're written to output.\nFor example, you might want to apply a [gradient to text](https://github.com/sindresorhus/ink-gradient), [add a clickable link](https://github.com/sindresorhus/ink-link), or [create some text effects](https://github.com/sindresorhus/ink-big-text).\nThese use cases can't accept React nodes as input; they expect a string.\nThat's what the `<Transform>` component does: it gives you an output string of its child components and lets you transform it in any way.\n\n**Note:** `<Transform>` must be applied only to `<Text>` children components and shouldn't change the dimensions of the output; otherwise, the layout will be incorrect.\n\n```jsx\nimport {render, Transform} from 'ink';\n\nconst Example = () => (\n\t<Transform transform={output => output.toUpperCase()}>\n\t\t<Text>Hello World</Text>\n\t</Transform>\n);\n\nrender(<Example />);\n```\n\nSince the `transform` function converts all characters to uppercase, the final output rendered to the terminal will be \"HELLO WORLD\", not \"Hello World\".\n\nWhen the output wraps to multiple lines, it can be helpful to know which line is being processed.\n\nFor example, to implement a hanging indent component, you can indent all the lines except for the first.\n\n```jsx\nimport {render, Transform} from 'ink';\n\nconst HangingIndent = ({content, indent = 4, children, ...props}) => (\n\t<Transform\n\t\ttransform={(line, index) =>\n\t\t\tindex === 0 ? line : ' '.repeat(indent) + line\n\t\t}\n\t\t{...props}\n\t>\n\t\t{children}\n\t</Transform>\n);\n\nconst text =\n\t'WHEN I WROTE the following pages, or rather the bulk of them, ' +\n\t'I lived alone, in the woods, a mile from any neighbor, in a ' +\n\t'house which I had built myself, on the shore of Walden Pond, ' +\n\t'in Concord, Massachusetts, and earned my living by the labor ' +\n\t'of my hands only. I lived there two years and two months. At ' +\n\t'present I am a sojourner in civilized life again.';\n\n// Other text properties are allowed as well\nrender(\n\t<HangingIndent bold dimColor indent={4}>\n\t\t{text}\n\t</HangingIndent>\n);\n```\n\n#### transform(outputLine, index)\n\nType: `Function`\n\nFunction that transforms children output.\nIt accepts children and must return transformed children as well.\n\n##### children\n\nType: `string`\n\nOutput of child components.\n\n##### index\n\nType: `number`\n\nThe zero-indexed line number of the line that's currently being transformed.\n\n## Hooks\n\n### useInput(inputHandler, options?)\n\nThis hook is used for handling user input.\nIt's a more convenient alternative to using `useStdin` and listening for `data` events.\nThe callback you pass to `useInput` is called for each character when the user enters any input.\nHowever, if the user pastes text and it's more than one character, the callback will be called only once, and the whole string will be passed as `input`.\nYou can find a full example of using `useInput` at [examples/use-input](examples/use-input/use-input.tsx).\n\n```jsx\nimport {useInput} from 'ink';\n\nconst UserInput = () => {\n\tuseInput((input, key) => {\n\t\tif (input === 'q') {\n\t\t\t// Exit program\n\t\t}\n\n\t\tif (key.leftArrow) {\n\t\t\t// Left arrow key pressed\n\t\t}\n\t});\n\n\treturn …\n};\n```\n\n#### inputHandler(input, key)\n\nType: `Function`\n\nThe handler function that you pass to `useInput` receives two arguments:\n\n##### input\n\nType: `string`\n\nThe input that the program received.\n\n##### key\n\nType: `object`\n\nHandy information about a key that was pressed.\n\n###### key.leftArrow\n\n###### key.rightArrow\n\n###### key.upArrow\n\n###### key.downArrow\n\nType: `boolean`\\\nDefault: `false`\n\nIf an arrow key was pressed, the corresponding property will be `true`.\nFor example, if the user presses the left arrow key, `key.leftArrow` equals `true`.\n\n###### key.return\n\nType: `boolean`\\\nDefault: `false`\n\nReturn (Enter) key was pressed.\n\n###### key.escape\n\nType: `boolean`\\\nDefault: `false`\n\nEscape key was pressed.\n\n###### key.ctrl\n\nType: `boolean`\\\nDefault: `false`\n\nCtrl key was pressed.\n\n###### key.shift\n\nType: `boolean`\\\nDefault: `false`\n\nShift key was pressed.\n\n###### key.tab\n\nType: `boolean`\\\nDefault: `false`\n\nTab key was pressed.\n\n###### key.backspace\n\nType: `boolean`\\\nDefault: `false`\n\nBackspace key was pressed.\n\n###### key.delete\n\nType: `boolean`\\\nDefault: `false`\n\nDelete key was pressed.\n\n###### key.pageDown\n\n###### key.pageUp\n\nType: `boolean`\\\nDefault: `false`\n\nIf the Page Up or Page Down key was pressed, the corresponding property will be `true`.\nFor example, if the user presses Page Down, `key.pageDown` equals `true`.\n\n###### key.meta\n\nType: `boolean`\\\nDefault: `false`\n\n[Meta key](https://en.wikipedia.org/wiki/Meta_key) was pressed.\n\n#### options\n\nType: `object`\n\n##### isActive\n\nType: `boolean`\\\nDefault: `true`\n\nEnable or disable capturing of user input.\nUseful when there are multiple `useInput` hooks used at once to avoid handling the same input several times.\n\n### useApp()\n\n`useApp` is a React hook that exposes a method to manually exit the app (unmount).\n\n#### exit(error?)\n\nType: `Function`\n\nExit (unmount) the whole Ink app.\n\n##### error\n\nType: `Error`\n\nOptional error. If passed, [`waitUntilExit`](waituntilexit) will reject with that error.\n\n```js\nimport {useApp} from 'ink';\n\nconst Example = () => {\n\tconst {exit} = useApp();\n\n\t// Exit the app after 5 seconds\n\tuseEffect(() => {\n\t\tsetTimeout(() => {\n\t\t\texit();\n\t\t}, 5000);\n\t}, []);\n\n\treturn …\n};\n```\n\n### useStdin()\n\n`useStdin` is a React hook that exposes the stdin stream.\n\n#### stdin\n\nType: `stream.Readable`\\\nDefault: `process.stdin`\n\nThe stdin stream passed to `render()` in `options.stdin`, or `process.stdin` by default.\nUseful if your app needs to handle user input.\n\n```js\nimport {useStdin} from 'ink';\n\nconst Example = () => {\n\tconst {stdin} = useStdin();\n\n\treturn …\n};\n```\n\n#### isRawModeSupported\n\nType: `boolean`\n\nA boolean flag determining if the current `stdin` supports `setRawMode`.\nA component using `setRawMode` might want to use `isRawModeSupported` to nicely fall back in environments where raw mode is not supported.\n\n```jsx\nimport {useStdin} from 'ink';\n\nconst Example = () => {\n\tconst {isRawModeSupported} = useStdin();\n\n\treturn isRawModeSupported ? (\n\t\t<MyInputComponent />\n\t) : (\n\t\t<MyComponentThatDoesntUseInput />\n\t);\n};\n```\n\n#### setRawMode(isRawModeEnabled)\n\nType: `function`\n\n##### isRawModeEnabled\n\nType: `boolean`\n\nSee [`setRawMode`](https://nodejs.org/api/tty.html#tty_readstream_setrawmode_mode).\nInk exposes this function to be able to handle <kbd>Ctrl</kbd>+<kbd>C</kbd>, that's why you should use Ink's `setRawMode` instead of `process.stdin.setRawMode`.\n\n**Warning:** This function will throw unless the current `stdin` supports `setRawMode`. Use [`isRawModeSupported`](#israwmodesupported) to detect `setRawMode` support.\n\n```js\nimport {useStdin} from 'ink';\n\nconst Example = () => {\n\tconst {setRawMode} = useStdin();\n\n\tuseEffect(() => {\n\t\tsetRawMode(true);\n\n\t\treturn () => {\n\t\t\tsetRawMode(false);\n\t\t};\n\t});\n\n\treturn …\n};\n```\n\n### useStdout()\n\n`useStdout` is a React hook that exposes the stdout stream where Ink renders your app.\n\n#### stdout\n\nType: `stream.Writable`\\\nDefault: `process.stdout`\n\n```js\nimport {useStdout} from 'ink';\n\nconst Example = () => {\n\tconst {stdout} = useStdout();\n\n\treturn …\n};\n```\n\n#### write(data)\n\nWrite any string to stdout while preserving Ink's output.\nIt's useful when you want to display external information outside of Ink's rendering and ensure there's no conflict between the two.\nIt's similar to `<Static>`, except it can't accept components; it only works with strings.\n\n##### data\n\nType: `string`\n\nData to write to stdout.\n\n```js\nimport {useStdout} from 'ink';\n\nconst Example = () => {\n\tconst {write} = useStdout();\n\n\tuseEffect(() => {\n\t\t// Write a single message to stdout, above Ink's output\n\t\twrite('Hello from Ink to stdout\\n');\n\t}, []);\n\n\treturn …\n};\n```\n\nSee additional usage example in [examples/use-stdout](examples/use-stdout/use-stdout.tsx).\n\n### useStderr()\n\n`useStderr` is a React hook that exposes the stderr stream.\n\n#### stderr\n\nType: `stream.Writable`\\\nDefault: `process.stderr`\n\nStderr stream.\n\n```js\nimport {useStderr} from 'ink';\n\nconst Example = () => {\n\tconst {stderr} = useStderr();\n\n\treturn …\n};\n```\n\n#### write(data)\n\nWrite any string to stderr while preserving Ink's output.\n\nIt's useful when you want to display external information outside of Ink's rendering and ensure there's no conflict between the two.\nIt's similar to `<Static>`, except it can't accept components; it only works with strings.\n\n##### data\n\nType: `string`\n\nData to write to stderr.\n\n```js\nimport {useStderr} from 'ink';\n\nconst Example = () => {\n\tconst {write} = useStderr();\n\n\tuseEffect(() => {\n\t\t// Write a single message to stderr, above Ink's output\n\t\twrite('Hello from Ink to stderr\\n');\n\t}, []);\n\n\treturn …\n};\n```\n\n### useFocus(options?)\n\nA component that uses the `useFocus` hook becomes \"focusable\" to Ink, so when the user presses <kbd>Tab</kbd>, Ink will switch focus to this component.\nIf there are multiple components that execute the `useFocus` hook, focus will be given to them in the order in which these components are rendered.\nThis hook returns an object with an `isFocused` boolean property, which determines whether this component is focused.\n\n#### options\n\n##### autoFocus\n\nType: `boolean`\\\nDefault: `false`\n\nAuto-focus this component if there's no active (focused) component right now.\n\n##### isActive\n\nType: `boolean`\\\nDefault: `true`\n\nEnable or disable this component's focus, while still maintaining its position in the list of focusable components.\nThis is useful for inputs that are temporarily disabled.\n\n##### id\n\nType: `string`\\\nRequired: `false`\n\nSet a component's focus ID, which can be used to programmatically focus the component. This is useful for large interfaces with many focusable elements to avoid having to cycle through all of them.\n\n```jsx\nimport {render, useFocus, Text} from 'ink';\n\nconst Example = () => {\n\tconst {isFocused} = useFocus();\n\n\treturn <Text>{isFocused ? 'I am focused' : 'I am not focused'}</Text>;\n};\n\nrender(<Example />);\n```\n\nSee example in [examples/use-focus](examples/use-focus/use-focus.tsx) and [examples/use-focus-with-id](examples/use-focus-with-id/use-focus-with-id.tsx).\n\n### useFocusManager()\n\nThis hook exposes methods to enable or disable focus management for all components or manually switch focus to next or previous components.\n\n#### enableFocus()\n\nEnable focus management for all components.\n\n**Note:** You don't need to call this method manually unless you've disabled focus management. Focus management is enabled by default.\n\n```js\nimport {useFocusManager} from 'ink';\n\nconst Example = () => {\n\tconst {enableFocus} = useFocusManager();\n\n\tuseEffect(() => {\n\t\tenableFocus();\n\t}, []);\n\n\treturn …\n};\n```\n\n#### disableFocus()\n\nDisable focus management for all components.\nThe currently active component (if there's one) will lose its focus.\n\n```js\nimport {useFocusManager} from 'ink';\n\nconst Example = () => {\n\tconst {disableFocus} = useFocusManager();\n\n\tuseEffect(() => {\n\t\tdisableFocus();\n\t}, []);\n\n\treturn …\n};\n```\n\n#### focusNext()\n\nSwitch focus to the next focusable component.\nIf there's no active component right now, focus will be given to the first focusable component.\nIf the active component is the last in the list of focusable components, focus will be switched to the first focusable component.\n\n**Note:** Ink calls this method when user presses <kbd>Tab</kbd>.\n\n```js\nimport {useFocusManager} from 'ink';\n\nconst Example = () => {\n\tconst {focusNext} = useFocusManager();\n\n\tuseEffect(() => {\n\t\tfocusNext();\n\t}, []);\n\n\treturn …\n};\n```\n\n#### focusPrevious()\n\nSwitch focus to the previous focusable component.\nIf there's no active component right now, focus will be given to the first focusable component.\nIf the active component is the first in the list of focusable components, focus will be switched to the last focusable component.\n\n**Note:** Ink calls this method when user presses <kbd>Shift</kbd>+<kbd>Tab</kbd>.\n\n```js\nimport {useFocusManager} from 'ink';\n\nconst Example = () => {\n\tconst {focusPrevious} = useFocusManager();\n\n\tuseEffect(() => {\n\t\tfocusPrevious();\n\t}, []);\n\n\treturn …\n};\n```\n\n#### focus(id)\n\n##### id\n\nType: `string`\n\nSwitch focus to the component with the given [`id`](#id).\nIf there's no component with that ID, focus will be given to the next focusable component.\n\n```js\nimport {useFocusManager, useInput} from 'ink';\n\nconst Example = () => {\n\tconst {focus} = useFocusManager();\n\n\tuseInput(input => {\n\t\tif (input === 's') {\n\t\t\t// Focus the component with focus ID 'someId'\n\t\t\tfocus('someId');\n\t\t}\n\t});\n\n\treturn …\n};\n```\n\n### useIsScreenReaderEnabled()\n\nReturns whether a screen reader is enabled. This is useful when you want to render different output for screen readers.\n\n```jsx\nimport {useIsScreenReaderEnabled, Text} from 'ink';\n\nconst Example = () => {\n\tconst isScreenReaderEnabled = useIsScreenReaderEnabled();\n\n\treturn (\n\t\t<Text>\n\t\t\t{isScreenReaderEnabled\n\t\t\t\t? 'Screen reader is enabled'\n\t\t\t\t: 'Screen reader is disabled'}\n\t\t</Text>\n\t);\n};\n```\n\n## API\n\n#### render(tree, options?)\n\nReturns: [`Instance`](#instance)\n\nMount a component and render the output.\n\n##### tree\n\nType: `ReactElement`\n\n##### options\n\nType: `object`\n\n###### stdout\n\nType: `stream.Writable`\\\nDefault: `process.stdout`\n\nOutput stream where app will be rendered.\n\n###### stdin\n\nType: `stream.Readable`\\\nDefault: `process.stdin`\n\nInput stream where app will listen for input.\n\n###### stderr\n\nType: `stream.Writable`\\\nDefault: `process.stderr`\n\nError stream.\n\n###### exitOnCtrlC\n\nType: `boolean`\\\nDefault: `true`\n\nConfigure whether Ink should listen for Ctrl+C keyboard input and exit the app.\nThis is needed in case `process.stdin` is in [raw mode](https://nodejs.org/api/tty.html#tty_readstream_setrawmode_mode), because then Ctrl+C is ignored by default and the process is expected to handle it manually.\n\n###### patchConsole\n\nType: `boolean`\\\nDefault: `true`\n\nPatch console methods to ensure console output doesn't mix with Ink's output.\nWhen any of the `console.*` methods are called (like `console.log()`), Ink intercepts their output, clears the main output, renders output from the console method, and then rerenders the main output again.\nThat way, both are visible and don't overlap each other.\n\nThis functionality is powered by [patch-console](https://github.com/vadimdemedes/patch-console), so if you need to disable Ink's interception of output but want to build something custom, you can use that.\n\n###### onRender\n\nType: `({renderTime: number}) => void`\\\nDefault: `undefined`\n\nRuns the given callback after each render and re-render with a metrics object.\n\n###### debug\n\nType: `boolean`\\\nDefault: `false`\n\nIf `true`, each update will be rendered as separate output, without replacing the previous one.\n\n###### maxFps\n\nType: `number`\\\nDefault: `30`\n\nMaximum frames per second for render updates.\nThis controls how frequently the UI can update to prevent excessive re-rendering.\nHigher values allow more frequent updates but may impact performance.\nSetting it to a lower value may be useful for components that update very frequently, to reduce CPU usage.\n\n###### incrementalRendering\n\nType: `boolean`\\\nDefault: `false`\n\nEnable incremental rendering mode which only updates changed lines instead of redrawing the entire output.\nThis can reduce flickering and improve performance for frequently updating UIs.\n\n#### Instance\n\nThis is the object that `render()` returns.\n\n##### rerender(tree)\n\nReplace the previous root node with a new one or update props of the current root node.\n\n###### tree\n\nType: `ReactElement`\n\n```jsx\n// Update props of the root node\nconst {rerender} = render(<Counter count={1} />);\nrerender(<Counter count={2} />);\n\n// Replace root node\nconst {rerender} = render(<OldCounter />);\nrerender(<NewCounter />);\n```\n\n##### unmount()\n\nManually unmount the whole Ink app.\n\n```jsx\nconst {unmount} = render(<MyApp />);\nunmount();\n```\n\n##### waitUntilExit()\n\nReturns a promise that resolves when the app is unmounted.\n\n```jsx\nconst {unmount, waitUntilExit} = render(<MyApp />);\n\nsetTimeout(unmount, 1000);\n\nawait waitUntilExit(); // resolves after `unmount()` is called\n```\n\n##### clear()\n\nClear output.\n\n```jsx\nconst {clear} = render(<MyApp />);\nclear();\n```\n\n#### measureElement(ref)\n\nMeasure the dimensions of a particular `<Box>` element.\nReturns an object with `width` and `height` properties.\nThis function is useful when your component needs to know the amount of available space it has. You can use it when you need to change the layout based on the length of its content.\n\n**Note:** `measureElement()` returns correct results only after the initial render, when the layout has been calculated. Until then, `width` and `height` equal zero. It's recommended to call `measureElement()` in a `useEffect` hook, which fires after the component has rendered.\n\n##### ref\n\nType: `MutableRef`\n\nA reference to a `<Box>` element captured with the `ref` property.\nSee [Refs](https://reactjs.org/docs/refs-and-the-dom.html) for more information on how to capture references.\n\n```jsx\nimport {render, measureElement, Box, Text} from 'ink';\n\nconst Example = () => {\n\tconst ref = useRef();\n\n\tuseEffect(() => {\n\t\tconst {width, height} = measureElement(ref.current);\n\t\t// width = 100, height = 1\n\t}, []);\n\n\treturn (\n\t\t<Box width={100}>\n\t\t\t<Box ref={ref}>\n\t\t\t\t<Text>This box will stretch to 100 width</Text>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};\n\nrender(<Example />);\n```\n\n## Testing\n\nInk components are simple to test with [ink-testing-library](https://github.com/vadimdemedes/ink-testing-library).\nHere's a simple example that checks how component is rendered:\n\n```jsx\nimport React from 'react';\nimport {Text} from 'ink';\nimport {render} from 'ink-testing-library';\n\nconst Test = () => <Text>Hello World</Text>;\nconst {lastFrame} = render(<Test />);\n\nlastFrame() === 'Hello World'; //=> true\n```\n\nCheck out [ink-testing-library](https://github.com/vadimdemedes/ink-testing-library) for more examples and full documentation.\n\n## Using React Devtools\n\n![](media/devtools.jpg)\n\nInk supports [React Devtools](https://github.com/facebook/react/tree/master/packages/react-devtools) out of the box. To enable integration with React Devtools in your Ink-based CLI, first ensure you have installed the optional `react-devtools-core` dependency, and then run your app with the `DEV=true` environment variable:\n\n```sh\nDEV=true my-cli\n```\n\nThen, start React Devtools itself:\n\n```sh\nnpx react-devtools\n```\n\nAfter it starts, you should see the component tree of your CLI.\nYou can even inspect and change the props of components, and see the results immediately in the CLI, without restarting it.\n\n**Note**: You must manually quit your CLI via <kbd>Ctrl</kbd>+<kbd>C</kbd> after you're done testing.\n\n## Screen Reader Support\n\nInk has basic support for screen readers.\n\nTo enable it, you can either pass the `isScreenReaderEnabled` option to the `render` function or set the `INK_SCREEN_READER` environment variable to `true`.\n\nInk implements a small subset of functionality from the [ARIA specification](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA).\n\n```jsx\nrender(<MyApp />, {isScreenReaderEnabled: true});\n```\n\nWhen screen reader support is enabled, Ink will try its best to generate a screen-reader-friendly output.\n\nFor example, for this code:\n\n```jsx\n<Box aria-role=\"checkbox\" aria-state={{checked: true}}>\n\tAccept terms and conditions\n</Box>\n```\n\nInk will generate the following output for screen readers:\n\n```\n(checked) checkbox: Accept terms and conditions\n```\n\nYou can also provide a custom label for screen readers if you want to render something different for them.\n\nFor example, if you are building a progress bar, you can use `aria-label` to provide a more descriptive label for screen readers.\n\n```jsx\n<Box>\n\t<Box width=\"50%\" height={1} backgroundColor=\"green\" />\n\t<Text aria-label=\"Progress: 50%\">50%</Text>\n</Box>\n```\n\nIn the example above, the screen reader will read \"Progress: 50%\" instead of \"50%\".\n\n### `aria-label`\n\nType: `string`\n\nA label for the element for screen readers.\n\n### `aria-hidden`\n\nType: `boolean`\\\nDefault: `false`\n\nHide the element from screen readers.\n\n##### aria-role\n\nType: `string`\n\nThe role of the element.\n\nSupported values:\n- `button`\n- `checkbox`\n- `radio`\n- `radiogroup`\n- `list`\n- `listitem`\n- `menu`\n- `menuitem`\n- `progressbar`\n- `tab`\n- `tablist`\n- `timer`\n- `toolbar`\n- `table`\n\n##### aria-state\n\nType: `object`\n\nThe state of the element.\n\nSupported values:\n- `checked` (boolean)\n- `disabled` (boolean)\n- `expanded` (boolean)\n- `selected` (boolean)\n\n## Creating Components\n\nWhen building custom components, it's important to keep accessibility in mind. While Ink provides the building blocks, ensuring your components are accessible will make your CLIs usable by a wider audience.\n\n### General Principles\n\n- **Provide screen reader-friendly output:** Use the `useIsScreenReaderEnabled` hook to detect if a screen reader is active. You can then render more descriptive output for screen reader users.\n- **Leverage ARIA props:** For components that have a specific role (e.g., a checkbox or button), use the `aria-role`, `aria-state`, and `aria-label` props on `<Box>` and `<Text>` to provide semantic meaning to screen readers.\n\nFor a practical example of building an accessible component, see the [ARIA example](/examples/aria/aria.tsx).\n\n## Useful Components\n\n- [ink-text-input](https://github.com/vadimdemedes/ink-text-input) - Text input.\n- [ink-spinner](https://github.com/vadimdemedes/ink-spinner) - Spinner.\n- [ink-select-input](https://github.com/vadimdemedes/ink-select-input) - Select (dropdown) input.\n- [ink-link](https://github.com/sindresorhus/ink-link) - Link.\n- [ink-gradient](https://github.com/sindresorhus/ink-gradient) - Gradient color.\n- [ink-big-text](https://github.com/sindresorhus/ink-big-text) - Awesome text.\n- [ink-picture](https://github.com/endernoke/ink-picture) - Display images.\n- [ink-tab](https://github.com/jdeniau/ink-tab) - Tab.\n- [ink-color-pipe](https://github.com/LitoMore/ink-color-pipe) - Create color text with simpler style strings.\n- [ink-multi-select](https://github.com/karaggeorge/ink-multi-select) - Select one or more values from a list\n- [ink-divider](https://github.com/JureSotosek/ink-divider) - A divider.\n- [ink-progress-bar](https://github.com/brigand/ink-progress-bar) - Progress bar.\n- [ink-table](https://github.com/maticzav/ink-table) - Table.\n- [ink-ascii](https://github.com/hexrcs/ink-ascii) - Awesome text component with more font choices, based on Figlet.\n- [ink-markdown](https://github.com/cameronhunter/ink-markdown) - Render syntax highlighted Markdown.\n- [ink-quicksearch-input](https://github.com/Eximchain/ink-quicksearch-input) - Select component with fast, quicksearch-like navigation.\n- [ink-confirm-input](https://github.com/kevva/ink-confirm-input) - Yes/No confirmation input.\n- [ink-syntax-highlight](https://github.com/vsashyn/ink-syntax-highlight) - Code syntax highlighting.\n- [ink-form](https://github.com/lukasbach/ink-form) - Form.\n- [ink-task-list](https://github.com/privatenumber/ink-task-list) - Task list.\n- [ink-spawn](https://github.com/kraenhansen/ink-spawn) - Spawn child processes.\n- [ink-titled-box](https://github.com/mishieck/ink-titled-box) - Box with a title.\n- [ink-chart](https://github.com/pppp606/ink-chart) - Sparkline and bar chart.\n\n## Useful Hooks\n\n- [ink-use-stdout-dimensions](https://github.com/cameronhunter/ink-monorepo/tree/master/packages/ink-use-stdout-dimensions) - Subscribe to stdout dimensions.\n\n## Examples\n\nThe [`examples`](/examples) directory contains a set of real examples. You can run them with:\n\n```bash\nnpm run example examples/[example name]\n# e.g. npm run example examples/borders\n```\n\n- [Jest](examples/jest/jest.tsx) - Implementation of basic Jest UI.\n- [Counter](examples/counter/counter.tsx) - A simple counter that increments every 100ms.\n- [Form with validation](https://github.com/final-form/rff-cli-example) - Manage form state using [Final Form](https://github.com/final-form/final-form#-final-form).\n- [Borders](examples/borders/borders.tsx) - Add borders to the `<Box>` component.\n- [Suspense](examples/suspense/suspense.tsx) - Use React Suspense.\n- [Table](examples/table/table.tsx) - Renders a table with multiple columns and rows.\n- [Focus management](examples/use-focus/use-focus.tsx) - Use the `useFocus` hook to manage focus between components.\n- [User input](examples/use-input/use-input.tsx) - Listen for user input.\n- [Write to stdout](examples/use-stdout/use-stdout.tsx) - Write to stdout, bypassing main Ink output.\n- [Write to stderr](examples/use-stderr/use-stderr.tsx) - Write to stderr, bypassing main Ink output.\n- [Static](examples/static/static.tsx) - Use the `<Static>` component to render permanent output.\n- [Child process](examples/subprocess-output) - Renders output from a child process.\n\n## Maintainers\n\n- [Vadim Demedes](https://github.com/vadimdemedes)\n- [Sindre Sorhus](https://github.com/sindresorhus)","users":{}}