readline-pager 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,16 +1,24 @@
1
1
  # 📄 readline-pager
2
2
 
3
- <p align="center"><img src="logo.webp" alt="logo" width="349"></p>
3
+ <p align="center">
4
+ <img src="https://raw.githubusercontent.com/devmor-j/readline-pager/main/logo.webp" alt="logo" width="349">
5
+ </p>
4
6
 
5
- Memory-efficient, paginated file reader for Node.js with async iteration, prefetching, backward reading and optional worker support.
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/readline-pager">
9
+ <img src="https://img.shields.io/npm/v/readline-pager?color=brightgreen" alt="version">
10
+ </a>
11
+ <img src="https://img.shields.io/npm/dw/readline-pager" alt="downloads">
12
+ <img src="https://img.shields.io/github/stars/devmor-j/readline-pager" alt="stars">
13
+ </p>
6
14
 
7
- `readline-pager` reads large text files page-by-page without loading the entire file into memory.
15
+ ⚡ Memory-efficient, paginated file reader for Node.js with async iteration, prefetching, backward reading and optional worker support. `readline-pager` reads large text files page-by-page without loading the entire file into memory.
8
16
 
9
17
  - ✅ Zero dependencies
10
18
  - ✅ Async iterator (`for await...of`) + manual `next()` API
11
19
  - ✅ Forward & backward reading (EOF → BOF)
12
20
  - ✅ Optional worker thread mode (forward only)
13
- - ✅ Up to ~ faster than Node.js `readline`
21
+ - ✅ Up to ~3x faster than Node.js `readline`
14
22
  - ✅ ~97% test coverage & fully typed (TypeScript)
15
23
 
16
24
  > **Important:**
@@ -30,6 +38,7 @@ npm install readline-pager
30
38
 
31
39
  ```ts
32
40
  import { createPager } from "readline-pager";
41
+ // const { createPager } = require("readline-pager");
33
42
 
34
43
  const pager = createPager("./bigfile.txt");
35
44
 
@@ -43,8 +52,6 @@ for await (const page of pager) {
43
52
  **Recommended for highest throughput:**
44
53
 
45
54
  ```ts
46
- const pager = createPager("./bigfile.txt");
47
-
48
55
  while (true) {
49
56
  const page = await pager.next();
50
57
  if (!page) break;
@@ -52,9 +59,7 @@ while (true) {
52
59
 
53
60
  // or
54
61
  let page;
55
- while ((page = await pager.next()) !== null) {
56
- // process page
57
- }
62
+ while ((page = await pager.next()) !== null) {}
58
63
  ```
59
64
 
60
65
  - `while + next()` is the fastest iteration method (avoids extra async-iterator overhead).
@@ -68,14 +73,14 @@ while ((page = await pager.next()) !== null) {
68
73
  createPager(filepath, {
69
74
  chunkSize?: number, // default: 64 * 1024 (64 KiB)
70
75
  pageSize?: number, // default: 1_000
71
- delimiter?: string, // default: "\n"
76
+ delimiter?: string, // default: "\n"
72
77
  prefetch?: number, // default: 1
73
78
  backward?: boolean, // default: false
74
79
  useWorker?: boolean, // default: false (forward only)
75
80
  });
76
81
  ```
77
82
 
78
- - `chunkSize`: number of bytes read per I/O operation. **Tune this** — default is `64 * 1024`.
83
+ - `chunkSize` number of bytes read per I/O operation.
79
84
  - `pageSize` — number of lines per page.
80
85
  - `delimiter` — line separator.
81
86
  - `prefetch` — max number of pages buffered internally. Not required for typical use; tuning has little effect once the engine is optimized.
@@ -127,14 +132,14 @@ node test/_benchmark.ts --lines=20000 --page-size=500 --backward
127
132
  | 100M | 3528.59 | ~441 | ~298 | **~1,378** |
128
133
  | 1,000M | 35285.95 | ~426 | ~294 | **~1,168** |
129
134
 
130
- **Takeaway:** `readline-pager` delivers multi-GB/s memory-to-memory throughput on large files on typical NVMe hardware; results vary with `chunkSize`, runtime (Node vs Bun), and CPU/OS.
135
+ **Runtime Environment:** Node.js v25.6.1 & Bun v1.3.9
131
136
 
132
137
  ---
133
138
 
134
139
  ## 🛠 Development & Contributing
135
140
 
136
- - Minimum supported Node.js: **v18.12** (lts/hydrogen).
137
- - Development/test environment: **Node v25.6**, **TypeScript v5.9**.
141
+ - Minimum supported Node.js: **v18.12 (lts/hydrogen)**.
142
+ - Development/test environment: **Node v25.6 & TypeScript v5.9**.
138
143
 
139
144
  Run tests:
140
145
 
package/dist/main.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
2
  let node_fs_promises = require("node:fs/promises");
3
3
  let node_worker_threads = require("node:worker_threads");
4
4
 
@@ -298,4 +298,5 @@ function createPager(filepath, options = {}) {
298
298
  }
299
299
 
300
300
  //#endregion
301
- exports.createPager = createPager;
301
+ exports.createPager = createPager;
302
+ exports.default = createPager;
package/dist/main.d.cts CHANGED
@@ -20,4 +20,4 @@ interface Pager extends AsyncIterable<string[]> {
20
20
  //#region src/main.d.ts
21
21
  declare function createPager(filepath: string, options?: PagerOptions): Pager;
22
22
  //#endregion
23
- export { Pager, PagerOptions, ReaderOptions, createPager };
23
+ export { Pager, PagerOptions, ReaderOptions, createPager, createPager as default };
package/dist/main.d.mts CHANGED
@@ -20,4 +20,4 @@ interface Pager extends AsyncIterable<string[]> {
20
20
  //#region src/main.d.ts
21
21
  declare function createPager(filepath: string, options?: PagerOptions): Pager;
22
22
  //#endregion
23
- export { Pager, PagerOptions, ReaderOptions, createPager };
23
+ export { Pager, PagerOptions, ReaderOptions, createPager, createPager as default };
package/dist/main.mjs CHANGED
@@ -302,4 +302,4 @@ function createPager(filepath, options = {}) {
302
302
  }
303
303
 
304
304
  //#endregion
305
- export { createPager };
305
+ export { createPager, createPager as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "readline-pager",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "scripts": {
5
5
  "build": "tsdown",
6
6
  "pretest": "npm run build",