version 3.1.1

Massimo Melina committed Apr 23, 2026 at 01:20 UTC b5f56bf266ed3d5f6e5662f395b59b331d42f01a
4 files changed +61 -41
.gitignore
+1
@@ -4,6 +4,7 @@ node_modules
4 hfs.plist
5 dist
6 .DS_Store
7 +scripts/sec
8 #produced by running
9 tests/work
10 tests/work2
package-lock.json
+58 -39
@@ -1,12 +1,12 @@
1 {
2 "name": "hfs",
3 - "version": "3.1.0",
3 + "version": "3.1.1",
4 "lockfileVersion": 2,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "hfs",
9 - "version": "3.1.0",
9 + "version": "3.1.1",
10 "license": "GPL-3.0",
11 "workspaces": [
12 "admin",
@@ -16,7 +16,7 @@
16 ],
17 "dependencies": {
18 "@gregoranders/csv": "^0.0.13",
19 - "@rejetto/kvstorage": "^0.17.2",
19 + "@rejetto/kvstorage": "^0.17.6",
20 "acme-client": "^5.4.0",
21 "busboy": "^1.6.0",
22 "crc-32": "^1.2.2",
@@ -2952,6 +2952,18 @@
2952 "react-dom": "^17.0.0 || ^18.0.0"
2953 }
2954 },
2955 + "node_modules/@nodable/entities": {
2956 + "version": "2.1.0",
2957 + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
2958 + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==",
2959 + "funding": [
2960 + {
2961 + "type": "github",
2962 + "url": "https://github.com/sponsors/nodable"
2963 + }
2964 + ],
2965 + "license": "MIT"
2966 + },
2967 "node_modules/@nodelib/fs.scandir": {
2968 "version": "2.1.5",
2969 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -3236,9 +3248,9 @@
3248 }
3249 },
3250 "node_modules/@rejetto/kvstorage": {
3239 - "version": "0.17.2",
3240 - "resolved": "https://registry.npmjs.org/@rejetto/kvstorage/-/kvstorage-0.17.2.tgz",
3241 - "integrity": "sha512-E7iGOPKUEofg0bC1AJ5TzYJnT1yThYgT86zp7K0B39VKFQ+dpZGqaKryx/6sLD69eKcOgJsDGvL9KDPkK4Ky7g==",
3251 + "version": "0.17.6",
3252 + "resolved": "https://registry.npmjs.org/@rejetto/kvstorage/-/kvstorage-0.17.6.tgz",
3253 + "integrity": "sha512-lebA0WZH+fMwNpdpAlJiw4LO9Mu1hhPiWfSlCuNYc8bxLs/WwqRe8Z/B3DgWF1OKYWSj+h3rKYFY6J5p/nt95g==",
3254 "license": "MIT"
3255 },
3256 "node_modules/@remix-run/router": {
@@ -5980,9 +5992,9 @@
5992 }
5993 },
5994 "node_modules/fast-xml-builder": {
5983 - "version": "1.1.4",
5984 - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz",
5985 - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==",
5995 + "version": "1.1.5",
5996 + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz",
5997 + "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==",
5998 "funding": [
5999 {
6000 "type": "github",
@@ -5995,9 +6007,9 @@
6007 }
6008 },
6009 "node_modules/fast-xml-parser": {
5998 - "version": "5.5.8",
5999 - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz",
6000 - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==",
6010 + "version": "5.7.1",
6011 + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.1.tgz",
6012 + "integrity": "sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==",
6013 "funding": [
6014 {
6015 "type": "github",
@@ -6006,9 +6018,10 @@
6018 ],
6019 "license": "MIT",
6020 "dependencies": {
6009 - "fast-xml-builder": "^1.1.4",
6010 - "path-expression-matcher": "^1.2.0",
6011 - "strnum": "^2.2.0"
6021 + "@nodable/entities": "^2.1.0",
6022 + "fast-xml-builder": "^1.1.5",
6023 + "path-expression-matcher": "^1.5.0",
6024 + "strnum": "^2.2.3"
6025 },
6026 "bin": {
6027 "fxparser": "src/cli/cli.js"
@@ -7679,9 +7692,9 @@
7692 }
7693 },
7694 "node_modules/path-expression-matcher": {
7682 - "version": "1.2.0",
7683 - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz",
7684 - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==",
7695 + "version": "1.5.0",
7696 + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz",
7697 + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==",
7698 "funding": [
7699 {
7700 "type": "github",
@@ -8951,9 +8964,9 @@
8964 }
8965 },
8966 "node_modules/strnum": {
8954 - "version": "2.2.1",
8955 - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz",
8956 - "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==",
8967 + "version": "2.2.3",
8968 + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz",
8969 + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==",
8970 "funding": [
8971 {
8972 "type": "github",
@@ -11575,6 +11588,11 @@
11588 "react-transition-group": "^4.4.5"
11589 }
11590 },
11591 + "@nodable/entities": {
11592 + "version": "2.1.0",
11593 + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
11594 + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA=="
11595 + },
11596 "@nodelib/fs.scandir": {
11597 "version": "2.1.5",
11598 "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -11814,9 +11832,9 @@
11832 }
11833 },
11834 "@rejetto/kvstorage": {
11817 - "version": "0.17.2",
11818 - "resolved": "https://registry.npmjs.org/@rejetto/kvstorage/-/kvstorage-0.17.2.tgz",
11819 - "integrity": "sha512-E7iGOPKUEofg0bC1AJ5TzYJnT1yThYgT86zp7K0B39VKFQ+dpZGqaKryx/6sLD69eKcOgJsDGvL9KDPkK4Ky7g=="
11835 + "version": "0.17.6",
11836 + "resolved": "https://registry.npmjs.org/@rejetto/kvstorage/-/kvstorage-0.17.6.tgz",
11837 + "integrity": "sha512-lebA0WZH+fMwNpdpAlJiw4LO9Mu1hhPiWfSlCuNYc8bxLs/WwqRe8Z/B3DgWF1OKYWSj+h3rKYFY6J5p/nt95g=="
11838 },
11839 "@remix-run/router": {
11840 "version": "1.23.2",
@@ -13571,21 +13589,22 @@
13589 }
13590 },
13591 "fast-xml-builder": {
13574 - "version": "1.1.4",
13575 - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz",
13576 - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==",
13592 + "version": "1.1.5",
13593 + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz",
13594 + "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==",
13595 "requires": {
13596 "path-expression-matcher": "^1.1.3"
13597 }
13598 },
13599 "fast-xml-parser": {
13582 - "version": "5.5.8",
13583 - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz",
13584 - "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==",
13600 + "version": "5.7.1",
13601 + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.1.tgz",
13602 + "integrity": "sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==",
13603 "requires": {
13586 - "fast-xml-builder": "^1.1.4",
13587 - "path-expression-matcher": "^1.2.0",
13588 - "strnum": "^2.2.0"
13604 + "@nodable/entities": "^2.1.0",
13605 + "fast-xml-builder": "^1.1.5",
13606 + "path-expression-matcher": "^1.5.0",
13607 + "strnum": "^2.2.3"
13608 }
13609 },
13610 "fastq": {
@@ -14723,9 +14742,9 @@
14742 "dev": true
14743 },
14744 "path-expression-matcher": {
14726 - "version": "1.2.0",
14727 - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz",
14728 - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ=="
14745 + "version": "1.5.0",
14746 + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz",
14747 + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ=="
14748 },
14749 "path-key": {
14750 "version": "3.1.1",
@@ -15608,9 +15627,9 @@
15627 }
15628 },
15629 "strnum": {
15611 - "version": "2.2.1",
15612 - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz",
15613 - "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg=="
15630 + "version": "2.2.3",
15631 + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.3.tgz",
15632 + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg=="
15633 },
15634 "stylis": {
15635 "version": "4.2.0",
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "hfs",
3 - "version": "3.1.0",
3 + "version": "3.1.1",
4 "description": "HTTP File Server",
5 "keywords": ["file server", "http server"],
6 "homepage": "https://rejetto.com/hfs",
tests/config.yaml
+1 -1
@@ -227,7 +227,7 @@ accounts:
227 admins:
228 allow_net: ::1
229 admin: true
230 -version: 3.1.0
230 +version: 3.1.1
231 max_downloads_per_account: 2
232 max_downloads: 1
233 roots: