generic-filehandle2 2.0.14 → 2.0.16
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/blobFile.d.ts +0 -1
- package/dist/blobFile.js +10 -4
- package/dist/blobFile.js.map +1 -1
- package/dist/localFile.js +4 -2
- package/dist/localFile.js.map +1 -1
- package/dist/remoteFile.js +28 -19
- package/dist/remoteFile.js.map +1 -1
- package/esm/blobFile.d.ts +0 -1
- package/esm/blobFile.js +10 -4
- package/esm/blobFile.js.map +1 -1
- package/esm/localFile.js +4 -2
- package/esm/localFile.js.map +1 -1
- package/esm/remoteFile.js +28 -19
- package/esm/remoteFile.js.map +1 -1
- package/package.json +5 -4
- package/src/blobFile.ts +10 -5
- package/src/localFile.ts +4 -2
- package/src/remoteFile.ts +29 -18
package/dist/blobFile.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import type { FilehandleOptions, GenericFilehandle, Stats } from './filehandle.t
|
|
|
7
7
|
*/
|
|
8
8
|
export default class BlobFile implements GenericFilehandle {
|
|
9
9
|
private blob;
|
|
10
|
-
private size;
|
|
11
10
|
constructor(blob: Blob);
|
|
12
11
|
read(length: number, position?: number): Promise<Uint8Array<ArrayBuffer>>;
|
|
13
12
|
readFile(): Promise<Uint8Array<ArrayBuffer>>;
|
package/dist/blobFile.js
CHANGED
|
@@ -9,7 +9,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
class BlobFile {
|
|
10
10
|
constructor(blob) {
|
|
11
11
|
this.blob = blob;
|
|
12
|
-
this.size = blob.size;
|
|
13
12
|
}
|
|
14
13
|
async read(length, position = 0) {
|
|
15
14
|
// short-circuit a read of 0 bytes here, because browsers actually sometimes
|
|
@@ -19,7 +18,11 @@ class BlobFile {
|
|
|
19
18
|
}
|
|
20
19
|
const start = position;
|
|
21
20
|
const end = start + length;
|
|
22
|
-
|
|
21
|
+
const slice = this.blob.slice(start, end);
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
23
|
+
return slice.bytes
|
|
24
|
+
? slice.bytes()
|
|
25
|
+
: new Uint8Array(await slice.arrayBuffer());
|
|
23
26
|
}
|
|
24
27
|
async readFile(options) {
|
|
25
28
|
const encoding = typeof options === 'string' ? options : options?.encoding;
|
|
@@ -30,11 +33,14 @@ class BlobFile {
|
|
|
30
33
|
throw new Error(`unsupported encoding: ${encoding}`);
|
|
31
34
|
}
|
|
32
35
|
else {
|
|
33
|
-
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
37
|
+
return this.blob.bytes
|
|
38
|
+
? this.blob.bytes()
|
|
39
|
+
: new Uint8Array(await this.blob.arrayBuffer());
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
async stat() {
|
|
37
|
-
return { size: this.size };
|
|
43
|
+
return { size: this.blob.size };
|
|
38
44
|
}
|
|
39
45
|
async close() {
|
|
40
46
|
return;
|
package/dist/blobFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobFile.js","sourceRoot":"","sources":["../src/blobFile.ts"],"names":[],"mappings":";;AAMA;;;;;GAKG;AACH,MAAqB,QAAQ;
|
|
1
|
+
{"version":3,"file":"blobFile.js","sourceRoot":"","sources":["../src/blobFile.ts"],"names":[],"mappings":";;AAMA;;;;;GAKG;AACH,MAAqB,QAAQ;IAG3B,YAAmB,IAAU;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAc,EACd,QAAQ,GAAG,CAAC;QAEZ,4EAA4E;QAC5E,sDAAsD;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAA;QACtB,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAA;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACzC,uEAAuE;QACvE,OAAO,KAAK,CAAC,KAAK;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;YACf,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/C,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAA;QAC1E,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;gBACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnB,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAM;IACR,CAAC;CACF;AA5DD,2BA4DC"}
|
package/dist/localFile.js
CHANGED
|
@@ -6,6 +6,9 @@ class LocalFile {
|
|
|
6
6
|
this.filename = source;
|
|
7
7
|
}
|
|
8
8
|
async read(length, position = 0) {
|
|
9
|
+
if (length === 0) {
|
|
10
|
+
return new Uint8Array(0);
|
|
11
|
+
}
|
|
9
12
|
const arr = new Uint8Array(length);
|
|
10
13
|
let fd; // Declare fd outside the try block so it's accessible in finally
|
|
11
14
|
try {
|
|
@@ -22,8 +25,7 @@ class LocalFile {
|
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
async readFile(options) {
|
|
25
|
-
|
|
26
|
-
return typeof res === 'string' ? res : new Uint8Array(res);
|
|
28
|
+
return (0, promises_1.readFile)(this.filename, options);
|
|
27
29
|
}
|
|
28
30
|
async stat() {
|
|
29
31
|
return (0, promises_1.stat)(this.filename);
|
package/dist/localFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localFile.js","sourceRoot":"","sources":["../src/localFile.ts"],"names":[],"mappings":";;AAAA,0CAAkD;AAIlD,MAAqB,SAAS;IAG5B,YAAmB,MAAc,EAAE,QAA2B,EAAE;QAC9D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAQ,GAAG,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,EAAE,CAAA,CAAC,iEAAiE;QACxE,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,iEAAiE;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,+CAA+C;gBAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,
|
|
1
|
+
{"version":3,"file":"localFile.js","sourceRoot":"","sources":["../src/localFile.ts"],"names":[],"mappings":";;AAAA,0CAAkD;AAIlD,MAAqB,SAAS;IAG5B,YAAmB,MAAc,EAAE,QAA2B,EAAE;QAC9D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAQ,GAAG,CAAC;QAC5C,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,EAAE,CAAA,CAAC,iEAAiE;QACxE,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,iEAAiE;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,+CAA+C;gBAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,OAAO,IAAA,eAAI,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,gBAAgB;IAClB,CAAC;CACF;AAjDD,4BAiDC"}
|
package/dist/remoteFile.js
CHANGED
|
@@ -45,9 +45,12 @@ class RemoteFile {
|
|
|
45
45
|
return response;
|
|
46
46
|
}
|
|
47
47
|
async read(length, position, opts = {}) {
|
|
48
|
+
if (length === 0) {
|
|
49
|
+
return new Uint8Array(0);
|
|
50
|
+
}
|
|
48
51
|
const { headers = {}, signal, overrides = {} } = opts;
|
|
49
52
|
if (length < Infinity) {
|
|
50
|
-
headers.range = `bytes=${position}-${position + length}`;
|
|
53
|
+
headers.range = `bytes=${position}-${position + length - 1}`;
|
|
51
54
|
}
|
|
52
55
|
else if (length === Infinity && position !== 0) {
|
|
53
56
|
headers.range = `bytes=${position}-`;
|
|
@@ -56,9 +59,9 @@ class RemoteFile {
|
|
|
56
59
|
...this.baseOverrides,
|
|
57
60
|
...overrides,
|
|
58
61
|
headers: {
|
|
59
|
-
...headers,
|
|
60
|
-
...overrides.headers,
|
|
61
62
|
...this.baseOverrides.headers,
|
|
63
|
+
...overrides.headers,
|
|
64
|
+
...headers,
|
|
62
65
|
},
|
|
63
66
|
method: 'GET',
|
|
64
67
|
redirect: 'follow',
|
|
@@ -69,7 +72,6 @@ class RemoteFile {
|
|
|
69
72
|
throw new Error(`HTTP ${res.status} fetching ${this.url}`);
|
|
70
73
|
}
|
|
71
74
|
if ((res.status === 200 && position === 0) || res.status === 206) {
|
|
72
|
-
const resData = await res.arrayBuffer();
|
|
73
75
|
// try to parse out the size of the remote file
|
|
74
76
|
const contentRange = res.headers.get('content-range');
|
|
75
77
|
const sizeMatch = /\/(\d+)$/.exec(contentRange || '');
|
|
@@ -78,15 +80,17 @@ class RemoteFile {
|
|
|
78
80
|
size: parseInt(sizeMatch[1], 10),
|
|
79
81
|
};
|
|
80
82
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
84
|
+
const resData = res.bytes
|
|
85
|
+
? await res.bytes()
|
|
86
|
+
: new Uint8Array(await res.arrayBuffer());
|
|
87
|
+
return resData.byteLength <= length
|
|
88
|
+
? resData
|
|
89
|
+
: resData.subarray(0, length);
|
|
90
|
+
}
|
|
91
|
+
throw new Error(res.status === 200
|
|
92
|
+
? `${this.url} fetch returned status 200, expected 206`
|
|
93
|
+
: `HTTP ${res.status} fetching ${this.url}`);
|
|
90
94
|
}
|
|
91
95
|
async readFile(options = {}) {
|
|
92
96
|
let encoding;
|
|
@@ -97,18 +101,22 @@ class RemoteFile {
|
|
|
97
101
|
}
|
|
98
102
|
else {
|
|
99
103
|
encoding = options.encoding;
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
const { encoding: _, ...rest } = options;
|
|
105
|
+
opts = rest;
|
|
102
106
|
}
|
|
103
107
|
const { headers = {}, signal, overrides = {} } = opts;
|
|
104
108
|
const res = await this.fetch(this.url, {
|
|
105
|
-
|
|
109
|
+
...this.baseOverrides,
|
|
110
|
+
...overrides,
|
|
111
|
+
headers: {
|
|
112
|
+
...this.baseOverrides.headers,
|
|
113
|
+
...overrides.headers,
|
|
114
|
+
...headers,
|
|
115
|
+
},
|
|
106
116
|
method: 'GET',
|
|
107
117
|
redirect: 'follow',
|
|
108
118
|
mode: 'cors',
|
|
109
119
|
signal,
|
|
110
|
-
...this.baseOverrides,
|
|
111
|
-
...overrides,
|
|
112
120
|
});
|
|
113
121
|
if (res.status !== 200) {
|
|
114
122
|
throw new Error(`HTTP ${res.status} fetching ${this.url}`);
|
|
@@ -120,7 +128,8 @@ class RemoteFile {
|
|
|
120
128
|
throw new Error(`unsupported encoding: ${encoding}`);
|
|
121
129
|
}
|
|
122
130
|
else {
|
|
123
|
-
|
|
131
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
132
|
+
return res.bytes ? res.bytes() : new Uint8Array(await res.arrayBuffer());
|
|
124
133
|
}
|
|
125
134
|
}
|
|
126
135
|
async stat() {
|
package/dist/remoteFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":";;AAOA,SAAS,UAAU,CAAC,CAAU;IAC5B,MAAM,CAAC,GACL,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC;QACnD,CAAC,CAAE,CAAC,CAAC,OAAkB;QACvB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;IACZ,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC;AAED,MAAqB,UAAU;IAM7B,YAAmB,MAAc,EAAE,OAA0B,EAAE;QAFvD,kBAAa,GAAQ,EAAE,CAAA;QAG7B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACrC,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,KAAK,CAChB,KAAkB,EAClB,IAA6B;QAE7B,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACvC,4DAA4D;gBAC5D,oEAAoE;gBACpE,iDAAiD;gBACjD,uDAAuD;gBACvD,OAAO,CAAC,IAAI,CACV,kCAAkC,KAAK,2DAA2D,CACnG,CAAA;gBACD,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;wBAC/C,GAAG,IAAI;wBACP,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAc,EACd,QAAgB,EAChB,OAA0B,EAAE;QAE5B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QACrD,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,SAAS,QAAQ,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":";;AAOA,SAAS,UAAU,CAAC,CAAU;IAC5B,MAAM,CAAC,GACL,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC;QACnD,CAAC,CAAE,CAAC,CAAC,OAAkB;QACvB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;IACZ,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC;AAED,MAAqB,UAAU;IAM7B,YAAmB,MAAc,EAAE,OAA0B,EAAE;QAFvD,kBAAa,GAAQ,EAAE,CAAA;QAG7B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACrC,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,KAAK,CAChB,KAAkB,EAClB,IAA6B;QAE7B,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACvC,4DAA4D;gBAC5D,oEAAoE;gBACpE,iDAAiD;gBACjD,uDAAuD;gBACvD,OAAO,CAAC,IAAI,CACV,kCAAkC,KAAK,2DAA2D,CACnG,CAAA;gBACD,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;wBAC/C,GAAG,IAAI;wBACP,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAc,EACd,QAAgB,EAChB,OAA0B,EAAE;QAE5B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QACD,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QACrD,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,SAAS,QAAQ,IAAI,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,CAAA;QAC9D,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,KAAK,GAAG,SAAS,QAAQ,GAAG,CAAA;QACtC,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,SAAS;YACZ,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;gBAC7B,GAAG,SAAS,CAAC,OAAO;gBACpB,GAAG,OAAO;aACX;YACD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,MAAM;YACZ,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACjE,+CAA+C;YAC/C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YACrD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;YACrD,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,KAAK,GAAG;oBACX,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;iBACjC,CAAA;YACH,CAAC;YAED,uEAAuE;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK;gBACvB,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE;gBACnB,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;YAC3C,OAAO,OAAO,CAAC,UAAU,IAAI,MAAM;gBACjC,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,GAAG,CAAC,MAAM,KAAK,GAAG;YAChB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,0CAA0C;YACvD,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,IAAI,CAAC,GAAG,EAAE,CAC9C,CAAA;IACH,CAAC;IAiBM,KAAK,CAAC,QAAQ,CACnB,UAA8C,EAAE;QAEhD,IAAI,QAAQ,CAAA;QACZ,IAAI,IAAI,CAAA;QACR,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,QAAQ,GAAG,OAAO,CAAA;YAClB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;YAC3B,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;YACxC,IAAI,GAAG,IAAI,CAAA;QACb,CAAC;QACD,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,SAAS;YACZ,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO;gBAC7B,GAAG,SAAS,CAAC,OAAO;gBACpB,GAAG,OAAO;aACX;YACD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,MAAM;YACZ,MAAM;SACP,CAAC,CAAA;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QAC5D,CAAC;QACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;YACtB,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAM;IACR,CAAC;CACF;AA7KD,6BA6KC"}
|
package/esm/blobFile.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import type { FilehandleOptions, GenericFilehandle, Stats } from './filehandle.t
|
|
|
7
7
|
*/
|
|
8
8
|
export default class BlobFile implements GenericFilehandle {
|
|
9
9
|
private blob;
|
|
10
|
-
private size;
|
|
11
10
|
constructor(blob: Blob);
|
|
12
11
|
read(length: number, position?: number): Promise<Uint8Array<ArrayBuffer>>;
|
|
13
12
|
readFile(): Promise<Uint8Array<ArrayBuffer>>;
|
package/esm/blobFile.js
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
export default class BlobFile {
|
|
8
8
|
constructor(blob) {
|
|
9
9
|
this.blob = blob;
|
|
10
|
-
this.size = blob.size;
|
|
11
10
|
}
|
|
12
11
|
async read(length, position = 0) {
|
|
13
12
|
// short-circuit a read of 0 bytes here, because browsers actually sometimes
|
|
@@ -17,7 +16,11 @@ export default class BlobFile {
|
|
|
17
16
|
}
|
|
18
17
|
const start = position;
|
|
19
18
|
const end = start + length;
|
|
20
|
-
|
|
19
|
+
const slice = this.blob.slice(start, end);
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
21
|
+
return slice.bytes
|
|
22
|
+
? slice.bytes()
|
|
23
|
+
: new Uint8Array(await slice.arrayBuffer());
|
|
21
24
|
}
|
|
22
25
|
async readFile(options) {
|
|
23
26
|
const encoding = typeof options === 'string' ? options : options?.encoding;
|
|
@@ -28,11 +31,14 @@ export default class BlobFile {
|
|
|
28
31
|
throw new Error(`unsupported encoding: ${encoding}`);
|
|
29
32
|
}
|
|
30
33
|
else {
|
|
31
|
-
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
35
|
+
return this.blob.bytes
|
|
36
|
+
? this.blob.bytes()
|
|
37
|
+
: new Uint8Array(await this.blob.arrayBuffer());
|
|
32
38
|
}
|
|
33
39
|
}
|
|
34
40
|
async stat() {
|
|
35
|
-
return { size: this.size };
|
|
41
|
+
return { size: this.blob.size };
|
|
36
42
|
}
|
|
37
43
|
async close() {
|
|
38
44
|
return;
|
package/esm/blobFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobFile.js","sourceRoot":"","sources":["../src/blobFile.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;
|
|
1
|
+
{"version":3,"file":"blobFile.js","sourceRoot":"","sources":["../src/blobFile.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAG3B,YAAmB,IAAU;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAc,EACd,QAAQ,GAAG,CAAC;QAEZ,4EAA4E;QAC5E,sDAAsD;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAA;QACtB,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAA;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACzC,uEAAuE;QACvE,OAAO,KAAK,CAAC,KAAK;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;YACf,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/C,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAA;QAC1E,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QACzB,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;gBACpB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnB,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACnD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAM;IACR,CAAC;CACF"}
|
package/esm/localFile.js
CHANGED
|
@@ -4,6 +4,9 @@ export default class LocalFile {
|
|
|
4
4
|
this.filename = source;
|
|
5
5
|
}
|
|
6
6
|
async read(length, position = 0) {
|
|
7
|
+
if (length === 0) {
|
|
8
|
+
return new Uint8Array(0);
|
|
9
|
+
}
|
|
7
10
|
const arr = new Uint8Array(length);
|
|
8
11
|
let fd; // Declare fd outside the try block so it's accessible in finally
|
|
9
12
|
try {
|
|
@@ -20,8 +23,7 @@ export default class LocalFile {
|
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
async readFile(options) {
|
|
23
|
-
|
|
24
|
-
return typeof res === 'string' ? res : new Uint8Array(res);
|
|
26
|
+
return readFile(this.filename, options);
|
|
25
27
|
}
|
|
26
28
|
async stat() {
|
|
27
29
|
return stat(this.filename);
|
package/esm/localFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localFile.js","sourceRoot":"","sources":["../src/localFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIlD,MAAM,CAAC,OAAO,OAAO,SAAS;IAG5B,YAAmB,MAAc,EAAE,QAA2B,EAAE;QAC9D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAQ,GAAG,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,EAAE,CAAA,CAAC,iEAAiE;QACxE,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,iEAAiE;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,+CAA+C;gBAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,
|
|
1
|
+
{"version":3,"file":"localFile.js","sourceRoot":"","sources":["../src/localFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIlD,MAAM,CAAC,OAAO,OAAO,SAAS;IAG5B,YAAmB,MAAc,EAAE,QAA2B,EAAE;QAC9D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAQ,GAAG,CAAC;QAC5C,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,EAAE,CAAA,CAAC,iEAAiE;QACxE,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACnC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;YACnD,OAAO,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9C,CAAC;gBAAS,CAAC;YACT,iEAAiE;YACjE,IAAI,EAAE,EAAE,CAAC;gBACP,+CAA+C;gBAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAYM,KAAK,CAAC,QAAQ,CACnB,OAA4C;QAE5C,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,gBAAgB;IAClB,CAAC;CACF"}
|
package/esm/remoteFile.js
CHANGED
|
@@ -43,9 +43,12 @@ export default class RemoteFile {
|
|
|
43
43
|
return response;
|
|
44
44
|
}
|
|
45
45
|
async read(length, position, opts = {}) {
|
|
46
|
+
if (length === 0) {
|
|
47
|
+
return new Uint8Array(0);
|
|
48
|
+
}
|
|
46
49
|
const { headers = {}, signal, overrides = {} } = opts;
|
|
47
50
|
if (length < Infinity) {
|
|
48
|
-
headers.range = `bytes=${position}-${position + length}`;
|
|
51
|
+
headers.range = `bytes=${position}-${position + length - 1}`;
|
|
49
52
|
}
|
|
50
53
|
else if (length === Infinity && position !== 0) {
|
|
51
54
|
headers.range = `bytes=${position}-`;
|
|
@@ -54,9 +57,9 @@ export default class RemoteFile {
|
|
|
54
57
|
...this.baseOverrides,
|
|
55
58
|
...overrides,
|
|
56
59
|
headers: {
|
|
57
|
-
...headers,
|
|
58
|
-
...overrides.headers,
|
|
59
60
|
...this.baseOverrides.headers,
|
|
61
|
+
...overrides.headers,
|
|
62
|
+
...headers,
|
|
60
63
|
},
|
|
61
64
|
method: 'GET',
|
|
62
65
|
redirect: 'follow',
|
|
@@ -67,7 +70,6 @@ export default class RemoteFile {
|
|
|
67
70
|
throw new Error(`HTTP ${res.status} fetching ${this.url}`);
|
|
68
71
|
}
|
|
69
72
|
if ((res.status === 200 && position === 0) || res.status === 206) {
|
|
70
|
-
const resData = await res.arrayBuffer();
|
|
71
73
|
// try to parse out the size of the remote file
|
|
72
74
|
const contentRange = res.headers.get('content-range');
|
|
73
75
|
const sizeMatch = /\/(\d+)$/.exec(contentRange || '');
|
|
@@ -76,15 +78,17 @@ export default class RemoteFile {
|
|
|
76
78
|
size: parseInt(sizeMatch[1], 10),
|
|
77
79
|
};
|
|
78
80
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
82
|
+
const resData = res.bytes
|
|
83
|
+
? await res.bytes()
|
|
84
|
+
: new Uint8Array(await res.arrayBuffer());
|
|
85
|
+
return resData.byteLength <= length
|
|
86
|
+
? resData
|
|
87
|
+
: resData.subarray(0, length);
|
|
88
|
+
}
|
|
89
|
+
throw new Error(res.status === 200
|
|
90
|
+
? `${this.url} fetch returned status 200, expected 206`
|
|
91
|
+
: `HTTP ${res.status} fetching ${this.url}`);
|
|
88
92
|
}
|
|
89
93
|
async readFile(options = {}) {
|
|
90
94
|
let encoding;
|
|
@@ -95,18 +99,22 @@ export default class RemoteFile {
|
|
|
95
99
|
}
|
|
96
100
|
else {
|
|
97
101
|
encoding = options.encoding;
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
const { encoding: _, ...rest } = options;
|
|
103
|
+
opts = rest;
|
|
100
104
|
}
|
|
101
105
|
const { headers = {}, signal, overrides = {} } = opts;
|
|
102
106
|
const res = await this.fetch(this.url, {
|
|
103
|
-
|
|
107
|
+
...this.baseOverrides,
|
|
108
|
+
...overrides,
|
|
109
|
+
headers: {
|
|
110
|
+
...this.baseOverrides.headers,
|
|
111
|
+
...overrides.headers,
|
|
112
|
+
...headers,
|
|
113
|
+
},
|
|
104
114
|
method: 'GET',
|
|
105
115
|
redirect: 'follow',
|
|
106
116
|
mode: 'cors',
|
|
107
117
|
signal,
|
|
108
|
-
...this.baseOverrides,
|
|
109
|
-
...overrides,
|
|
110
118
|
});
|
|
111
119
|
if (res.status !== 200) {
|
|
112
120
|
throw new Error(`HTTP ${res.status} fetching ${this.url}`);
|
|
@@ -118,7 +126,8 @@ export default class RemoteFile {
|
|
|
118
126
|
throw new Error(`unsupported encoding: ${encoding}`);
|
|
119
127
|
}
|
|
120
128
|
else {
|
|
121
|
-
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
130
|
+
return res.bytes ? res.bytes() : new Uint8Array(await res.arrayBuffer());
|
|
122
131
|
}
|
|
123
132
|
}
|
|
124
133
|
async stat() {
|
package/esm/remoteFile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":"AAOA,SAAS,UAAU,CAAC,CAAU;IAC5B,MAAM,CAAC,GACL,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC;QACnD,CAAC,CAAE,CAAC,CAAC,OAAkB;QACvB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;IACZ,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAM7B,YAAmB,MAAc,EAAE,OAA0B,EAAE;QAFvD,kBAAa,GAAQ,EAAE,CAAA;QAG7B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC7D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACrC,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;IAClC,CAAC;IAEM,KAAK,CAAC,KAAK,CAChB,KAAkB,EAClB,IAA6B;QAE7B,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACvC,4DAA4D;gBAC5D,oEAAoE;gBACpE,iDAAiD;gBACjD,uDAAuD;gBACvD,OAAO,CAAC,IAAI,CACV,kCAAkC,KAAK,2DAA2D,CACnG,CAAA;gBACD,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;wBAC/C,GAAG,IAAI;wBACP,KAAK,EAAE,QAAQ;qBAChB,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAAc,EACd,QAAgB,EAChB,OAA0B,EAAE;QAE5B,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QACrD,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,SAAS,QAAQ,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generic-filehandle2",
|
|
3
3
|
"description": "uniform interface for accessing binary data from local files, remote HTTP resources, and browser Blob data",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.16",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"coverage": "yarn test --coverage",
|
|
35
35
|
"lint": "eslint --report-unused-disable-directives --max-warnings 0 src test",
|
|
36
36
|
"clean": "rimraf dist esm",
|
|
37
|
+
"format": "prettier --write .",
|
|
37
38
|
"prebuild": "yarn clean",
|
|
38
39
|
"build:esm": "tsc --outDir esm",
|
|
39
40
|
"build:es5": "tsc --module commonjs --outDir dist",
|
|
@@ -51,17 +52,17 @@
|
|
|
51
52
|
"devDependencies": {
|
|
52
53
|
"@types/node": "^24.3.1",
|
|
53
54
|
"@types/range-parser": "^1.2.7",
|
|
54
|
-
"@vitest/coverage-v8": "^
|
|
55
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
55
56
|
"eslint": "^9.16.0",
|
|
56
57
|
"eslint-plugin-import": "^2.31.0",
|
|
57
|
-
"eslint-plugin-unicorn": "^
|
|
58
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
58
59
|
"prettier": "^3.4.1",
|
|
59
60
|
"range-parser": "^1.2.1",
|
|
60
61
|
"rimraf": "^6.0.0",
|
|
61
62
|
"standard-changelog": "^7.0.1",
|
|
62
63
|
"typescript": "^5.7.0",
|
|
63
64
|
"typescript-eslint": "^8.18.0",
|
|
64
|
-
"vitest": "^
|
|
65
|
+
"vitest": "^4.0.15"
|
|
65
66
|
},
|
|
66
67
|
"publishConfig": {
|
|
67
68
|
"access": "public"
|
package/src/blobFile.ts
CHANGED
|
@@ -12,11 +12,9 @@ import type {
|
|
|
12
12
|
*/
|
|
13
13
|
export default class BlobFile implements GenericFilehandle {
|
|
14
14
|
private blob: Blob
|
|
15
|
-
private size: number
|
|
16
15
|
|
|
17
16
|
public constructor(blob: Blob) {
|
|
18
17
|
this.blob = blob
|
|
19
|
-
this.size = blob.size
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
public async read(
|
|
@@ -32,7 +30,11 @@ export default class BlobFile implements GenericFilehandle {
|
|
|
32
30
|
const start = position
|
|
33
31
|
const end = start + length
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
const slice = this.blob.slice(start, end)
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
35
|
+
return slice.bytes
|
|
36
|
+
? slice.bytes()
|
|
37
|
+
: new Uint8Array(await slice.arrayBuffer())
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
public async readFile(): Promise<Uint8Array<ArrayBuffer>>
|
|
@@ -54,12 +56,15 @@ export default class BlobFile implements GenericFilehandle {
|
|
|
54
56
|
} else if (encoding) {
|
|
55
57
|
throw new Error(`unsupported encoding: ${encoding}`)
|
|
56
58
|
} else {
|
|
57
|
-
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
60
|
+
return this.blob.bytes
|
|
61
|
+
? this.blob.bytes()
|
|
62
|
+
: new Uint8Array(await this.blob.arrayBuffer())
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
public async stat(): Promise<Stats> {
|
|
62
|
-
return { size: this.size }
|
|
67
|
+
return { size: this.blob.size }
|
|
63
68
|
}
|
|
64
69
|
|
|
65
70
|
public async close(): Promise<void> {
|
package/src/localFile.ts
CHANGED
|
@@ -10,6 +10,9 @@ export default class LocalFile implements GenericFilehandle {
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
public async read(length: number, position = 0) {
|
|
13
|
+
if (length === 0) {
|
|
14
|
+
return new Uint8Array(0)
|
|
15
|
+
}
|
|
13
16
|
const arr = new Uint8Array(length)
|
|
14
17
|
let fd // Declare fd outside the try block so it's accessible in finally
|
|
15
18
|
try {
|
|
@@ -38,8 +41,7 @@ export default class LocalFile implements GenericFilehandle {
|
|
|
38
41
|
public async readFile(
|
|
39
42
|
options?: FilehandleOptions | BufferEncoding,
|
|
40
43
|
): Promise<Uint8Array<ArrayBuffer> | string> {
|
|
41
|
-
|
|
42
|
-
return typeof res === 'string' ? res : new Uint8Array(res)
|
|
44
|
+
return readFile(this.filename, options)
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
public async stat() {
|
package/src/remoteFile.ts
CHANGED
|
@@ -64,9 +64,12 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
64
64
|
position: number,
|
|
65
65
|
opts: FilehandleOptions = {},
|
|
66
66
|
): Promise<Uint8Array<ArrayBuffer>> {
|
|
67
|
+
if (length === 0) {
|
|
68
|
+
return new Uint8Array(0)
|
|
69
|
+
}
|
|
67
70
|
const { headers = {}, signal, overrides = {} } = opts
|
|
68
71
|
if (length < Infinity) {
|
|
69
|
-
headers.range = `bytes=${position}-${position + length}`
|
|
72
|
+
headers.range = `bytes=${position}-${position + length - 1}`
|
|
70
73
|
} else if (length === Infinity && position !== 0) {
|
|
71
74
|
headers.range = `bytes=${position}-`
|
|
72
75
|
}
|
|
@@ -74,9 +77,9 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
74
77
|
...this.baseOverrides,
|
|
75
78
|
...overrides,
|
|
76
79
|
headers: {
|
|
77
|
-
...headers,
|
|
78
|
-
...overrides.headers,
|
|
79
80
|
...this.baseOverrides.headers,
|
|
81
|
+
...overrides.headers,
|
|
82
|
+
...headers,
|
|
80
83
|
},
|
|
81
84
|
method: 'GET',
|
|
82
85
|
redirect: 'follow',
|
|
@@ -89,8 +92,6 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
89
92
|
}
|
|
90
93
|
|
|
91
94
|
if ((res.status === 200 && position === 0) || res.status === 206) {
|
|
92
|
-
const resData = await res.arrayBuffer()
|
|
93
|
-
|
|
94
95
|
// try to parse out the size of the remote file
|
|
95
96
|
const contentRange = res.headers.get('content-range')
|
|
96
97
|
const sizeMatch = /\/(\d+)$/.exec(contentRange || '')
|
|
@@ -100,15 +101,20 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
|
|
103
|
-
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
105
|
+
const resData = res.bytes
|
|
106
|
+
? await res.bytes()
|
|
107
|
+
: new Uint8Array(await res.arrayBuffer())
|
|
108
|
+
return resData.byteLength <= length
|
|
109
|
+
? resData
|
|
110
|
+
: resData.subarray(0, length)
|
|
104
111
|
}
|
|
105
112
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}
|
|
113
|
+
throw new Error(
|
|
114
|
+
res.status === 200
|
|
115
|
+
? `${this.url} fetch returned status 200, expected 206`
|
|
116
|
+
: `HTTP ${res.status} fetching ${this.url}`,
|
|
117
|
+
)
|
|
112
118
|
}
|
|
113
119
|
|
|
114
120
|
public async readFile(): Promise<Uint8Array<ArrayBuffer>>
|
|
@@ -136,18 +142,22 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
136
142
|
opts = {}
|
|
137
143
|
} else {
|
|
138
144
|
encoding = options.encoding
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
const { encoding: _, ...rest } = options
|
|
146
|
+
opts = rest
|
|
141
147
|
}
|
|
142
148
|
const { headers = {}, signal, overrides = {} } = opts
|
|
143
149
|
const res = await this.fetch(this.url, {
|
|
144
|
-
|
|
150
|
+
...this.baseOverrides,
|
|
151
|
+
...overrides,
|
|
152
|
+
headers: {
|
|
153
|
+
...this.baseOverrides.headers,
|
|
154
|
+
...overrides.headers,
|
|
155
|
+
...headers,
|
|
156
|
+
},
|
|
145
157
|
method: 'GET',
|
|
146
158
|
redirect: 'follow',
|
|
147
159
|
mode: 'cors',
|
|
148
160
|
signal,
|
|
149
|
-
...this.baseOverrides,
|
|
150
|
-
...overrides,
|
|
151
161
|
})
|
|
152
162
|
if (res.status !== 200) {
|
|
153
163
|
throw new Error(`HTTP ${res.status} fetching ${this.url}`)
|
|
@@ -157,7 +167,8 @@ export default class RemoteFile implements GenericFilehandle {
|
|
|
157
167
|
} else if (encoding) {
|
|
158
168
|
throw new Error(`unsupported encoding: ${encoding}`)
|
|
159
169
|
} else {
|
|
160
|
-
|
|
170
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
171
|
+
return res.bytes ? res.bytes() : new Uint8Array(await res.arrayBuffer())
|
|
161
172
|
}
|
|
162
173
|
}
|
|
163
174
|
|