{"_id":"react-retro-display-tty-ansi-ascii","_rev":"39-fab8bd7e2e8de48eeb0e20d4ba356f3f","name":"react-retro-display-tty-ansi-ascii","dist-tags":{"latest":"0.1.234"},"versions":{"0.1.23":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.23","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.23","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"d8f2ec8818d41a067c2a7d8e79a94fa47f4c9d6e","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.23.tgz","fileCount":10,"integrity":"sha512-FQHTvIrRpnvrkydIst0Fuwty/AaHgLPevoTnh8MnSEvACtR8TAmoM2qStxlzkyEW8Hu0HHTrHmsTvqqW7zJ8Dw==","signatures":[{"sig":"MEUCIAI54KXtm/3Qcntw3QSREIK6qIwb9sCIsOPUWAyVM9IVAiEA3MMVKrT3KzpxQHWAxRQg4rkJ+duQjSxjBjb8sGluVjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1242871},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"f89e70c187300d97e28552766a912ed98e6ea6ed","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.23_1774429735078_0.6377397194952406","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.24","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.24","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"443788c90e83129f89c7b26ba2b920c0b1be5e51","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.24.tgz","fileCount":10,"integrity":"sha512-EIprtdG57WCQlFuq/SGo8RV3B5ERT/XyL+Wno05r8nQF4Uyk82KRmm7cD80h3mVfwo7FyU83BdR7hPZKJ4m9Qw==","signatures":[{"sig":"MEUCIA9/FTnVLyTkwBbjmwCfpQKYpdretQyjWKel89M/44klAiEAoAppr6LZKb4Vj9cTaUho6N1WE7FA9XPLiZWC+nTZB3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1242871},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"573fb0c820ad00ed18b0934e267047991ab17fcd","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.24_1774455397906_0.19241918831052618","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.25","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.25","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"26ceeb019b6e4d276c6f0a75b2ab58f84d4acb42","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.25.tgz","fileCount":12,"integrity":"sha512-4LtvzdMi9SXn5WBg/RpjIMdHqwyRKfwBVyvV1J3ck1EJWBy1Jti/9fgfkkoaCs+gvJ2nbHi2aZJA0Jyf7sPCXQ==","signatures":[{"sig":"MEUCIQDsRr85/O/1En6QraoXmGsIbAMcJVAb335SLb5IsRGshgIgXQcj9HjpiAFkqQvVZBj81GSjFyjU7KX6yCd4nPcT68s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1410100},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"ffec6c41acc436f59f756ae132333e7c890b827f","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.25_1774697824136_0.5841557762544709","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.26","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.26","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"e9e2d1d7b3a8585467b593df59e75ff5ecb217fa","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.26.tgz","fileCount":12,"integrity":"sha512-+1dGntQabzVbQ67Qt9qBdvI2vvSNuvg3DMbgclFgsvlEFkvJdRHjgiGzyI9qaCUm0fxXGKCU6ghGI4RhAr9Zew==","signatures":[{"sig":"MEUCIAs7OlFWN+nAecRFunRuCXN1lRcoHYojVMaglhbA24PmAiEArqmUrhYzMqfj6473vzN29ULkkCFQXlyJNYIpGsrEZ5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1410368},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"d5b344b0791bc8eb0db335240b66176840188670","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.26_1774717073321_0.258923581951374","host":"s3://npm-registry-packages-npm-production"}},"0.1.27":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.27","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.27","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"92863a873eafdf8109d66c34e28d17b0b7208ab5","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.27.tgz","fileCount":12,"integrity":"sha512-tkUsMO61mWJ3VKzLPrdB+FMw03i+2g7z+0v7FK1VmpF3AASpewoofGenqDwxZV+OW7/N7EKV7BGLKWuLgQy6yg==","signatures":[{"sig":"MEUCIC6RjK95FR0W6Sh+Q+VH/e97Iw7qPL2RUEneCZHxyKO2AiEA5EOe03BaeZ7f2nbp9GSbpuwHgeslm2Mta6VH+AqmMDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.27","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1413689},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"72922f0bf67f09271f9cecf6c0c2d4d0aea26cc2","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.27_1774753225029_0.06408666035096844","host":"s3://npm-registry-packages-npm-production"}},"0.1.28":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.28","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.28","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"2d1a654e78ca204dbf7e0c45aa70dbf2660cdb4e","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.28.tgz","fileCount":12,"integrity":"sha512-9jTkRLVDzUvwNCFz3BRy48UaecZAYGLC7ktup5NPWCuiP5AyWq0j7lA/QJYnm4IHasfI+7VxsfsgZKTDn76Wmg==","signatures":[{"sig":"MEUCIQCRSmIZgyQLOV9aYK3nDblYAPaOdRo5HUAa1+LfjCC97QIgfR7+cRe8+dYy+nImg7832uD2JKXUiRh8SXfaGTyacYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.28","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1414319},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"e77e3234c08f5c1c64111eaf8fa4c192bd05a8cc","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.28_1774759295876_0.959043026256436","host":"s3://npm-registry-packages-npm-production"}},"0.1.29":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.29","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.29","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"da264e76564d5f3d79838edcddc223f85b611636","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.29.tgz","fileCount":12,"integrity":"sha512-KGI7t1kn4kEEwGw7pmnqPUcNmVxALEUCsEvSoezDsw+aVfM5USwpdS7/XWAMBW48OOS+HySHY7rhDvJP6/PBEw==","signatures":[{"sig":"MEQCIFTF5rIsstIvaDnFgY0aXaqCporzTAFSywZhMFvhZOsvAiBAMTLaba8HrbtNCcTNit1a+BMgMGlzsYwp9OerjLkHdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.29","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415988},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0a66402c4f86f85e1fbd56bb7128e1b05380f53e","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.29_1774799316316_0.4581286083173548","host":"s3://npm-registry-packages-npm-production"}},"0.1.30":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.30","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.30","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"634a35af3cef4cbc92abae71b65e36fa0968ff66","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.30.tgz","fileCount":12,"integrity":"sha512-gvv6VgyR86qflc84IXKKiJMUAOvqnlmIn4OQPyUhVrYYUSuKcdIMf9CR7x02IWfT9FAL7xK53ZclnfEVMEKWGQ==","signatures":[{"sig":"MEUCIQCWeb5oW0dahmHGHPO5rkdM6Ygq9X00AM/s35v9HYhBiQIgfpjnwyKeubapdN7z9/j4mEmV0BCCKE170tbeKYzoscE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.30","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0897c6923db7fa9aa7827487fc5292e658af301f","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.30_1774799585269_0.029894512052838662","host":"s3://npm-registry-packages-npm-production"}},"0.1.31":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.31","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.31","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"10d7203b1aec8b49ad1257b27a68035bf0264ab2","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.31.tgz","fileCount":12,"integrity":"sha512-VpHoLofWx4hmHT4w9F6qTfLE9X1r1+reGXXUVtkqTdqr/6tDcJT3tdxnS6PIWDf3YrE2vqmqP6I45c+LAc2P3g==","signatures":[{"sig":"MEUCIQDFJlQXaiqDeFO/ccbkBixCAI57mSFZTbXrhEJCewKaZQIgKSKIt571LEmiYNPCz2lkEboUGMfF5vx3zmpdtN8uCV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.31","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"6c0c9b0ae829a83740fd0e9d06b01a8c51977563","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.31_1774883591490_0.27681882563214955","host":"s3://npm-registry-packages-npm-production"}},"0.1.32":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.32","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.32","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"a7764a00d6e73c84e85c4df3c09f20e9a689127c","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.32.tgz","fileCount":12,"integrity":"sha512-iPKn2hsLHmAlrpWH0SyTHGZbHlAacv+F+2YJRvptv+BASZ6tqkb9kxZRIwLZRAkJRUIq0+m1vkjDPOSzgX+iRw==","signatures":[{"sig":"MEYCIQCuDBMyFnMqf6i04309QcYOeEOj6kDBSpg7mN71n9S++gIhAMMvUJdQOS1+7IpsHZC/eLE6y4DXUF9DbMZqBV3/aNEq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.32","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1415989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0fd1c43dffd0e679f598a9628a00eededb8e41ef","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-bridge.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.32_1774893226122_0.19148082531006216","host":"s3://npm-registry-packages-npm-production"}},"0.1.37":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.37","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.37","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"956f824e2af9b1e2c6f2b310cbc5c9865a176bfc","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.37.tgz","fileCount":12,"integrity":"sha512-g/du6N1rAYHBaFsu5pmOWr0I/Mo9jdiwpBFGqDGNRAyH8fJyl1MejIusp6BeA7repj5qH4EzQzWAXT5ULg5BNA==","signatures":[{"sig":"MEYCIQChqN4zdOpWnN7ZkWMQJzAxGjNutTxJNiQ12pwY6rUSVgIhAMBJ1GQ7N6p/orTszK9DOi2fZyfE/3SZs8nET5e4sFBU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.37","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1438140},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"79ec159abaf0a3eda88a65d57a5656f3853af972","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.37_1775110783329_0.2279043390158937","host":"s3://npm-registry-packages-npm-production"}},"0.1.39":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.39","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.39","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"0757f59b9061cd59bae6fe01249247ab5e4d62c4","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.39.tgz","fileCount":12,"integrity":"sha512-SWckEhhj7Ub6+emFJd9gjM9SV38NoUeKEn+8hHS4nztKrzvyIK/4MYgOAm1mAHAXN4ieNfsZyWqDI4G8z+73Kw==","signatures":[{"sig":"MEUCIH7JeHnGJzCCT/M3STDP1xKXN1pZ4qjPrA0AUggyof8BAiEAz3AZrn96NgMmQDQ1ZfmXRiFgayEr4grTWHDUxBa/W68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.39","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1448344},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"c12ea25b90138d84104ec9d48d90a27e135c1d91","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.39_1775176302355_0.8877942150173426","host":"s3://npm-registry-packages-npm-production"}},"0.1.46":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.46","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.46","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"19ba006d4b70b8d4790820f9fd5c666404af25e4","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.46.tgz","fileCount":12,"integrity":"sha512-fAOgdGJ9uIS1wh1z1gxfSsrs2m7c6xs44yg/eBaQdqde27j+w2tRN0yRhxLH6x6FFX2tmNhtPGqE8zGJTYQhhw==","signatures":[{"sig":"MEQCIGvuAcKitArUtmGk5wZ+xnf5gL0/xjHxtA6CTDv3gB2iAiASrEKTRPiUGtN+KyOZTVBXAMJIM3ll3neW/W1AqaOQfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.46","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1464617},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"f9f8f31f8cf3ba56d192737b9d777dc8ec494ea8","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.46_1775526968710_0.12986899913799155","host":"s3://npm-registry-packages-npm-production"}},"0.1.47":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.47","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.47","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"c123edc56752f4113dcb78cf6c45a41bb8bf52d6","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.47.tgz","fileCount":12,"integrity":"sha512-WuzpQ6lhqNqFeOKjyDQ//7fbzk1Lh/jUInPVufniPMY/VKzwfp5qRNLPfX9bjPp4Jmu5bgmiKDSFa/O/nYcMaw==","signatures":[{"sig":"MEYCIQCW2Rv0kq1iaT4tVm8fYSSao/iDkQFJWFxUtR/jDVvxAQIhAKyXv00wvbvsda0Ag5oEPX5Zyw3eJPPGOuFFIRC21gIQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.47","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1464722},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"de9513b460e8d8e3a5d97796a3613b909ec214d7","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.47_1775535940372_0.9066544334310853","host":"s3://npm-registry-packages-npm-production"}},"0.1.63":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.63","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.63","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"8d3984d85b49e16fb44c019c8f3918e575741ff6","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.63.tgz","fileCount":12,"integrity":"sha512-yY1fQYz51GOTPLURLdc9UZz/2J9xnVTWjUydPX36S+JIfuHM4NVUZxMcDFcAMurbgCspXNqPi/0EY44xvAwkxQ==","signatures":[{"sig":"MEUCICYlctQxBGa3zuoJ1nZsJzQ4HKFUdayqFoHaMcrNd7tiAiEA4fD3o2bZMeQO0CxJCxT4FhTI34/3zQXnpGJFpWwDCS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.63","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1475021},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"47fb5de810c6635cbec2460b5ce0e6eeb2f69c83","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.63_1776441450282_0.23344480859235217","host":"s3://npm-registry-packages-npm-production"}},"0.1.64":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.64","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.64","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"394a56a454a5c918bc3fd35752f584bbb17f9ff0","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.64.tgz","fileCount":12,"integrity":"sha512-bDZyh5iA/m6YuaHLbsj75/y56rC8qeX/D1tWFw20IMg9K4H/6ZSO9aNe8E/M8GIjqJfKUbWw3THBGTthAXwucA==","signatures":[{"sig":"MEYCIQCHTG9yJefS5qdISq1fCbvYDjx0Z3ksvRQLp2sHqW/z+gIhANGLF419HcugKmnkqVm2ToPyZ42XnxvWoGEGEW9iIo4G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.64","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1479549},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"ea3771cd681256a366e580dd424e58fd01247c2c","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.64_1776477677616_0.07769280962604985","host":"s3://npm-registry-packages-npm-production"}},"0.1.65":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.65","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.65","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"ba32ab434f56d72f05707c1b254f687daaf409fb","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.65.tgz","fileCount":12,"integrity":"sha512-9an0pLpKUDkm/Evya+yaxL1XF3h7+ychQTvhFR9ZxpC2fKktItpl36246ezKS1PwujdXYjCJ47/SZmWJufCP5w==","signatures":[{"sig":"MEUCID1APzovFSRQmNUIg91xyU+gB0drr1QxlP+jDaEKbjLOAiEAlNBtgQYQVTXzK4fJOtwb3kljgolvddYn59DD/SaVKPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.65","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1483811},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"f0c1b84bb572b79f6f7b364cfafcef9d547311c7","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.65_1776487745726_0.5367657193427939","host":"s3://npm-registry-packages-npm-production"}},"0.1.67":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.67","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.67","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"a421d5692f241ab01a14ba4e0568aa933f3b2b0c","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.67.tgz","fileCount":12,"integrity":"sha512-BNhGbuB/SVPlHdmcbLs9NXjsOPL08jK7OiN17mmyjVJczwzGoExn7IVKd4WoGMCBH83LRbxeqsI6BruKtIzWWA==","signatures":[{"sig":"MEUCIEt3sq18ocXHTbAUO9vi0HSDhk1QIVzEA6jrheioyDorAiEA2T8uSmszKfamOMO6eb8zhaolJh82cdje+JSlG7v/NQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.67","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1523355},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"135240f1ba1969802365855c4677943be58901c9","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.67_1776518905721_0.157477461438275","host":"s3://npm-registry-packages-npm-production"}},"0.1.68":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.68","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.68","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"14aa85639e1a672dd83d2fe7b9d19f855933761c","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.68.tgz","fileCount":12,"integrity":"sha512-80whk45Tcv3JziLzkdBtfueSojq/mzNennQKPD/bj3ff2CPCBWADc5UDfzi25Z9pdBtAvm1IbfhG3RHNxqCqUg==","signatures":[{"sig":"MEUCICBPYfApSLYKcsenDBsNvZsHSkyCVbS5/I/i+5FNV+PgAiEAo8ow6NYvpFZhE+g6AHvaNO38DGfxP2IQcoy8C08o5mA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.68","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1523779},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"d9e60ea2acd5312014c260bf3b4aab0e3a70c222","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.68_1776555132059_0.18000766428125603","host":"s3://npm-registry-packages-npm-production"}},"0.1.70":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.70","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.70","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"81620a5693d25bfb48c9959be15159283acda47c","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.70.tgz","fileCount":12,"integrity":"sha512-yIHwO+AVgALHq5UG0C5ZXAfc5aBhbycYIi7WJJd8MbMX2TjZaLeFfbRNyozEdwLWLgiyTdmrmO+9NRMxfeKYbQ==","signatures":[{"sig":"MEQCIC//E1FdCR69AloOCoU7mJzVmyq4+V/csthHkOk+Dg4vAiA17Bkz+N8dM53FBsMeRYKSKrd6smsd31Hvp3iSKgovDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.70","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1524857},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"25ef466a15d3390d32e6dff6fcea68c5708ea879","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.70_1776577674786_0.6042569850360824","host":"s3://npm-registry-packages-npm-production"}},"0.1.75":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.75","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.75","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"238693daed79e9ae30d3f9d6bfc3ff28a9d81f35","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.75.tgz","fileCount":12,"integrity":"sha512-2Rk/IsecPdcARAC+AUVnr4mDIOTUHhGSVW/MWYioJBvlnwOfB2PKUH3uSAHzopsYLnJbF+tNGxK35gq6TvQnjQ==","signatures":[{"sig":"MEQCIDwDgKHV+UnI2TwNflJP6zodLawd24d2MyEzyUijbUHtAiA0F9wQD0m35JzZl4Sv0NxyJnHZQp/ph9lWENDBBkSoBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.75","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1526595},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"02c7bc78a651d5462b520d11f3df110a93c6c6cd","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.12.1","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.75_1776865325784_0.9395591127659972","host":"s3://npm-registry-packages-npm-production"}},"0.1.77":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.77","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.77","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"db766072d17a21af1a1e9aa71295a2b4ca7e4fb0","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.77.tgz","fileCount":12,"integrity":"sha512-xL5YRBGmhZULIngWNIOHjbDRN14TBxQzWjqipR+pm5CgHgApK+yWCeafDtf3rOoYfLFWRVY0OhFWqV92L7iXkA==","signatures":[{"sig":"MEUCIQD5yqBZNpzdbW99+to19KRYzpXHSPA4PkXqKMZNN72zQwIgS2Q9LvoTIXKvmS5R6crUVduQFR6Rm8rJRx/GnDQuma4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.77","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1530331},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"1b0420cd3f22aa3b940bf5106f7f266278e70fee","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"smysnk","email":"npm@psidox.com"},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.13.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.77_1776973668441_0.5054802795525926","host":"s3://npm-registry-packages-npm-production"}},"0.1.171":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.171","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.171","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"1b699d52a5c2ed8a1f4b7e6a45843bbf4ed59347","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.171.tgz","fileCount":13,"integrity":"sha512-ct9+Kxtys8O0sECd0yuM0feVgpo0zqPojcAcwFtupcPYsBKPKKAHOU816IOrTu4Zk4Z+5U/x7p4qilqua6OX3A==","signatures":[{"sig":"MEUCIFFeoqdjkYYxjaBFc0xvo/fq4oHo6nGLT9ua+wggniHUAiEA3NBaeG+E/FqBjGCPFZWSRXulVQBNKPcvMfNYsrHredg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.171","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1655500},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"76f68b42ca0a4cecd6f5b2057aceebb3c4965f7e","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.171_1784149452936_0.632624100275772","host":"s3://npm-registry-packages-npm-production"}},"0.1.173":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.173","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.173","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"ef568422bec6ed60317ce9d99f87840ce838d94e","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.173.tgz","fileCount":13,"integrity":"sha512-bOAdI5Pz0KWWLFxndrsksg8lxw7jKJp+D7XVKvfzSTFvt8exsylopcJK8N8dJZ14V97AM40OjV+Q161E3zpHQA==","signatures":[{"sig":"MEUCIEhP69GSQB/etQJJgyxIO4bvnlzqR7v6qz0fECQbXzrWAiEA+G+I/C/RWVBlOrfnF9a5mXjw90jYAZ0MntT1MSUA6Bw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.173","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1735083},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"57ece59e8cb95ffa247bb19f57c9af7b6e43a87c","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node --test ./e2e/*.test.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.173_1784238679209_0.06405173057971458","host":"s3://npm-registry-packages-npm-production"}},"0.1.177":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.177","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.177","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"45b435a756ba6eea2e51256750846c86ba2bbb2c","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.177.tgz","fileCount":13,"integrity":"sha512-ZCKGqvtXCTIAYWgtmbRLcwIQKR1cnfbtn6QVVwNq2B0cGAh6jT7XWjJVIWeVRm55UCJJz5bxoDzElAXwp6YbsA==","signatures":[{"sig":"MEYCIQDv4RD4lm+RcYuEufKjBOqxMvIBB24RlxpwSQ+oxm6GcAIhAJfhbKST7uLiMHTIscuymPhBsqSRkEIxyYjeSKoa5Nob","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.177","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1851604},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"f0ebad05f99fe513280d2830c7478c1c2365b21c","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.177_1784330946033_0.34707465808852267","host":"s3://npm-registry-packages-npm-production"}},"0.1.178":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.178","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.178","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"804d46f9414e2b489616209cfbd3372ac6fa8edb","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.178.tgz","fileCount":13,"integrity":"sha512-M7sXxFRC4j9RpSQ+ak+gKohlqi9AVn2q4gBmfZRLeqB1tmcAn7zm1D70tSblARQZq6SJGECo/JVMK+nbstrDEA==","signatures":[{"sig":"MEUCIQDzaz8rE99nTA+oMwDHq6cE4oK7AeaEl1AC4tJW7i/gRAIgQFRm29hdxnr4aAdI3+hZDt863JC0lkOS2wSVlcYIXww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.178","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1702341},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"be6193c1bfc0af84b394a6ee2229ff6214e07223","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.178_1784332977595_0.3906156327501069","host":"s3://npm-registry-packages-npm-production"}},"0.1.179":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.179","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.179","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"06bdbf1e3cb1f232b2ce658590cdb9c4cff5c249","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.179.tgz","fileCount":13,"integrity":"sha512-R0c3kEAwfZNblxufgdUpp6v+8GUHydH83kOd1c3YLflSt3J7S4jbm9jCUOy7681CurXPMsn513+oL613Xz1y9g==","signatures":[{"sig":"MEYCIQDdM4mMc/oRJzfPvGIy39fQG+6P6Mb0TTLbL4dM1tpYUQIhAPhsFJfXlnUTplQdmy2g7WG9Wdekwg+w3eC5u5yYDhJw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.179","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1705085},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"517028e37cbc779550ab1e70feb179aa3655649e","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.179_1784333873807_0.739133185924711","host":"s3://npm-registry-packages-npm-production"}},"0.1.181":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.181","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.181","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"5988a9d8f050d9b19a6fd9e506b34b4184624da3","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.181.tgz","fileCount":13,"integrity":"sha512-8wn6cRZb71o7ccbu/BYtt6fA3ANaEzp7yK42kRfgq4UK009WjuMBqRCPJy1Y3AnSb9Z5dnEQ5yGJyIwwLp6WIg==","signatures":[{"sig":"MEQCIC1frx4ZbBE4AeEdimbooOVDuKcD5R9GSKj8j8SNlDtXAiA3E8SmZz4hc3Whg1o9pSSzQNNaq+7fdtpiQ6DnyubDWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.181","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1711231},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"7e7a3118616b7008fb891aeaeb0f8f6bd7588f90","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.181_1784335064397_0.7303623928326037","host":"s3://npm-registry-packages-npm-production"}},"0.1.182":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.182","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.182","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"e28cd5fd554ef001028d8dea470f53560adf9c30","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.182.tgz","fileCount":13,"integrity":"sha512-ypQf889AKbrGSm8HFq1iQ5u/hhzsB17qkhNraeiUbVBpaulLmkqKe4YPjWFuAgCQ/UeFiZULSOkdBIWCG6TIjA==","signatures":[{"sig":"MEUCIAvbWdr/R2elvxZP34twjXy4r9ifDWRNAQrLWdRwJ4IcAiEAl69KtdhGtIMKgfdDL3a6nAAzmV0ajFNE1kC064937jE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.182","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1717805},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"a3c4a08eee2e690bd2a9eaa6effdcfb34c28064d","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.182_1784335607180_0.6591577516839731","host":"s3://npm-registry-packages-npm-production"}},"0.1.183":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.183","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.183","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"896cb928242328f83a6cfe0363778ef91b85cc43","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.183.tgz","fileCount":13,"integrity":"sha512-XNNm/jifnKKfTxGs9cdESLTpqpKlgKMAddkT6heo3hMqV/qxfRKfso/AF1KpsvWjTNkFFLnke1AO99D7rJNDkQ==","signatures":[{"sig":"MEQCIB+AGKl4s6LCkIMQQu3Pdley9nK20gDmNCZhg2Aop+5aAiBtGssJhvUC3IO66BRv15oDNwyObqtVRVq3daMZXWSs+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.183","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1723405},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"cde55e340566d3734079620d0d6ac0baa0885c9a","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.183_1784337462816_0.2513844328488526","host":"s3://npm-registry-packages-npm-production"}},"0.1.184":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.184","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.184","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"ac7c710fd8851262210f635c208487e3992260b7","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.184.tgz","fileCount":13,"integrity":"sha512-XfCbLNtv6k1yka/CXnaQiTdcxAjxr+KWzsK+QcR2VokGy65qOpkM9D++tdO5d5KPIh5MIc01q5MXVoKD92MWsA==","signatures":[{"sig":"MEUCIQDLSbrB0N9FumI2qsgo1YJO55yNEz2iUNIddYxdkcHIpQIgQUZ3eKLf+rHYTSyYbLyRwI8ITWjPdJPRskpOIlby8ZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.184","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1741941},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"d77507e1bc2ef86b02a959b74878edf5ed030a14","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.184_1784339749095_0.2998772544190098","host":"s3://npm-registry-packages-npm-production"}},"0.1.187":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.187","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.187","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"8671b8589e9462f29f8d02956eb6b32080747a77","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.187.tgz","fileCount":13,"integrity":"sha512-3tHrd9UBsl6tlAu6xU1ws0rIC2QVimjaj+V3sd8Ty7zZfF2AnOF4p8At0BZwNLhfNOvGVNG5ewYNKevXSNGj1Q==","signatures":[{"sig":"MEYCIQCE5S8u69cPUUWoK193z3A80PMJmHbbjBODZgfVM+MaugIhAPZnFPgSKptAlL7J49zDA9HiReatYHQ6DDXHyuMGJKiq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.187","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1741858},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"25fa998a6c5f9b22da333ce20a7ea27782d1ef27","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.187_1784392108064_0.07727915981084155","host":"s3://npm-registry-packages-npm-production"}},"0.1.189":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.189","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.189","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"02bff0551c2a0ab665308a88d6db4502ebc4ca38","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.189.tgz","fileCount":13,"integrity":"sha512-zOYu+i+tKcywhdmFxaK4KDeo/vRuZmO57rtXv4qXcKFyVpLiNa12VRNGkzeNdK+YMkuBn57qzRNMqPfsPAcPqQ==","signatures":[{"sig":"MEUCIGFq41ue0YuHixxexwYRm6BkEnHll+ZwBVolwnO0kqXJAiEA4MHahK6Jo70Al6qfgpx80CKnllCotofg/3gbyK3vHtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.189","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1752549},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"e76e4344bbd456edca65a1935122125265139194","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.189_1784472950591_0.10344661260567656","host":"s3://npm-registry-packages-npm-production"}},"0.1.190":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.190","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.190","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"e244d27bae340309cf6f2a5c0a1378651552f740","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.190.tgz","fileCount":13,"integrity":"sha512-xgEUOK6Ko7sl8blhvGZzTSNRVr0LKmBhYm7GyQAEzgDO/rd4ReXLBGVM863chlUnV41hyeOIwK9ZjSVCzOrYDA==","signatures":[{"sig":"MEUCIBqOaDKGI7p58nhwB8hriF8gRFIkLk+2JCNWH25fr4M6AiEAz2pYzbj3bPH5zWeek4qWRNdwajQ/5uNHoUgKxFou1Ic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.190","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1752625},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0aaa4801c871c2bf474a91b123ab3847f56b92ff","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.18.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.190_1784489319385_0.15845659835691017","host":"s3://npm-registry-packages-npm-production"}},"0.1.226":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.226","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.226","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"7d076cb29e2b0be7e6b0084e2c83078b192629a9","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.226.tgz","fileCount":13,"integrity":"sha512-wkgGVdOLXK97wvjJ1o/cojiEV3F3FJboL8tZLmXIAvHfT72O1+NSBvzMiNXx8IhCsz9ahY5UJO4BbRpeM4META==","signatures":[{"sig":"MEUCIDP+dBXhSAx+5Tv3VaWK3o2J9yJqDVVio6cPckeoDPHUAiEAnzV5lzr9fN9ckTILNJD3BSMHWVjldmn2pkm/cJWK55s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.226","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1763575},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"498e743b5ed39c6e13a990ba792882701803ea81","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn build && yarn examples:typecheck && yarn readme:examples:check && yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","examples:typecheck":"tsc -p ./examples/readme/tsconfig.json --noEmit","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:examples:sync":"node ./scripts/sync-readme-examples.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","readme:examples:check":"node ./scripts/check-readme-examples.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.19.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.226_1787491984374_0.31291338703106875","host":"s3://npm-registry-packages-npm-production"}},"0.1.228":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.228","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.228","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"6dc322f1ed78fd00039bcdcdbd3a6193f976ba21","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.228.tgz","fileCount":13,"integrity":"sha512-eZ/7+m/BA28UufJmtcMGUzCbaLP9SaICc6legyoUbvyML3gnbm3V1pNE5ZozlcltBa5vQfI+K9OEp217kl93dQ==","signatures":[{"sig":"MEQCIE5ewkGzc3t85If3dFVEZkCt0+gVo1XEqkd/R2ebMI7CAiBfYTAe7Zxr/m1IjGR8udxdekTFCUqBuB0lzkJFKeYvzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.228","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1763575},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0e1b820c86a53defa085efb475e359f60cf3be48","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn build && yarn examples:typecheck && yarn readme:examples:check && yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","examples:typecheck":"tsc -p ./examples/readme/tsconfig.json --noEmit","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:examples:sync":"node ./scripts/sync-readme-examples.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","readme:examples:check":"node ./scripts/check-readme-examples.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.19.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.228_1787585212874_0.5215110203507933","host":"s3://npm-registry-packages-npm-production"}},"0.1.230":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.230","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.230","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"5c828ca82e23f40a7b08e4245c2be33954047ae6","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.230.tgz","fileCount":13,"integrity":"sha512-5MI7UUxeThGZdbps7aZtdMhp2s+9ToQdr8WCCLW6EppIRVDQckb0pR4eGsXSaXQv2o+GDwa+MGA/X0u4P7+nCQ==","signatures":[{"sig":"MEUCIDMGSM0aK8Oy7jl1Uk37FVjOswH2VqqDEEymcaO8kArsAiEAnkpB6OjkkuEPP+JtDRdCFWrwfz7iNlau9U8eCspr6GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.230","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1763804},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"23bd33a4fb423f7180867a10e524aa2a8d2a9b03","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn build && yarn examples:typecheck && yarn readme:examples:check && yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","examples:typecheck":"tsc -p ./examples/readme/tsconfig.json --noEmit","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:examples:sync":"node ./scripts/sync-readme-examples.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","readme:examples:check":"node ./scripts/check-readme-examples.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","storybook:publish:build":"STORYBOOK_BASE_PATH=/projects/react-retro-screen/storybook/ storybook build && node ./scripts/write-storybook-build-metadata.mjs","storybook:publish:check":"node ./scripts/check-storybook-publication.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.19.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.230_1787594813391_0.9666572443649546","host":"s3://npm-registry-packages-npm-production"}},"0.1.231":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.231","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","_id":"react-retro-display-tty-ansi-ascii@0.1.231","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"dist":{"shasum":"d84bbbff156450ed4454fa7eaf26b55ee12cda48","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.231.tgz","fileCount":13,"integrity":"sha512-4J9BvEuF0ttHL5bkx31aEd/JAkySGMCg2VjSmkbat01PuKIlQOTJVDpkf0gLGs0uaKf+wRHbKels2srcU11lUg==","signatures":[{"sig":"MEQCIHTmXOki3+eHssK9/dL1yGHtpu1sAtlNA8LFw6wuneTHAiBDBqPLN8Ba0qBzvFdFEnOwN4I3RvW3orLHGEkVi7bk4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.231","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1763797},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"11bbd3affa0560d9ed112b6e01914648adb26e9c","scripts":{"test":"yarn test:station","build":"tsup","clean":"node ./scripts/clean-dist.mjs","test:ci":"yarn build && yarn examples:typecheck && yarn readme:examples:check && yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e":"storybook build && yarn test:e2e:built","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","storybook":"storybook dev -p 6006","test:unit":"vitest run","test:watch":"vitest","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test:coverage":"yarn test:station:coverage","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","storybook:build":"storybook build","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","examples:typecheck":"tsc -p ./examples/readme/tsconfig.json --noEmit","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","readme:examples:sync":"node ./scripts/sync-readme-examples.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","readme:examples:check":"node ./scripts/check-readme-examples.mjs","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","storybook:publish:build":"STORYBOOK_BASE_PATH=/projects/react-retro-screen/storybook/ storybook build && node ./scripts/write-storybook-build-metadata.mjs","storybook:publish:check":"node ./scripts/check-storybook-publication.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"repository":{"url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git","type":"git"},"_npmVersion":"11.19.0","description":"A reusable React retro display component with value, terminal, and prompt modes.","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.13.0","devDependencies":{"ws":"^8.18.3","tsup":"^8.5.0","vite":"^7.1.5","jsdom":"^26.1.0","react":"^19.2.0","vitest":"^3.2.4","node-pty":"^1.0.0","@types/ws":"^8","react-dom":"^19.2.0","storybook":"^10.2.19","typescript":"^5.9.2","@types/react":"^19.1.13","@xterm/headless":"^6.0.0","playwright-core":"^1.55.0","@types/react-dom":"^19.1.9","@vitest/coverage-v8":"^3.2.4","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^5.0.2","@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.231_1787598214826_0.9154475489023115","host":"s3://npm-registry-packages-npm-production"}},"0.1.234":{"name":"react-retro-display-tty-ansi-ascii","version":"0.1.234","description":"A reusable React retro display component with value, terminal, and prompt modes.","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git"},"homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"type":"module","packageManager":"yarn@4.13.0","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/styles.css"},"sideEffects":["*.css"],"scripts":{"build":"tsup","examples:typecheck":"tsc -p ./examples/readme/tsconfig.json --noEmit","readme:examples:sync":"node ./scripts/sync-readme-examples.mjs","readme:examples:check":"node ./scripts/check-readme-examples.mjs","tty:server":"node ./examples/node-tty-websocket-server/server.mjs","perf:terminal":"yarn build && node ./scripts/benchmark-terminal-bridge.mjs","perf:bitmap":"yarn storybook:build && node ./scripts/benchmark-bitmap-renderer.mjs","perf:ansi-byte-playback":"yarn build && node ./scripts/benchmark-ansi-byte-playback.mjs","storybook":"storybook dev -p 6006","storybook:build":"storybook build","storybook:publish:build":"STORYBOOK_BASE_PATH=/projects/react-retro-screen/storybook/ storybook build && node ./scripts/write-storybook-build-metadata.mjs","storybook:publish:check":"node ./scripts/check-storybook-publication.mjs","demo:webp":"storybook build && node ./scripts/generate-demo-webp.mjs","ansi:gallery:build":"node ./scripts/build-largest-ansi-gallery.mjs --count 200","oracle:ansilove:build":"node ./scripts/ansilove/build-native-oracle.mjs","oracle:ansilove:verify":"node ./scripts/ansilove/verify-native-oracle.mjs","test:ansilove:native":"yarn oracle:ansilove:build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-native-contract.test.mjs","test:ansilove:focused-parity":"yarn build && yarn oracle:ansilove:verify && yarn node --test ./e2e/ansilove-focused-parity.test.mjs","readme:videos:cookie":"node ./scripts/print-github-cookie.mjs","readme:videos":"node ./scripts/upload-readme-videos.mjs","test":"yarn test:station","test:coverage":"yarn test:station:coverage","test:conformance":"vitest run src/core/terminal/conformance/*.test.ts","test:tty":"vitest run src/core/terminal/websocket-session.tty.test.ts","test:station":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --no-coverage","test:station:coverage":"npx --yes @test-station/cli@0.2.40 run --config ./test-station.config.mjs --coverage","test:unit":"vitest run","report:ansi-display":"node ./scripts/generate-ansi-display-support-report.mjs","check:ansi-display-report":"node ./scripts/generate-ansi-display-support-report.mjs --check","test:ci":"yarn build && yarn examples:typecheck && yarn readme:examples:check && yarn test:conformance && yarn test:e2e && yarn check:ansi-display-report","test:e2e:ansi-display":"storybook build && yarn test:e2e:ansi-display:built","test:e2e:ansi-display:built":"yarn node --test ./e2e/ansi-display-fidelity.test.mjs ./e2e/cursor-position.test.mjs ./e2e/display-buffer.test.mjs","test:ansi:fidelity":"yarn test:conformance && yarn storybook:build && yarn test:e2e:ansi-display:built && yarn node --test ./e2e/tty-*.test.mjs && yarn check:ansi-display-report","test:e2e:ansi-byte-parity:large":"storybook build && yarn node --test ./e2e/ansi-byte-parity-large.test.mjs","test:ansi:byte-parity:large:full":"ANSI_BYTE_PARITY_LARGE=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-large.test.ts","test:ansi:gallery:scheduled":"ANSI_GALLERY_PARITY=1 vitest run src/core/terminal/conformance/run-real-tty-byte-parity-gallery.test.ts","test:e2e:ansi-gallery:scheduled":"storybook build && ANSI_GALLERY_BROWSER_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-gallery.test.mjs","test:e2e:ansi-byte-parity:nightly":"storybook build && ANSI_BROWSER_NIGHTLY_PARITY=1 yarn node --test ./e2e/ansi-byte-parity-nightly.test.mjs","test:e2e:layout":"storybook build && yarn node ./e2e/layout-stability.mjs","test:e2e:docs-preview":"storybook build && yarn test:e2e:docs-preview:built","test:e2e:docs-preview:built":"yarn node --test ./e2e/storybook-docs-preview-parity.test.mjs ./e2e/storybook-docs-preview-visual-parity.test.mjs ./e2e/storybook-docs-overflow.test.mjs","test:e2e:tty":"storybook build && node --test ./e2e/tty-*.test.mjs","test:e2e":"storybook build && yarn test:e2e:built","test:e2e:built":"yarn node ./scripts/run-standard-e2e-tests.mjs","test:watch":"vitest","clean":"node ./scripts/clean-dist.mjs"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"devDependencies":{"@storybook/addon-docs":"^10.2.19","@storybook/react-vite":"^10.2.19","@testing-library/dom":"^10.4.1","@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.3.0","@testing-library/user-event":"^14.6.1","@types/react":"^19.1.13","@types/react-dom":"^19.1.9","@types/ws":"^8","@vitejs/plugin-react":"^5.0.2","@vitest/coverage-v8":"^3.2.4","@xterm/headless":"^6.0.0","jsdom":"^26.1.0","node-pty":"^1.0.0","playwright-core":"^1.55.0","react":"^19.2.0","react-dom":"^19.2.0","storybook":"^10.2.19","tsup":"^8.5.0","typescript":"^5.9.2","vite":"^7.1.5","vitest":"^3.2.4","ws":"^8.18.3"},"gitHead":"ff24fd81494a7307c806cf69e19bfba7b53a5ff8","_id":"react-retro-display-tty-ansi-ascii@0.1.234","_nodeVersion":"24.19.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-Ik8mmFespQZtV6a5M02LsECJUWuIDSVdkN/lLRH5WyE0xI9vSlxFUD9/F1irUxq9Fb74c9m44hPR3l7jFTCtuA==","shasum":"0a2edfef4a5293554d4114301d4f600d2b119663","tarball":"https://registry.npmjs.org/react-retro-display-tty-ansi-ascii/-/react-retro-display-tty-ansi-ascii-0.1.234.tgz","fileCount":13,"unpackedSize":1764052,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-retro-display-tty-ansi-ascii@0.1.234","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIETzS7Y0xieMbhr4HcDKEMVoqQV4zNFzc9Gfbyj5G2v1AiEA/Sa5WgXhHdOviJwiBoOWkOHCHDS02DfqOzooni+6zlI="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1f16a694-98b9-41bd-a8ff-764e9a0e8ece"}},"directories":{},"maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-retro-display-tty-ansi-ascii_0.1.234_1787768955364_0.09326420756303766"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-25T09:08:55.021Z","modified":"2026-08-26T18:29:15.835Z","0.1.23":"2026-03-25T09:08:55.308Z","0.1.24":"2026-03-25T16:16:38.136Z","0.1.25":"2026-03-28T11:37:04.293Z","0.1.26":"2026-03-28T16:57:53.502Z","0.1.27":"2026-03-29T03:00:25.202Z","0.1.28":"2026-03-29T04:41:36.097Z","0.1.29":"2026-03-29T15:48:36.481Z","0.1.30":"2026-03-29T15:53:05.483Z","0.1.31":"2026-03-30T15:13:11.645Z","0.1.32":"2026-03-30T17:53:46.297Z","0.1.37":"2026-04-02T06:19:43.585Z","0.1.39":"2026-04-03T00:31:42.527Z","0.1.46":"2026-04-07T01:56:08.915Z","0.1.47":"2026-04-07T04:25:40.567Z","0.1.63":"2026-04-17T15:57:30.473Z","0.1.64":"2026-04-18T02:01:17.808Z","0.1.65":"2026-04-18T04:49:05.904Z","0.1.67":"2026-04-18T13:28:25.977Z","0.1.68":"2026-04-18T23:32:12.255Z","0.1.70":"2026-04-19T05:47:54.961Z","0.1.75":"2026-04-22T13:42:05.942Z","0.1.77":"2026-04-23T19:47:48.584Z","0.1.171":"2026-07-15T21:04:13.140Z","0.1.173":"2026-07-16T21:51:19.420Z","0.1.177":"2026-07-17T23:29:06.255Z","0.1.178":"2026-07-18T00:02:57.754Z","0.1.179":"2026-07-18T00:17:53.986Z","0.1.181":"2026-07-18T00:37:44.620Z","0.1.182":"2026-07-18T00:46:47.335Z","0.1.183":"2026-07-18T01:17:42.994Z","0.1.184":"2026-07-18T01:55:49.278Z","0.1.187":"2026-07-18T16:28:28.211Z","0.1.189":"2026-07-19T14:55:50.780Z","0.1.190":"2026-07-19T19:28:39.579Z","0.1.226":"2026-08-23T13:33:04.518Z","0.1.228":"2026-08-24T15:26:53.075Z","0.1.230":"2026-08-24T18:06:53.556Z","0.1.231":"2026-08-24T19:03:34.986Z","0.1.234":"2026-08-26T18:29:15.513Z"},"bugs":{"url":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii/issues"},"license":"MIT","homepage":"https://github.com/smysnk/react-retro-display-tty-ansi-ascii#readme","keywords":["react","react-component","terminal","terminal-ui","tty","ansi","prompt","console","lcd","retro","retro-ui","retro-terminal","phosphor","monochrome","scrollback"],"repository":{"type":"git","url":"git+https://github.com/smysnk/react-retro-display-tty-ansi-ascii.git"},"description":"A reusable React retro display component with value, terminal, and prompt modes.","maintainers":[{"name":"smysnk","email":"npm@psidox.com"}],"readme":"[![Feature Tour Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii.webp)](https://github.com/user-attachments/assets/c0ccd3ff-147b-4b8f-b214-47bddb2419d1)\n\n# react-retro-display-tty-ansi-ascii\n\n[![npm](https://img.shields.io/npm/v/react-retro-display-tty-ansi-ascii?label=npm)](https://www.npmjs.com/package/react-retro-display-tty-ansi-ascii)\n[![tests](https://img.shields.io/endpoint?url=https%3A%2F%2Fsmysnk.com%2Fprojects%2Freact-retro-screen%2Fstorybook%2Fbadges%2Ftests.json)](https://github.com/smysnk/react-retro-display-tty-ansi-ascii/actions/workflows/cicd.yml)\n[![coverage](https://img.shields.io/endpoint?url=https%3A%2F%2Fsmysnk.com%2Fprojects%2Freact-retro-screen%2Fstorybook%2Fbadges%2Fcoverage.json)](https://github.com/smysnk/react-retro-display-tty-ansi-ascii/actions/workflows/cicd.yml)\n[![health](https://img.shields.io/endpoint?url=https%3A%2F%2Fsmysnk.com%2Fprojects%2Freact-retro-screen%2Fstorybook%2Fbadges%2Fhealth.json)](https://github.com/smysnk/react-retro-display-tty-ansi-ascii/actions/workflows/cicd.yml)\n\nStorybook: [smysnk.com/projects/react-retro-screen/storybook](https://smysnk.com/projects/react-retro-screen/storybook/)\n\n`react-retro-display-tty-ansi-ascii` is a React component for calm, terminal-flavored interfaces.\nIt can be a read-only display, a controlled editable surface, a controller-driven terminal,\nor a small command prompt without changing visual language. It also understands ANSI styling,\nsemantic display color modes, and an xterm-checked terminal behavior surface for real control\ncharacter playback. It can also project itself onto either dark or light LCD glass without\nasking the whole app shell to follow.\n\n## See It In Action\n\nWant to see the component running in a real product surface instead of a contained story?\nCheck out [ascii.gallery](http://ascii.gallery), which uses the retro player and viewer stack\nto honor the ANSI and ASCII scenes of old through a living gallery of scrolling artwork,\nfullscreen playback, and preserved retro display behavior.\n\n[![ascii.gallery five-column desktop homepage demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-ascii-gallery-home-desktop-5col.webp)](http://ascii.gallery)\n\nLatest CI runs: [github.com/smysnk/react-retro-display-tty-ansi-ascii/actions/workflows/cicd.yml](https://github.com/smysnk/react-retro-display-tty-ansi-ascii/actions/workflows/cicd.yml)\n\n## Getting Started\n\nInstall the package, bring in the shared stylesheet, and start with the simplest thing:\n\n```bash\nnpm install react-retro-display-tty-ansi-ascii\n```\n\n**Complete example:** this block includes every import required in an existing React app.\n\n<!-- readme-example:getting-started source=\"examples/readme/getting-started/StatusCard.tsx\" start -->\n```tsx\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function StatusCard() {\n  return (\n    <RetroScreen\n      mode=\"value\"\n      value=\"SYSTEM READY\"\n      color=\"#97ff9b\"\n    />\n  );\n}\n```\n<!-- readme-example:getting-started end -->\n\nThat is the whole entry point.\nYou hand the component a mode, a value or controller when needed, and let it handle the grid,\nwrapping, cursor rendering, and terminal feel.\n\n## Touch Input\n\nUse `touchInput` when the display itself should behave like a touch surface and report\ngrid-aligned cell hits back to the host application.\n\nThe touch contract is intentionally simple:\n\n- the component emits 1-based `row` and `col` coordinates\n- it also reports the measured `rows` and `cols` that were active for that touch\n- input is delivered as a single `down` event for each press\n- long presses do not stream repeated events\n- move events are ignored by default in touch mode\n- the next touch is not accepted until the current press is released\n\nThat makes it a good fit for grid-driven interfaces such as soft terminals, retro games,\ntouch menus, and keypad-like overlays where the host wants to interpret one deliberate press\nat a time.\n\nSee it in action in the live [m68k-interpreter touch demo](https://smysnk.com/m68k-interpreter).\n\n**Complete example:** the rendered `<output>` makes the emitted coordinates visible to the host.\n\n<!-- readme-example:touch-input source=\"examples/readme/touch-input/TouchDemo.tsx\" start -->\n```tsx\nimport { useState } from \"react\";\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function TouchDemo() {\n  const [lastTouch, setLastTouch] = useState(\"Tap the screen\");\n\n  return (\n    <>\n      <RetroScreen\n        mode=\"terminal\"\n        gridMode=\"static\"\n        rows={12}\n        cols={32}\n        value={[\n          \"┌──────────────────────────────┐\",\n          \"│                              │\",\n          \"│          TOUCH ME            │\",\n          \"│                              │\",\n          \"│   ↑ up          right →      │\",\n          \"│                              │\",\n          \"│   ← left       down ↓        │\",\n          \"│                              │\",\n          \"│                              │\",\n          \"│                              │\",\n          \"│                              │\",\n          \"└──────────────────────────────┘\"\n        ].join(\"\\n\")}\n        touchInput={{\n          enabled: true,\n          onTouchCell: ({ row, col, rows, cols, pointerType }) => {\n            setLastTouch(`${pointerType} @ ${row},${col} inside ${rows}x${cols}`);\n          }\n        }}\n      />\n      <output>{lastTouch}</output>\n    </>\n  );\n}\n```\n<!-- readme-example:touch-input end -->\n\nThe host remains responsible for deciding what a touch means. RetroScreen only handles the\noverlay, pointer capture, hit testing, and the single-press-until-release behavior.\n\n## Display Padding\n\nUse `displayPadding` when the screen content should sit tighter to the glass or breathe a little\nmore. The prop accepts:\n\n- a number for uniform pixel padding\n- a CSS length string for uniform padding\n- an object with `block` and `inline`\n- an object with per-side `top`, `right`, `bottom`, and `left`\n\n**API fragment:** these calls assume `RetroScreen` and the package stylesheet are already imported.\n\n```tsx\n<RetroScreen mode=\"value\" value=\"Tight framing\" displayPadding={8} />\n\n<RetroScreen mode=\"value\" value=\"Room to breathe\" displayPadding=\"1.25rem\" />\n\n<RetroScreen\n  mode=\"terminal\"\n  displayPadding={{ block: 10, inline: 14 }}\n  value=\"measured from the padded screen area\"\n/>\n\n<RetroScreen\n  mode=\"prompt\"\n  displayPadding={{ top: 6, right: 10, bottom: 12, left: 10 }}\n/>\n```\n\nRetroScreen also shows a focus glow around the shell by default so editable, prompt, and terminal\nsurfaces clearly read as active. Disable it when you want a quieter shell:\n\n**API fragment:**\n\n```tsx\n<RetroScreen mode=\"terminal\" focusGlow={false} />\n```\n\n## Display Frame\n\nUse `displayFrame={false}` when the glass itself should stay visible but the outer shell chrome\nshould drop away. This is especially useful for fullscreen mobile artwork, embedded canvases, or\nlayouts where the host surface already provides the surrounding frame.\n\n**API fragment:** this assumes the Getting Started imports.\n\n```tsx\n<RetroScreen\n  mode=\"terminal\"\n  value=\"frameless but still live\"\n  displayFrame={false}\n  displayPadding={0}\n/>\n```\n\nFrameless mode removes the bezel, inset border, outer radius, and shell shadow while keeping the\nsame display surface, grid, ANSI rendering, and optional touch overlay behavior.\n\nBecause rows and columns are measured from the visible screen area, tighter padding yields a\ndenser grid and looser padding yields fewer cells.\n\n## Resizable Panels\n\nUse `resizable` when the panel itself should be draggable instead of only responding to layout\nchanges around it. The live Storybook demo now shows a visible mouse cursor grabbing the real\nhandles, including the optional leading-edge handles, so the docs match the shipped interaction.\n\n[![Resizable Panel Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-resizable-panel.webp)](https://github.com/user-attachments/assets/227b03f2-23a1-43eb-91b1-e326988313da)\n\n**Complete example:** the Storybook capture adds a scripted mouse only to demonstrate the real\nhandles; the component below is everything the application needs for user-driven resizing.\n\n<!-- readme-example:resizable-panel source=\"examples/readme/resizable-panel/ResizablePanel.tsx\" start -->\n```tsx\nimport { useState } from \"react\";\nimport {\n  RetroScreen,\n  type RetroScreenGeometry\n} from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function ResizablePanel() {\n  const [geometry, setGeometry] = useState<RetroScreenGeometry | null>(null);\n\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      resizable=\"both\"\n      resizableLeadingEdges\n      displayPadding={{ block: 12, inline: 14 }}\n      value={[\n        \"All resize handles are live here.\",\n        \"\",\n        \"Drag left, right, top, bottom, or any corner.\",\n        geometry\n          ? `grid: ${geometry.cols} cols x ${geometry.rows} rows`\n          : \"grid: measuring\"\n      ].join(\"\\n\")}\n      onGeometryChange={setGeometry}\n    />\n  );\n}\n```\n<!-- readme-example:resizable-panel end -->\n\nReach for:\n\n- `resizable=\"width\"` when the panel should only stretch sideways\n- `resizable=\"height\"` when it should stack or collapse vertically\n- `resizable` or `resizable=\"both\"` for freeform terminal panes\n- `resizableLeadingEdges` when left, top, and top-left handles should join the same interaction surface\n\n## Light And Dark Surface Modes\n\nUse `displaySurfaceMode` when the LCD itself should read like a light instrument panel or a\ndark night-ops surface. This is separate from the host page theme, so the same ANSI-rich\nterminal content can sit inside bright docs, dark dashboards, or a side-by-side comparison view.\n\n[![Light And Dark Hosts Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-light-dark-hosts.webp)](https://github.com/user-attachments/assets/69f414ac-577c-4840-9acf-f7646033a39c)\n\n**Complete multi-file example:** the synchronized typing, both host cards, responsive layout, and\ncleanup are in [`examples/readme/light-dark-surfaces/`](./examples/readme/light-dark-surfaces/).\n\n**API fragment:** the two calls below isolate the light and dark display props without repeating\nthe host layout or animation engine.\n\n```tsx\n<RetroScreen\n  mode=\"terminal\"\n  value={[\n    \"\\u001b[1mLIGHT SURFACE\\u001b[0m\",\n    \"\\u001b[38;5;160mR\\u001b[38;5;214mA\\u001b[38;5;190mI\\u001b[38;5;45mN\\u001b[38;5;39mB\\u001b[38;5;141mO\\u001b[38;5;201mW\\u001b[0m contrast check\",\n    \"\\u001b[38;2;194;94;0mamber\\u001b[0m  \\u001b[38;2;0;104;181mblue\\u001b[0m  \\u001b[38;2;108;40;148mviolet\\u001b[0m\"\n  ].join(\"\\n\")}\n  displaySurfaceMode=\"light\"\n  displayColorMode=\"ansi-extended\"\n  displayPadding={{ block: 12, inline: 14 }}\n/>\n\n<RetroScreen\n  mode=\"terminal\"\n  value={[\n    \"\\u001b[1mDARK SURFACE\\u001b[0m\",\n    \"\\u001b[38;5;160mR\\u001b[38;5;214mA\\u001b[38;5;190mI\\u001b[38;5;45mN\\u001b[38;5;39mB\\u001b[38;5;141mO\\u001b[38;5;201mW\\u001b[0m contrast check\",\n    \"\\u001b[38;2;255;176;86mamber\\u001b[0m  \\u001b[38;2;102;198;255mblue\\u001b[0m  \\u001b[38;2;214;145;255mviolet\\u001b[0m\"\n  ].join(\"\\n\")}\n  displaySurfaceMode=\"dark\"\n  displayColorMode=\"ansi-extended\"\n  displayPadding={{ block: 12, inline: 14 }}\n/>\n```\n\nReach for `displaySurfaceMode=\"light\"` when the LCD should feel like paper, enamel, or a sunlit\ninstrument panel. Keep `displaySurfaceMode=\"dark\"` for the classic terminal-glass look. The\nsame ANSI palette will still be remapped for readable contrast against each surface.\n\n## Modes Of Use\n\nExamples are labeled deliberately: a **Complete example** is copy-pasteable in an existing React\napp, a **Complete multi-file example** links every required source and asset, and an **API\nfragment** isolates one concept while linking back to a complete setup.\n\n### 1. Quiet output\n\nUse `mode=\"value\"` when the display is just there to speak.\n\n[![Quiet Output Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-quiet-output.webp)](https://github.com/user-attachments/assets/df971b76-3de6-4686-833a-8fad19a66832)\n\n**Complete example:** this includes the typing cadence shown by the animated capture.\n\n<!-- readme-example:quiet-output source=\"examples/readme/quiet-output/QuietOutput.tsx\" start -->\n```tsx\nimport { useEffect, useState } from \"react\";\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nconst MESSAGE = \"LINK STABLE\\nAwaiting operator input.\";\n\nexport function QuietOutput() {\n  const [value, setValue] = useState(\"\");\n\n  useEffect(() => {\n    const timers: number[] = [];\n    let nextAt = 220;\n\n    for (let index = 1; index <= MESSAGE.length; index += 1) {\n      const character = MESSAGE[index - 1];\n      timers.push(\n        window.setTimeout(() => {\n          setValue(MESSAGE.slice(0, index));\n        }, nextAt)\n      );\n      nextAt += character === \"\\n\" ? 260 : 92;\n    }\n\n    return () => {\n      for (const timer of timers) {\n        window.clearTimeout(timer);\n      }\n    };\n  }, []);\n\n  return <RetroScreen mode=\"value\" value={value} color=\"#97ff9b\" />;\n}\n```\n<!-- readme-example:quiet-output end -->\n\n### 2. Signal intercept\n\nUse a controller when the display should reveal text over time and the cadence matters as much as the message.\n\n[![White Rabbit Signal Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-white-rabbit-signal.webp)](https://github.com/user-attachments/assets/f05998aa-40a0-4c51-9612-025b5e5f5b29)\n\n**Complete example:** this is the four-message sequence and cadence used by the capture.\n\n<!-- readme-example:signal-intercept source=\"examples/readme/signal-intercept/WhiteRabbitSignal.tsx\" start -->\n```tsx\nimport { useEffect, useState } from \"react\";\nimport {\n  RetroScreen,\n  createRetroScreenController\n} from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nconst SIGNAL_PHRASES = [\n  { text: \"Wake up, Neo...\", pauseAfter: 1360 },\n  { text: \"The Matrix has you...\", pauseAfter: 1220 },\n  { text: \"Follow the white rabbit.\", pauseAfter: 1220 },\n  { text: \"Knock, knock, Neo.\", pauseAfter: 0 }\n] as const;\n\nexport function WhiteRabbitSignal() {\n  const [controller] = useState(() =>\n    createRetroScreenController({\n      rows: 5,\n      cols: 34,\n      cursorMode: \"solid\"\n    })\n  );\n\n  useEffect(() => {\n    controller.reset();\n    controller.resize(5, 34);\n    controller.setCursorMode(\"solid\");\n    controller.setCursorVisible(true);\n\n    const timers: number[] = [];\n    let nextAt = 380;\n\n    const getTypingDelay = (character: string, nextCharacter?: string) => {\n      if (character === \" \") return 86;\n      if (character === \",\") return 214;\n      if (character === \".\" && nextCharacter === \".\") return 70;\n      if (character === \".\") return 320;\n      if (/[A-Z]/u.test(character)) return 154;\n      return 122;\n    };\n\n    const scheduleTypedWrite = (text: string) => {\n      const characters = Array.from(text);\n\n      for (let index = 0; index < characters.length; index += 1) {\n        const character = characters[index]!;\n\n        timers.push(\n          window.setTimeout(() => {\n            controller.write(character);\n          }, nextAt)\n        );\n        nextAt += getTypingDelay(character, characters[index + 1]);\n      }\n    };\n\n    const scheduleReset = () => {\n      timers.push(\n        window.setTimeout(() => {\n          controller.reset();\n          controller.resize(5, 34);\n          controller.setCursorMode(\"solid\");\n          controller.setCursorVisible(true);\n        }, nextAt)\n      );\n      nextAt += 360;\n    };\n\n    SIGNAL_PHRASES.forEach(({ text, pauseAfter }, index) => {\n      if (index > 0) {\n        scheduleReset();\n      }\n\n      scheduleTypedWrite(text);\n      nextAt += pauseAfter;\n    });\n\n    return () => {\n      for (const timer of timers) {\n        window.clearTimeout(timer);\n      }\n    };\n  }, [controller]);\n\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      controller={controller}\n      color=\"#97ff9b\"\n      displayPadding={{ block: 14, inline: 16 }}\n      style={{ minHeight: \"212px\" }}\n    />\n  );\n}\n```\n<!-- readme-example:signal-intercept end -->\n\nThis is the same four-message sequence, per-character cadence, screen clearing, and display styling used by the Storybook demo.\n\n### 3. Matrix code rain\n\nThe effect keeps a seeded glyph field fixed on the grid while independently moving brightness\nheads illuminate each column. Five per-cell RGB shades form the trails, and small glyph mutations\nnear each active trail create motion without scrolling strings through the terminal.\n\n[![Matrix Code Rain Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-matrix-code-rain.webp)](https://github.com/user-attachments/assets/df2c7fdc-cd27-4296-8f70-1373fdfb63aa)\n\n**Complete multi-file example and implementation walkthrough:** the seeded glyph field, column\nengine, distance-based shading, selective glyph mutation, cell rasterization, animation loop,\nstyling, tuning controls, and cleanup are documented in\n[`examples/readme/matrix-code-rain/`](./examples/readme/matrix-code-rain/).\n\nThe runnable entry point is:\n\n```tsx\nimport { MatrixCodeRainScreen } from \"./MatrixCodeRain\";\n\nexport function App() {\n  return <MatrixCodeRainScreen />;\n}\n```\n\nThis replaces the previous empty-controller fragment, which configured a screen but never supplied\nglyphs or animation frames.\n\n### 4. Editable drafting\n\nTurn on `editable` when you want the same surface to behave like a controlled input.\n\n[![Editable Drafting Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-editable-drafting.webp)](https://github.com/user-attachments/assets/5670d23a-c794-46a0-bb40-784f04a2da14)\n\n**Complete example:** the capture automatically types into this same controlled surface; that\ncapture choreography is not required by the application.\n\n<!-- readme-example:editable-drafting source=\"examples/readme/editable-drafting/EditableDrafting.tsx\" start -->\n```tsx\nimport { useState } from \"react\";\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function EditableDrafting() {\n  const [value, setValue] = useState(\"\");\n  const [submitted, setSubmitted] = useState(\"Nothing submitted yet.\");\n\n  return (\n    <>\n      <RetroScreen\n        mode=\"value\"\n        value={value}\n        editable\n        autoFocus\n        color=\"#97ff9b\"\n        cursorMode=\"solid\"\n        placeholder=\"Write a line, breathe, then press Enter.\"\n        onChange={setValue}\n        onSubmit={(nextValue) => {\n          setSubmitted(nextValue.length > 0 ? nextValue : \"(empty)\");\n        }}\n      />\n      <output>Last Enter press: {submitted}</output>\n    </>\n  );\n}\n```\n<!-- readme-example:editable-drafting end -->\n\n### 5. Terminal output from a controller\n\nUse a controller when the display should follow external writes over time.\n\n[![Terminal Output Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-terminal-output.webp)](https://github.com/user-attachments/assets/57258c51-5afd-4164-87dd-d30b85726a26)\n\n**Complete example:** controller construction, all timed writes, and cleanup are included.\n\n<!-- readme-example:terminal-output source=\"examples/readme/terminal-output/TerminalOutput.tsx\" start -->\n```tsx\nimport { useEffect, useState } from \"react\";\nimport {\n  RetroScreen,\n  createRetroScreenController\n} from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nconst OUTPUT_SEQUENCE = [\n  {\n    at: 260,\n    text: \"BOOT   react-retro-display-tty-ansi-ascii\",\n    appendNewline: true\n  },\n  {\n    at: 1120,\n    text: \"CHECK  controller attached\",\n    appendNewline: true\n  },\n  {\n    at: 2080,\n    text: \"\\u001b[1mREADY\\u001b[0m ansi parser online\",\n    appendNewline: true\n  },\n  {\n    at: 3140,\n    text: \"\\u001b[2msoft notes stay readable without stealing focus\\u001b[0m\",\n    appendNewline: true\n  },\n  {\n    at: 4320,\n    text: \"\\u001b[7mLIVE\\u001b[0m output keeps pace with external writes\",\n    appendNewline: false\n  }\n] as const;\n\nexport function TerminalOutput() {\n  const [controller] = useState(() =>\n    createRetroScreenController({\n      rows: 9,\n      cols: 46,\n      cursorMode: \"solid\"\n    })\n  );\n\n  useEffect(() => {\n    controller.reset();\n    controller.setCursorMode(\"solid\");\n    controller.setCursorVisible(true);\n\n    const timers = OUTPUT_SEQUENCE.map(({ at, text, appendNewline }) =>\n      window.setTimeout(() => {\n        if (appendNewline) {\n          controller.writeln(text);\n        } else {\n          controller.write(text);\n        }\n      }, at)\n    );\n\n    return () => {\n      for (const timer of timers) {\n        window.clearTimeout(timer);\n      }\n    };\n  }, [controller]);\n\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      controller={controller}\n      color=\"#97ff9b\"\n    />\n  );\n}\n```\n<!-- readme-example:terminal-output end -->\n\nIf you already have a terminal-like buffer as a string, `mode=\"terminal\"` also accepts `value`\nor `initialBuffer`.\n\n## Live TTY Websocket Bridge\n\n`RetroScreen` can also act as the browser-side surface for a real TTY session. The transport\nstays outside the component, while the component handles geometry, keyboard capture, paste,\nfocus reporting, mouse reporting, alternate-screen rendering, title updates, and bell metadata.\n\n[![Live Tty Terminal Bridge Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-live-tty-terminal-bridge.webp)](https://github.com/user-attachments/assets/8e525d78-ddf1-4604-bdcc-d05f6d817489)\n\nThe demo sequence is recorded from a live shell session and stages the kind of workload this\nbridge is built for: a live-updating `top` session, a fullscreen `vim` pass, and a `nano`\nscreen with help bars and cursor-owned chrome.\n\n**Complete multi-file example:** the browser client is synchronized below. The required\n`node-pty` server, its security boundary, and the full source tree are documented in\n[`examples/readme/live-tty-websocket-bridge/`](./examples/readme/live-tty-websocket-bridge/).\n\n<!-- readme-example:live-tty-websocket-bridge source=\"examples/readme/live-tty-websocket-bridge/LiveShell.tsx\" start -->\n```tsx\nimport { useMemo } from \"react\";\nimport {\n  RetroScreen,\n  createRetroScreenWebSocketSession\n} from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function LiveShell({\n  url = \"ws://127.0.0.1:8787\",\n  cwd = \"/workspace\"\n}: {\n  url?: string;\n  cwd?: string;\n}) {\n  const session = useMemo(\n    () =>\n      createRetroScreenWebSocketSession({\n        url,\n        openPayload: {\n          cwd,\n          term: \"xterm-256color\"\n        }\n      }),\n    [cwd, url]\n  );\n\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      session={session}\n      closeSessionOnUnmount\n      autoFocus\n      displayColorMode=\"ansi-extended\"\n      displayPadding={{ block: 12, inline: 14 }}\n    />\n  );\n}\n```\n<!-- readme-example:live-tty-websocket-bridge end -->\n\nFor local development, the repo includes a reference `node-pty` websocket backend:\n\n```bash\nyarn tty:server\n```\n\nBy default, that example server starts a themed demo shell rooted at `~/tty-demo` with the\nprompt `operator@retro:~/tty-demo$`, so the live story and the recorded bridge demo share the\nsame shell framing.\n\nThere is also a dedicated Storybook story for this path. It now defaults to the local example\nserver at `ws://127.0.0.1:8787`, so if `yarn tty:server` is already running you can open the\n`Live Tty Terminal Bridge` story directly without adding any extra query params.\n\nIf you want to override the target or the open payload, use:\n\n```js\nwindow.__RETRO_SCREEN_TTY_DEMO__ = {\n  url: \"ws://127.0.0.1:8787\",\n  openPayload: {\n    cwd: \"/workspace\",\n    term: \"xterm-256color\"\n  }\n};\n```\n\nThe example server now supports token checks, origin checks, idle timeouts, payload-size limits,\nand optional command/cwd/env override restrictions. See\n[examples/node-tty-websocket-server/README.md](./examples/node-tty-websocket-server/README.md)\nfor the available flags.\n\n### 6. Prompt-first interaction\n\nUse `mode=\"prompt\"` when the interface should feel like a guided shell.\n\n[![Prompt Interaction Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-prompt-loop.webp)](https://github.com/user-attachments/assets/75eec8ea-6da7-41f4-98be-f17e5284980a)\n\n**Complete example:** command latency, accepted responses, and rejection behavior are included.\n\n<!-- readme-example:prompt-interaction source=\"examples/readme/prompt-interaction/PromptInteraction.tsx\" start -->\n```tsx\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nconst wait = (duration: number) =>\n  new Promise<void>((resolve) => {\n    window.setTimeout(resolve, duration);\n  });\n\nexport function PromptInteraction() {\n  return (\n    <RetroScreen\n      mode=\"prompt\"\n      autoFocus\n      color=\"#97ff9b\"\n      cursorMode=\"solid\"\n      promptChar=\"$\"\n      acceptanceText=\"READY\"\n      rejectionText=\"DENIED\"\n      onCommand={async (command) => {\n        await wait(420);\n\n        switch (command.trim()) {\n          case \"status\":\n            return {\n              accepted: true,\n              response: [\"grid synced\", \"cursor stable\", \"story ready\"]\n            };\n          case \"scan\":\n            return {\n              accepted: true,\n              response: [\"signal sweep\", \"north: clear\", \"south: clear\"]\n            };\n          default:\n            return {\n              accepted: false,\n              response: \"unknown command\"\n            };\n        }\n      }}\n    />\n  );\n}\n```\n<!-- readme-example:prompt-interaction end -->\n\nThe Apple DOS 3.3 demo sits nicely in the same family when you want the interface to feel boot-first and command-led instead of form-like.\n\n[![Apple II DOS 3.3 Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-apple2-dos33.webp)](https://github.com/user-attachments/assets/6e254c74-0973-4395-8cfc-4daddb57468d)\n\nUnder the hood, the Apple II shell is built as a small userland runtime on top of `mode=\"terminal\"` instead of trying to force the one-shot prompt path to behave like BASIC. The Storybook surface feeds keyboard bytes into a session store that owns the boot transcript, prompt state, numbered program lines, and shell mode transitions. That session then hands stored BASIC lines to a parser/interpreter pair that supports immediate commands like `LIST`, `NEW`, and `RUN`, plus resumable program execution for `INPUT` and `BREAK`.\n\nImplementation notes:\n\n- [`src/stories/Apple2Basic.stories.tsx`](./src/stories/Apple2Basic.stories.tsx) wires `RetroScreen` to the Apple session and powers both the interactive story and deterministic capture variants.\n- [`src/stories/apple2-basic/apple2-basic-shell-session.ts`](./src/stories/apple2-basic/apple2-basic-shell-session.ts) manages uppercase input, line editing, transcript updates, prompt switching, and asynchronous runner scheduling.\n- [`src/stories/apple2-basic/apple2-basic-parser.ts`](./src/stories/apple2-basic/apple2-basic-parser.ts) parses immediate commands, numbered program lines, and the supported BASIC statement/expression subset.\n- [`src/stories/apple2-basic/apple2-basic-interpreter.ts`](./src/stories/apple2-basic/apple2-basic-interpreter.ts) compiles stored lines into a resumable runner so `RUN`, `INPUT`, `GOTO`, `IF ... THEN`, `END`, and `CTRL+C` / `BREAK` behave like a shell instead of a static transcript.\n\n**Complete multi-file example:** the required module map and run command are collected in\n[`examples/readme/apple2-basic/`](./examples/readme/apple2-basic/).\n\n## Display Buffer And Follow Mode\n\nTerminal and prompt surfaces now expose a real display buffer instead of only showing the live\nviewport. That means you can scroll back through recent output, inspect older lines, then return\nto the live tail when you are ready to follow the stream again.\n\nBuilt-in behavior:\n\n- `PageUp` and `PageDown` move through the display buffer\n- mouse wheel scrolling moves through the same history\n- `End` returns terminal mode to the live tail\n- auto-follow starts enabled, turns off when you scroll back, and turns back on when you return to the bottom\n\nUse `bufferSize` to control how many rows of history the component-managed terminal or prompt\nsurface keeps, and `defaultAutoFollow` if you want the view to start detached from the tail.\n\n**API fragment:** use the complete Terminal Output example above for imports and controller\nlifecycle.\n\n```tsx\n<RetroScreen\n  mode=\"terminal\"\n  bufferSize={400}\n  defaultAutoFollow\n  value={[\n    \"line-01  warm boot\",\n    \"line-02  telemetry stable\",\n    \"line-03  waiting for operator\"\n  ].join(\"\\n\")}\n/>\n```\n\nIf you are driving the component with your own controller, configure the underlying buffer size on\nthe controller itself:\n\n```tsx\nconst controller = createRetroScreenController({\n  rows: 9,\n  cols: 46,\n  scrollback: 400\n});\n\n<RetroScreen mode=\"terminal\" controller={controller} />\n```\n\nThe browser suite now covers this path directly, including paging, wheel scrolling, anchored\nscrollback while new lines arrive, and auto-follow recovery back to the live tail.\n\n## Auto Resize And Geometry Probing\n\nWhen rows and columns matter to the program inside the display, listen to `onGeometryChange`,\nturn that measurement into a terminal-style reply, and redraw from the reported size. The demo\nbelow simulates a terminal app issuing `CSI 18 t`, receiving `CSI 8;<rows>;<cols>t`, then\nrepainting a full border and centered dimensions every time the panel resizes. The current demo\nshows a visible cursor dragging the real resize handles, pauses if you intervene manually, and\nstill cycles through tight screen padding, multiple border alphabets, oversized glyph styles,\nplus every monochrome and ANSI display mode so the same terminal program can be watched under\ndifferent visual projections.\n\n[![Auto Resize Probe Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-auto-resize-probe.webp)](https://github.com/user-attachments/assets/2dfd68d7-284c-4895-ad5f-fb513cb09c80)\n\n**Complete multi-file example:** the real `redrawBorderAndMetrics` helper, controller lifecycle,\ngeometry deduplication, terminal reply, and runnable component are in\n[`examples/readme/auto-resize-probe/`](./examples/readme/auto-resize-probe/). The scripted mouse\nand visual-variant cycling in the capture are Storybook presentation choreography.\n\nThe runnable entry point is:\n\n```tsx\nimport { AutoResizeProbe } from \"./AutoResizeProbe\";\n\nexport function App() {\n  return <AutoResizeProbe />;\n}\n```\n\nThis is useful for terminal-style dashboards, resize-aware prompts, or retro UIs that need to\ncenter content, draw frames, or adapt layouts from the actual LCD grid instead of from CSS alone.\nIt is also a good place to project `displayColorMode` changes when you want the terminal behavior\nto stay fixed while the display mood shifts around it.\n\n## Terminal Color Modes\n\nUse `displayColorMode` to decide how semantic terminal color should be projected onto the screen.\nThe phosphor modes keep the retro LCD personality even when the source emits ANSI color. The ANSI\nmodes preserve more of the source terminal palette.\n\n[![Display Color Modes Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-display-color-modes.webp)](https://github.com/user-attachments/assets/3536a8f4-fe5d-401d-af79-1f2e707f2ce5)\n\nAvailable modes:\n\n- `phosphor-green`\n- `phosphor-amber`\n- `phosphor-ice`\n- `ansi-vga`\n- `ansi-classic`\n- `ansi-extended`\n\n**Complete example:**\n\n<!-- readme-example:display-color-modes source=\"examples/readme/display-color-modes/DisplayColorModes.tsx\" start -->\n```tsx\nimport { RetroScreen } from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nconst VALUE = [\n  \"\\u001b[31mALERT\\u001b[0m \\u001b[32mlink stable\\u001b[0m\",\n  \"\\u001b[38;5;196mindexed 196\\u001b[0m from the 256-color palette\",\n  \"\\u001b[38;2;255;180;120mtruecolor 255,180,120\\u001b[0m\"\n].join(\"\\n\");\n\nexport function DisplayColorModes() {\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      displayColorMode=\"ansi-extended\"\n      value={VALUE}\n    />\n  );\n}\n```\n<!-- readme-example:display-color-modes end -->\n\nReach for `ansi-vga` when you need the exact IBM PC/DOS 16-color palette used by ANSI art,\n`ansi-classic` when you want the softened 16-color terminal profile, or\n`ansi-extended` when 256-color and truecolor cells should survive all the way to the display.\n\n## ANSI Art Playback\n\nThe Midjourney galaxy demo uses the same `RetroScreen` cell pipeline to start from a drifting text field and pull it into a bright spiral structure.\n\n[![Midjourney Galaxy Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-midjourney-galaxy.webp)](https://github.com/user-attachments/assets/623e6b5a-e0c6-4815-9b8b-6ea1b8145469)\n\n**Complete multi-file example:** the text grid, particle model, spiral rasterizer, animation loop,\nand cleanup are in\n[`examples/readme/midjourney-vortex/`](./examples/readme/midjourney-vortex/).\n\nOpen it here:\n[smysnk.com/projects/react-retro-screen/storybook/?path=/story/retroscreen--midjourney-vortex](https://smysnk.com/projects/react-retro-screen/storybook/?path=/story/retroscreen--midjourney-vortex)\n\nStorybook now includes a dedicated `Bad Apple ANSI` demo that loads the real ANSI release,\ndecodes the original IBM VGA / CP437 bytes outside the display component, and then feeds those\nbytes into the reusable `RetroScreenAnsiPlayer` wrapper. The player incrementally materializes\none mutable `80 x 25` terminal state at the configured baud while the parent owns byte loading and streaming. The\ndemo uses the full `BADAPPLE.ANS` payload, not a trimmed excerpt, and now uses the current\nretained bitmap canvas backend with IBM VGA 8x16 glyphs.\n\n[![Bad Apple ANSI Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-bad-apple-ansi.webp)](https://github.com/user-attachments/assets/82d505be-5296-4139-ab64-83aae59804ad)\n\nThe README clip is a 30-second capture of the real ANSI-art playback path, not a separate video renderer.\n\nCredit for the original ANSI release goes to [Mistigris](https://mistigris.org/).\n\nOpen it here:\n[smysnk.com/projects/react-retro-screen/storybook/?path=/story/retroscreen-display-buffer--bad-apple-ansi](https://smysnk.com/projects/react-retro-screen/storybook/?path=/story/retroscreen-display-buffer--bad-apple-ansi)\n\nThe Storybook demo is backed by the bundled asset at\n[src/stories/assets/bad-apple.ans](./src/stories/assets/bad-apple.ans).\n\n**Complete multi-file example:** loading, SAUCE parsing, byte splitting, error handling, player\nwiring, asset requirements, and attribution are in\n[`examples/readme/ansi-art-playback/`](./examples/readme/ansi-art-playback/).\n\n**API fragment:** once the complete example has loaded `asset`, the key player props are:\n\n```tsx\n<RetroScreenAnsiPlayer\n  byteStream={asset.byteStream}\n  rows={25}\n  cols={80}\n  baud={14_400}\n  complete\n  loop\n  canvasAccessibleText={false}\n  displayColorMode=\"ansi-classic\"\n  displayGlyphMode=\"ibm-vga-8x16\"\n  displayLayoutMode=\"fit-width\"\n  displayPadding={0}\n  displayScanlines={false}\n  renderBackend=\"canvas\"\n  style={{ width: \"100%\" }}\n/>\n```\n\nUse `RetroScreenAnsiPlayer` when a parent is responsible for supplying ANSI bytes or byte chunks,\nincluding incremental streams. Keep the asset loading outside the display component, pass the\nnative `rows` and `cols` so the art is not reflowed. Playback state reports `processedBytes`,\n`totalBytes`, `status`, and `estimatedDurationMs`; snapshots use `drain` to reach the same engine's\nfinal state immediately. For ANSI art, the most useful display props\nare:\n\n- `displayCharacterSizingMode=\"font\"`: lets browser font rendering own glyph sizing instead of\n  forcing explicit cell dimensions.\n- `displayFontSizingMode=\"fit-cols\"`: chooses the largest integer font size that still fits the\n  requested columns horizontally.\n- `displayLayoutMode=\"fit-width\"`: lets the component fill the available width and derive its\n  height from the resolved grid.\n- `displayScanlines={false}` and `disableCellRowScale`: opt out of CRT-style effects that can\n  create unwanted seams in ANSI art.\n\n### Canvas backend for read-only artwork\n\nLarge, read-only ANSI documents can opt into the bitmap canvas backend. It rasterizes CP437 glyphs\ninto retained `ImageData`, updates only changed cells during playback, and divides tall documents\ninto canvases no taller than 256 text rows. In explicit canvas mode no `.retro-screen__line` or\n`.retro-screen__cell` elements are mounted.\n\n**API fragment:** `asset` is loaded by the complete ANSI Art Playback example linked above.\n\n```tsx\n<RetroScreenAnsiPlayer\n  byteStream={asset.byteStream}\n  rows={asset.height}\n  cols={asset.width}\n  displayColorMode=\"ansi-vga\"\n  displayGlyphMode=\"ibm-vga-8x16\"\n  renderBackend=\"canvas\"\n  canvasAccessibilityLabel={`${asset.title} by ${asset.author}`}\n/>\n```\n\n`renderBackend=\"canvas\"` requires a bitmap `displayGlyphMode`; font rendering and interactive\nvalue, terminal, prompt, and editor surfaces resolve to the DOM backend. If the browser cannot\ncreate a 2D canvas context the component also falls back to DOM. Omit `renderBackend` to preserve\nthe legacy rendering behavior, or use `renderBackend=\"dom\"` to force rows and cells. Canvas mode\nincludes one visually hidden plain-text node by default; set `canvasAccessibleText={false}` when a\nstable accessible label is preferable for animated artwork.\n\n`BADAPPLE.ANS` uses lots of upper-half and lower-half block characters (`▀` / `▄`), so the demo\ndisables scanlines and rasterizes the IBM VGA glyph data directly.\n\n### Viewported ANSI Playback\n\n`RetroScreenAnsiPlayer` can also render a fixed viewport over a larger ANSI buffer. This is useful\nfor gallery viewers, panning surfaces, and giant sparse ANSI files where the parent wants to keep a\nstable `80 x 25` window while the underlying source geometry remains larger.\n\n**API fragment:** this reuses the loader and `asset` state from the complete ANSI example.\n\n```tsx\n<RetroScreenAnsiPlayer\n  byteStream={asset.byteStream}\n  rows={asset.height}\n  cols={asset.width}\n  baud={14_400}\n  complete={asset.complete}\n  loop={asset.complete}\n  viewportRows={25}\n  viewportCols={80}\n  viewportRowOffset={rowOffset}\n  viewportColOffset={colOffset}\n  displayCharacterSizingMode=\"font\"\n  displayFontSizingMode=\"fit-cols\"\n  displayLayoutMode=\"fit-width\"\n  displayPadding={0}\n  displayScanlines={false}\n  disableCellRowScale\n/>\n```\n\nSet `viewportFollowMode=\"cursor\"` when the viewport should remain fixed until the parser cursor\nreaches its final visible row, then follow new output without discarding the rows above it. Combine\nit with `scrollMode=\"canvas\"` so the complete source document remains available for later panning,\nexport, or a full-document reveal. The default `viewportFollowMode=\"fixed\"` preserves explicit\n`viewportRowOffset` behavior.\n\n```tsx\n<RetroScreenAnsiPlayer\n  byteStream={asset.byteStream}\n  rows={asset.height}\n  cols={asset.width}\n  viewportRows={25}\n  viewportFollowMode=\"cursor\"\n  scrollMode=\"canvas\"\n  renderBackend=\"canvas\"\n/>\n```\n\nThe playback callback reports source geometry and byte progress, so a parent can keep status UI\nin sync with the rendered stream:\n\n```tsx\n<RetroScreenAnsiPlayer\n  // ...\n  onPlaybackStateChange={(state) => {\n    console.log(state.sourceRows, state.sourceCols);\n    console.log(state.processedBytes, state.totalBytes, state.status);\n  }}\n/>\n```\n\n## Control-Character Playback\n\nThe terminal path is now tested against an xterm oracle and can faithfully replay real control\ncharacter effects like carriage return rewrites, erase-in-line, scroll regions, insert-line\nupdates, ANSI 16-color, indexed 256-color, and truecolor output.\n\n[![Control Character Replay Demo](https://raw.githubusercontent.com/smysnk/react-retro-display-tty-ansi-ascii/main/docs/assets/react-retro-display-tty-ansi-ascii-control-character-replay.webp)](https://github.com/user-attachments/assets/682d8e92-7871-420e-9e6d-a6a92b60c0fe)\n\n**Complete example:** writes run inside a component effect and timers are cleaned up on unmount.\n\n<!-- readme-example:control-character-replay source=\"examples/readme/control-character-replay/ControlCharacterReplay.tsx\" start -->\n```tsx\nimport { useEffect, useState } from \"react\";\nimport {\n  RetroScreen,\n  createRetroScreenController\n} from \"react-retro-display-tty-ansi-ascii\";\nimport \"react-retro-display-tty-ansi-ascii/styles.css\";\n\nexport function ControlCharacterReplay() {\n  const [controller] = useState(() =>\n    createRetroScreenController({ rows: 6, cols: 34, cursorMode: \"solid\" })\n  );\n\n  useEffect(() => {\n    controller.reset();\n    controller.setCursorVisible(true);\n\n    const writes = [\n      \"Downloading fixtures... 12%\",\n      \"\\rDownloading fixtures... 73%\",\n      \"\\r\\u001b[32mDownloaded fixtures.\\u001b[0m\\u001b[K\\r\\n\",\n      \"\\u001b[2;6r\",\n      \"\\u001b[6;1H\\u001b[L\\u001b[38;2;255;180;120mrecorded regression fixture\\u001b[0m\"\n    ];\n    const timers = writes.map((value, index) =>\n      window.setTimeout(() => {\n        controller.write(value);\n      }, 280 + index * 720)\n    );\n\n    return () => {\n      for (const timer of timers) {\n        window.clearTimeout(timer);\n      }\n    };\n  }, [controller]);\n\n  return (\n    <RetroScreen\n      mode=\"terminal\"\n      controller={controller}\n      displayColorMode=\"ansi-extended\"\n    />\n  );\n}\n```\n<!-- readme-example:control-character-replay end -->\n\nThe same trace fixtures used in Storybook are also exercised in the terminal verification layers:\n\n```bash\nyarn check:ansi-display-report\nyarn test:e2e:ansi-display\nyarn test:conformance\nyarn test:tty\nyarn test:e2e:tty\nyarn test:e2e\n```\n\nThe TTY-specific checks skip themselves automatically in environments where `node-pty` cannot\nallocate a TTY session, but they run normally on TTY-capable developer machines and CI runners.\n\nThe authoritative display-facing ANSI ledger lives in\n[`docs/ansi-display-support-matrix.md`](./docs/ansi-display-support-matrix.md). It is generated\nfrom the conformance matrix source and verified in CI so the published status stays in sync with\nthe implementation.\n\n## Ease Of Integration\n\nThe component is intentionally small at the edge:\n\n- Start with `mode=\"value\"` when all you need is a beautiful terminal-like readout.\n- Add `editable` if the content should be controlled by React state.\n- Switch to `mode=\"terminal\"` when output is driven by a stream or controller.\n- Switch to `mode=\"prompt\"` when commands and responses should live in one transcript.\n- Listen to `onGeometryChange` if rows and columns matter to the rest of your app.\n\n## Storybook\n\nStorybook now acts as the living demo surface for the package.\nIt includes stories for the main user journeys:\n\n- read-only display\n- editable drafting\n- controller-fed terminal output\n- display buffer paging and follow mode\n- resizable live panels with scripted handle demos\n- auto-resize geometry probing\n- live TTY bridge wiring\n- ANSI art playback\n- ANSI styling\n- display color mode projection\n- light and dark surface modes\n- control-character replay fixtures\n- prompt interaction\n- responsive geometry\n- a capture-ready feature tour\n\nRun it locally with:\n\n```bash\nnpm install\nnpm run storybook\n```\n\nReleases from `main` publish through GitHub OIDC without a persistent npm token. Maintainers can find the one-time npm package configuration and migration checklist in [npm trusted publishing](https://github.com/smysnk/react-retro-display-tty-ansi-ascii/blob/main/docs/npm-trusted-publishing.md).\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm run test\nnpm run test:unit\nnpm run storybook\n```\n\nUseful extra checks:\n\n```bash\nyarn test:tty\nyarn test:e2e:tty\nyarn perf:terminal\n```\n","readmeFilename":"README.md"}