analiza-sync
v1.0.1
Published
Simple synchronous input() for Node.js, similar to Python's input()
Maintainers
Readme
# analiza-sync
A tiny helper that provides a **synchronous** `input()` function for Node.js, similar to Python's built-in `input()`.
Designed for teaching and simple CLI exercises, so students can write:
```js
const name = input('Name: ');
console.log('Hello,', name);without dealing with async/await, streams or callbacks.
⚠️ This library is blocking by design. It is intended for small CLI programs and exams, not for servers.
Installation
npm install analiza-syncUsage
ES Modules (recommended)
import input from 'analiza-sync';
const name = input('Name: ');
const age = input('Age: ');
console.log(`Hello ${name}, you are ${age} years old.`);CommonJS (Node 18+ with createRequire)
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const input = require('analiza-sync').default;
const name = input('Name: ');
console.log('Hi', name);API
input(prompt?: string): string
prompt(optional) – text to print before waiting for input.- Returns: the line the user typed, without the trailing newline.
Behavior:
- Prints the prompt without a newline (like Python’s
input()). - Blocks the Node.js event loop until the user types a line and presses Enter.
- Strips the ending
\n(and\ron Windows) from the result. - Returns an empty string if the user just presses Enter.
How it works (high level)
Internally, this library:
- Writes the prompt using
fs.writeSync(1, prompt)→ stdout (file descriptor1). - Allocates a 1-byte
Buffer. - Repeatedly calls
fs.readSync(0, buffer, 0, 1, null)→ stdin (file descriptor0). - Converts each byte to a character and appends it to a string.
- Stops reading when it sees a newline (
'\n'), ignoring carriage returns ('\r').
This is intentionally blocking and simple, to mirror the mental model of Python’s input() and make it easier for students to focus on the programming task rather than on Node’s async primitives.
When should you (not) use this?
✅ Good for:
- Teaching basic programming concepts in Node.js.
- Small CLI exercises and exams.
- Quick scripts where blocking is acceptable.
🚫 Not recommended for:
- HTTP servers / long-running services.
- Applications that depend on non-blocking I/O and high concurrency.
License
MIT
