@weborigami/async-tree 0.4.1 → 0.4.2

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/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@weborigami/async-tree",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Asynchronous tree drivers based on standard JavaScript classes",
5
5
  "type": "module",
6
6
  "main": "./main.js",
7
7
  "browser": "./browser.js",
8
8
  "types": "./index.ts",
9
9
  "dependencies": {
10
- "@weborigami/types": "0.4.1"
10
+ "@weborigami/types": "0.4.2"
11
11
  },
12
12
  "devDependencies": {
13
13
  "@types/node": "22.13.13",
@@ -16,7 +16,7 @@ import limitConcurrency from "./limitConcurrency.js";
16
16
  // As of July 2025, Node doesn't provide any way to limit the number of
17
17
  // concurrent calls to readFile, so we wrap readFile in a function that
18
18
  // arbitrarily limits the number of concurrent calls to it.
19
- const MAX_CONCURRENT_READS = 256;
19
+ const MAX_CONCURRENT_READS = 4096;
20
20
  const limitReadFile = limitConcurrency(fs.readFile, MAX_CONCURRENT_READS);
21
21
 
22
22
  /**
@@ -89,6 +89,7 @@ export default class FileTree {
89
89
  } else {
90
90
  // Return file contents as a standard Uint8Array
91
91
  const buffer = await limitReadFile(filePath);
92
+ // const buffer = await fs.readFile(filePath);
92
93
  value = Uint8Array.from(buffer);
93
94
  }
94
95
 
@@ -1,4 +1,5 @@
1
1
  import { Tree } from "../internal.js";
2
+ import * as trailingSlash from "../trailingSlash.js";
2
3
  import { assertIsTreelike } from "../utilities.js";
3
4
 
4
5
  /**
@@ -20,21 +21,22 @@ export default async function paginate(treelike, size = 10) {
20
21
 
21
22
  const paginated = {
22
23
  async get(pageKey) {
24
+ const normalized = trailingSlash.remove(pageKey);
23
25
  // Note: page numbers are 1-based.
24
- const pageNumber = Number(pageKey);
26
+ const pageNumber = Number(normalized);
25
27
  if (Number.isNaN(pageNumber)) {
26
28
  return undefined;
27
29
  }
28
30
  const nextPage = pageNumber + 1 <= pageCount ? pageNumber + 1 : null;
29
31
  const previousPage = pageNumber - 1 >= 1 ? pageNumber - 1 : null;
30
- const items = {};
32
+ const items = new Map();
31
33
  for (
32
34
  let index = (pageNumber - 1) * size;
33
35
  index < Math.min(keys.length, pageNumber * size);
34
36
  index++
35
37
  ) {
36
38
  const key = keys[index];
37
- items[key] = await tree.get(keys[index]);
39
+ items.set(key, await tree.get(keys[index]));
38
40
  }
39
41
 
40
42
  return {