
Security News
New React Server Components Vulnerabilities: DoS and Source Code Exposure
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.
A tiny framework for building diff based interactive command line tools.
npm install diffy
Basically React, but in the terminal powered by ansi-diff and neat-input.
var diffy = require('diffy')()
var trim = require('diffy/trim')
diffy.render(function () {
return trim(`
Hello user. The time is:
${new Date()}
That is all for now
`)
})
// re-render every 1s
setInterval(() => diffy.render(), 1000)
You can also use diffy to query input from a user
var diffy = require('diffy')()
var trim = require('diffy/trim')
var input = require('diffy/input')({style: style})
var names = []
input.on('update', () => diffy.render())
input.on('enter', (line) => names.push(line))
diffy.render(function () {
return trim(`
Enter your name: ${input.line()}
List of names: ${names.join(', ')}
`)
})
function style (start, cursor, end) {
return start + '[' + (cursor || ' ') + ']' + end
}
See the examples folder for more.
var diffy = require('diffy')([options])Make a new diffy instance. Writes to stdout.
Options include:
{
fullscreen: true // overtake the terminal like vim/less does
}
Note that if you use fullscreen: true, the terminal will be restored
on exit, even if your program crashes.
diffy.render([function])Trigger a render and/or update the default render
function. A render function should simply return a string
containing the output you wish to display and then diffy will make sure to only print the diff.
diffy.widthProperty containing the width of the terminal.
diffy.heightProperty containing the height of the terminal.
diffy.on('resize')Emitted when the terminal is resized. Triggers a render as well.
diffy.on('render')Emitted just before a render happens.
var input = require('diffy/input')()Get a neat-input instance. Use this if you want to accept interactive input.
var trim = require('diffy/trim')Helper function that trims and removes the indentation of a multiline string. Useful if you have a render function that returns an indented string like in the above example.
var trim = require('diffy/trim+newline')Helper function that trims but adds a newline at the end
With diffy, components are just strings you compose together to form your application. A bunch of modules already exists for this pattern, providing useful features.
Thank you to @Fouad for donating the module name.
MIT
FAQs
A tiny framework for building diff based interactive command line tools.
We found that diffy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.

Security News
GitHub has revoked npm classic tokens for publishing; maintainers must migrate, but OpenJS warns OIDC trusted publishing still has risky gaps for critical projects.