readline-pager 0.2.7 → 0.3.1

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/dist/worker.cjs CHANGED
@@ -1,6 +1,5 @@
1
1
  let node_fs_promises = require("node:fs/promises");
2
2
  let node_worker_threads = require("node:worker_threads");
3
-
4
3
  //#region src/worker.ts
5
4
  const { filepath, chunkSize, pageSize, delimiter } = node_worker_threads.workerData;
6
5
  (async () => {
@@ -15,23 +14,26 @@ const { filepath, chunkSize, pageSize, delimiter } = node_worker_threads.workerD
15
14
  const { bytesRead } = await fd.read(buf, 0, readSize, pos);
16
15
  pos += bytesRead;
17
16
  buffer += buf.toString("utf8", 0, bytesRead);
18
- const parts = buffer.split(delimiter);
19
- buffer = parts.pop() ?? "";
20
- for (const line of parts) {
17
+ let idx;
18
+ while ((idx = buffer.indexOf(delimiter)) !== -1) {
19
+ const line = buffer.slice(0, idx);
20
+ buffer = buffer.slice(idx + delimiter.length);
21
21
  local.push(line);
22
- if (local.length === pageSize) node_worker_threads.parentPort?.postMessage({
22
+ while (local.length >= pageSize) node_worker_threads.parentPort?.postMessage({
23
23
  type: "page",
24
- data: local.splice(0)
24
+ data: local.splice(0, pageSize)
25
25
  });
26
26
  }
27
27
  }
28
- if (buffer !== "") local.push(buffer);
29
- if (local.length) node_worker_threads.parentPort?.postMessage({
30
- type: "page",
31
- data: local
32
- });
28
+ local.push(buffer);
29
+ while (local.length > 0) {
30
+ const page = local.splice(0, pageSize);
31
+ node_worker_threads.parentPort?.postMessage({
32
+ type: "page",
33
+ data: page
34
+ });
35
+ }
33
36
  node_worker_threads.parentPort?.postMessage({ type: "done" });
34
37
  await fd.close();
35
38
  })();
36
-
37
- //#endregion
39
+ //#endregion
package/dist/worker.mjs CHANGED
@@ -1,6 +1,5 @@
1
1
  import { open } from "node:fs/promises";
2
2
  import { parentPort, workerData } from "node:worker_threads";
3
-
4
3
  //#region src/worker.ts
5
4
  const { filepath, chunkSize, pageSize, delimiter } = workerData;
6
5
  (async () => {
@@ -15,24 +14,27 @@ const { filepath, chunkSize, pageSize, delimiter } = workerData;
15
14
  const { bytesRead } = await fd.read(buf, 0, readSize, pos);
16
15
  pos += bytesRead;
17
16
  buffer += buf.toString("utf8", 0, bytesRead);
18
- const parts = buffer.split(delimiter);
19
- buffer = parts.pop() ?? "";
20
- for (const line of parts) {
17
+ let idx;
18
+ while ((idx = buffer.indexOf(delimiter)) !== -1) {
19
+ const line = buffer.slice(0, idx);
20
+ buffer = buffer.slice(idx + delimiter.length);
21
21
  local.push(line);
22
- if (local.length === pageSize) parentPort?.postMessage({
22
+ while (local.length >= pageSize) parentPort?.postMessage({
23
23
  type: "page",
24
- data: local.splice(0)
24
+ data: local.splice(0, pageSize)
25
25
  });
26
26
  }
27
27
  }
28
- if (buffer !== "") local.push(buffer);
29
- if (local.length) parentPort?.postMessage({
30
- type: "page",
31
- data: local
32
- });
28
+ local.push(buffer);
29
+ while (local.length > 0) {
30
+ const page = local.splice(0, pageSize);
31
+ parentPort?.postMessage({
32
+ type: "page",
33
+ data: page
34
+ });
35
+ }
33
36
  parentPort?.postMessage({ type: "done" });
34
37
  await fd.close();
35
38
  })();
36
-
37
39
  //#endregion
38
- export { };
40
+ export {};
package/package.json CHANGED
@@ -1,22 +1,27 @@
1
1
  {
2
2
  "name": "readline-pager",
3
- "version": "0.2.7",
3
+ "version": "0.3.1",
4
4
  "scripts": {
5
- "build": "tsdown",
5
+ "build:js": "tsdown",
6
+ "build:native": "prebuildify --napi --strip && rm -rf ./build",
7
+ "build": "npm run build:native && npm run build:js",
6
8
  "pretest": "npm run build",
7
9
  "test": "node --test --experimental-test-coverage test/**/*.test.ts",
8
- "prepublishOnly": "npm run build && npm run test",
10
+ "prepublishOnly": "npm run build",
9
11
  "benchmark": "node test/_benchmark.ts; bun test/_benchmark.ts; deno --allow-write --allow-read test/_benchmark.ts"
10
12
  },
11
13
  "devDependencies": {
12
- "@types/bun": "~1.3.9",
14
+ "@types/bun": "~1.3.11",
13
15
  "@types/deno": "~2.5.0",
14
- "@types/node": "~25.3.0",
16
+ "@types/node": "~25.5.0",
17
+ "node-gyp": "~12.2.0",
18
+ "prebuildify": "~6.0.1",
15
19
  "prettier": "~3.8.1",
16
20
  "prettier-plugin-organize-imports": "~4.3.0",
17
- "tsdown": "~0.20.3",
21
+ "tsdown": "~0.21.4",
18
22
  "typescript": "~5.9.3"
19
23
  },
24
+ "gypfile": false,
20
25
  "type": "module",
21
26
  "main": "./dist/main.cjs",
22
27
  "module": "./dist/main.mjs",