Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
The readline npm package is a core Node.js module that provides an interface for reading data from a Readable stream (like process.stdin) one line at a time. It is particularly useful for creating command-line interfaces and reading large files line by line.
Reading Input from stdin
This code sets up a readline interface to read user input from the standard input (stdin). It asks the user 'What is your name?' and prints a greeting with the user's input.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('What is your name? ', (answer) => {
console.log(`Hello, ${answer}!`);
rl.close();
});
Reading a File Line by Line
This example demonstrates how to use readline to read a file line by line. It creates a readline interface with a file stream as input and logs each line to the console as it is read.
const fs = require('fs');
const readline = require('readline');
const rl = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
terminal: false
});
rl.on('line', (line) => {
console.log(line);
});
readline-sync is an npm package that provides synchronous readline capabilities. Unlike the asynchronous nature of readline, readline-sync blocks the event loop until input is received. This is useful for CLI applications where synchronous operations are preferred.
Inquirer.js is a powerful library for building interactive command-line interfaces. It offers more features than readline, such as checkboxes, lists, confirmations, and more. It is more suitable for complex CLI applications that require more than just line-by-line input.
Read a file line by line.
npm install linebyline
npm install .
npm test
Simple streaming readline module for NodeJS. Reads a file and buffers new lines emitting a line event for each line.
var readline = require('linebyline'),
rl = readline('./somefile.txt');
rl.on('line', function(line, lineCount, byteCount) {
// do something with the line of text
})
.on('error', function(e) {
// something went wrong
});
As the underlying fs.createReadStream
doesn't care about the specific ASCII encoding of the file, an alternative way to decode the file is by telling the readline
library to retain buffer and then decoding it using a converter (e.g. iconv-lite
).
var readline = require('linebyline'),
rl = readline('./file-in-win1251.txt', {
retainBuffer: true //tell readline to retain buffer
});
rl.on("line", function (data,linecount){
var line = iconv.decode(data, 'win1251');
// do something with the line of converted text
});
##API
readingObject
- file path or stream objectoptions
can include:
maxLineLength
- override the default 4K buffer size (lines longer than this will not be read)retainBuffer
- avoid converting to String prior to emitting 'line' event; will pass raw buffer with encoded data to the callbackBSD © Craig Brookes
FAQs
Simple streaming readline module.
We found that readline 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.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.