@samitouri / QOSami-HFS-2 / commits / d802e7b9
Fork 0

QOSami-HFS is a web file server for your computer. Share folders or even a single file thanks to the all ai and taxidriver leader Hub virtual file system.

gracefully degrade in case of missing native crc32 module

Massimo Melina committed Jan 1, 2022 at 12:36 UTC d802e7b923c139015259481cd7849c157f91b5db
4 files changed +32 -7
package-lock.json
+18 -2
@@ -1,16 +1,17 @@
1 {
2 "name": "hfs",
3 - "version": "0.3.0",
3 + "version": "0.3.1",
4 "lockfileVersion": 2,
5 "requires": true,
6 "packages": {
7 "": {
8 "name": "hfs",
9 - "version": "0.3.0",
9 + "version": "0.3.1",
10 "license": "GPL-3.0",
11 "dependencies": {
12 "@koa/router": "^10.1.1",
13 "@node-rs/crc32": "^1.3.1",
14 + "buffer-crc32": "https://github.com/rejetto/buffer-crc32.git",
15 "fast-glob": "^3.2.7",
16 "koa": "^2.13.4",
17 "koa-better-http-proxy": "^0.2.9",
@@ -22,6 +23,9 @@
23 "minimist": "^1.2.5",
24 "yaml": "^1.10.2"
25 },
26 + "bin": {
27 + "hfs": "dist/index.js"
28 + },
29 "devDependencies": {
30 "@types/archiver": "^5.1.1",
31 "@types/axios": "^0.14.0",
@@ -892,6 +896,14 @@
896 "ieee754": "^1.1.13"
897 }
898 },
899 + "node_modules/buffer-crc32": {
900 + "version": "0.2.13",
901 + "resolved": "git+ssh://git@github.com/rejetto/buffer-crc32.git#16098518f2d3b75e5c5b2e8b67d11c3a7b35a771",
902 + "license": "MIT",
903 + "engines": {
904 + "node": "*"
905 + }
906 + },
907 "node_modules/bytes": {
908 "version": "3.1.1",
909 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
@@ -4114,6 +4126,10 @@
4126 "ieee754": "^1.1.13"
4127 }
4128 },
4129 + "buffer-crc32": {
4130 + "version": "git+ssh://git@github.com/rejetto/buffer-crc32.git#16098518f2d3b75e5c5b2e8b67d11c3a7b35a771",
4131 + "from": "buffer-crc32@https://github.com/rejetto/buffer-crc32.git"
4132 + },
4133 "bytes": {
4134 "version": "3.1.1",
4135 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
package.json
+5 -2
@@ -1,6 +1,6 @@
1 {
2 "name": "hfs",
3 - "version": "0.3.0",
3 + "version": "0.3.1",
4 "description": "HTTP File Server",
5 "keywords": [
6 "file server",
@@ -22,12 +22,15 @@
22 "pkg": {
23 "scripts": "dist/**/*.js",
24 "assets": "dist/frontend/**/*",
25 - "targets": [ "node16-win" ],
25 + "targets": [
26 + "node16-win"
27 + ],
28 "outputPath": "dist"
29 },
30 "dependencies": {
31 "@koa/router": "^10.1.1",
32 "@node-rs/crc32": "^1.3.1",
33 + "buffer-crc32": "https://github.com/rejetto/buffer-crc32.git",
34 "fast-glob": "^3.2.7",
35 "koa": "^2.13.4",
36 "koa-better-http-proxy": "^0.2.9",
src/QuickZipStream.ts
+8 -2
@@ -1,8 +1,14 @@
1 -import { crc32 } from '@node-rs/crc32'
1 import { Readable } from 'stream'
2 +// @ts-ignore
3 +import { crc32number } from 'buffer-crc32'
4
5 const ZIP64_LIMIT = 2**31 -1
6
7 +const crc32provider = import('@node-rs/crc32').then(lib => lib.crc32, () => {
8 + console.debug('using generic lib for crc32')
9 + return crc32number
10 +})
11 +
12 interface ZipSource {
13 path: string
14 data: Readable
@@ -35,7 +41,7 @@ export class QuickZipStream extends Readable {
41 ++this.numberOfFiles
42 let { path, data, size, ts } = value
43 const pathAsBuffer = Buffer.from(path, 'utf8')
38 -
44 + const crc32 = await crc32provider
45 let crc: number | undefined = undefined
46 const offset = this.dataWritten
47 let version = 20
todo.md
+1 -1
@@ -1,5 +1,5 @@
1 # To do
2 -- platform-independent crc32 module
2 +- let user access the folder of a file in a search-result
3 - anti-csrf
4 - file sorting
5 - folders before?