generic-filehandle2 2.0.16 → 2.0.18

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.
@@ -30,7 +30,7 @@ export interface GenericFilehandle {
30
30
  }): Promise<string>;
31
31
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
32
32
  encoding: T;
33
- }): T extends BufferEncoding ? Promise<Uint8Array<ArrayBuffer>> : Promise<Uint8Array<ArrayBuffer> | string>;
33
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
34
34
  stat(): Promise<Stats>;
35
35
  close(): Promise<void>;
36
36
  }
@@ -11,6 +11,9 @@ export default class LocalFile implements GenericFilehandle {
11
11
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
12
12
  encoding: T;
13
13
  }): Promise<string>;
14
+ readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
15
+ encoding: T;
16
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
14
17
  stat(): Promise<import("fs").Stats>;
15
18
  close(): Promise<void>;
16
19
  }
package/dist/localFile.js CHANGED
@@ -10,17 +10,21 @@ class LocalFile {
10
10
  return new Uint8Array(0);
11
11
  }
12
12
  const arr = new Uint8Array(length);
13
- let fd; // Declare fd outside the try block so it's accessible in finally
13
+ let fd;
14
14
  try {
15
15
  fd = await (0, promises_1.open)(this.filename, 'r');
16
16
  const res = await fd.read(arr, 0, length, position);
17
17
  return res.buffer.subarray(0, res.bytesRead);
18
18
  }
19
19
  finally {
20
- // This block will always execute, regardless of success or error
21
20
  if (fd) {
22
- // Only close if the fd was successfully opened
23
- await fd.close();
21
+ try {
22
+ await fd.close();
23
+ }
24
+ catch {
25
+ // Ignore EBADF errors - the file descriptor is already closed/invalid
26
+ // This can happen on network filesystems like Samba
27
+ }
24
28
  }
25
29
  }
26
30
  }
@@ -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,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"}
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;QACN,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,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,sEAAsE;oBACtE,oDAAoD;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAiBM,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;AAzDD,4BAyDC"}
@@ -17,7 +17,7 @@ export default class RemoteFile implements GenericFilehandle {
17
17
  }): Promise<string>;
18
18
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
19
19
  encoding: T;
20
- }): T extends BufferEncoding ? Promise<Uint8Array<ArrayBuffer>> : Promise<Uint8Array<ArrayBuffer> | string>;
20
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
21
21
  stat(): Promise<Stats>;
22
22
  close(): Promise<void>;
23
23
  }
@@ -17,13 +17,14 @@ class RemoteFile {
17
17
  this.fetchImplementation = fetch;
18
18
  }
19
19
  async fetch(input, init) {
20
+ const wrapError = (e) => new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
20
21
  let response;
21
22
  try {
22
23
  response = await this.fetchImplementation(input, init);
23
24
  }
24
25
  catch (e) {
25
26
  if (`${e}`.includes('Failed to fetch')) {
26
- // refetch to to help work around a chrome bug (discussed in
27
+ // refetch to help work around a chrome bug (discussed in
27
28
  // generic-filehandle issue #72) in which the chrome cache returns a
28
29
  // CORS error for content in its cache. see also
29
30
  // https://github.com/GMOD/jbrowse-components/pull/1511
@@ -35,11 +36,11 @@ class RemoteFile {
35
36
  });
36
37
  }
37
38
  catch (e) {
38
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
39
+ throw wrapError(e);
39
40
  }
40
41
  }
41
42
  else {
42
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
43
+ throw wrapError(e);
43
44
  }
44
45
  }
45
46
  return response;
@@ -118,7 +119,7 @@ class RemoteFile {
118
119
  mode: 'cors',
119
120
  signal,
120
121
  });
121
- if (res.status !== 200) {
122
+ if (!res.ok) {
122
123
  throw new Error(`HTTP ${res.status} fetching ${this.url}`);
123
124
  }
124
125
  if (encoding === 'utf8') {
@@ -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,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"}
1
+ {"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export interface GenericFilehandle {
30
30
  }): Promise<string>;
31
31
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
32
32
  encoding: T;
33
- }): T extends BufferEncoding ? Promise<Uint8Array<ArrayBuffer>> : Promise<Uint8Array<ArrayBuffer> | string>;
33
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
34
34
  stat(): Promise<Stats>;
35
35
  close(): Promise<void>;
36
36
  }
@@ -11,6 +11,9 @@ export default class LocalFile implements GenericFilehandle {
11
11
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
12
12
  encoding: T;
13
13
  }): Promise<string>;
14
+ readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
15
+ encoding: T;
16
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
14
17
  stat(): Promise<import("fs").Stats>;
15
18
  close(): Promise<void>;
16
19
  }
package/esm/localFile.js CHANGED
@@ -8,17 +8,21 @@ export default class LocalFile {
8
8
  return new Uint8Array(0);
9
9
  }
10
10
  const arr = new Uint8Array(length);
11
- let fd; // Declare fd outside the try block so it's accessible in finally
11
+ let fd;
12
12
  try {
13
13
  fd = await open(this.filename, 'r');
14
14
  const res = await fd.read(arr, 0, length, position);
15
15
  return res.buffer.subarray(0, res.bytesRead);
16
16
  }
17
17
  finally {
18
- // This block will always execute, regardless of success or error
19
18
  if (fd) {
20
- // Only close if the fd was successfully opened
21
- await fd.close();
19
+ try {
20
+ await fd.close();
21
+ }
22
+ catch {
23
+ // Ignore EBADF errors - the file descriptor is already closed/invalid
24
+ // This can happen on network filesystems like Samba
25
+ }
22
26
  }
23
27
  }
24
28
  }
@@ -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,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"}
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;QACN,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,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,sEAAsE;oBACtE,oDAAoD;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAiBM,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"}
@@ -17,7 +17,7 @@ export default class RemoteFile implements GenericFilehandle {
17
17
  }): Promise<string>;
18
18
  readFile<T extends BufferEncoding>(options: Omit<FilehandleOptions, 'encoding'> & {
19
19
  encoding: T;
20
- }): T extends BufferEncoding ? Promise<Uint8Array<ArrayBuffer>> : Promise<Uint8Array<ArrayBuffer> | string>;
20
+ }): T extends BufferEncoding ? Promise<string> : Promise<Uint8Array<ArrayBuffer>>;
21
21
  stat(): Promise<Stats>;
22
22
  close(): Promise<void>;
23
23
  }
package/esm/remoteFile.js CHANGED
@@ -15,13 +15,14 @@ export default class RemoteFile {
15
15
  this.fetchImplementation = fetch;
16
16
  }
17
17
  async fetch(input, init) {
18
+ const wrapError = (e) => new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
18
19
  let response;
19
20
  try {
20
21
  response = await this.fetchImplementation(input, init);
21
22
  }
22
23
  catch (e) {
23
24
  if (`${e}`.includes('Failed to fetch')) {
24
- // refetch to to help work around a chrome bug (discussed in
25
+ // refetch to help work around a chrome bug (discussed in
25
26
  // generic-filehandle issue #72) in which the chrome cache returns a
26
27
  // CORS error for content in its cache. see also
27
28
  // https://github.com/GMOD/jbrowse-components/pull/1511
@@ -33,11 +34,11 @@ export default class RemoteFile {
33
34
  });
34
35
  }
35
36
  catch (e) {
36
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
37
+ throw wrapError(e);
37
38
  }
38
39
  }
39
40
  else {
40
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e });
41
+ throw wrapError(e);
41
42
  }
42
43
  }
43
44
  return response;
@@ -116,7 +117,7 @@ export default class RemoteFile {
116
117
  mode: 'cors',
117
118
  signal,
118
119
  });
119
- if (res.status !== 200) {
120
+ if (!res.ok) {
120
121
  throw new Error(`HTTP ${res.status} fetching ${this.url}`);
121
122
  }
122
123
  if (encoding === 'utf8') {
@@ -1 +1 @@
1
- {"version":3,"file":"remoteFile.js","sourceRoot":"","sources":["../src/remoteFile.ts"],"names":[],"mappings":"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"}
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.16",
4
+ "version": "2.0.18",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
package/src/filehandle.ts CHANGED
@@ -44,8 +44,8 @@ export interface GenericFilehandle {
44
44
  readFile<T extends BufferEncoding>(
45
45
  options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },
46
46
  ): T extends BufferEncoding
47
- ? Promise<Uint8Array<ArrayBuffer>>
48
- : Promise<Uint8Array<ArrayBuffer> | string>
47
+ ? Promise<string>
48
+ : Promise<Uint8Array<ArrayBuffer>>
49
49
  stat(): Promise<Stats>
50
50
  close(): Promise<void>
51
51
  }
package/src/localFile.ts CHANGED
@@ -14,16 +14,19 @@ export default class LocalFile implements GenericFilehandle {
14
14
  return new Uint8Array(0)
15
15
  }
16
16
  const arr = new Uint8Array(length)
17
- let fd // Declare fd outside the try block so it's accessible in finally
17
+ let fd
18
18
  try {
19
19
  fd = await open(this.filename, 'r')
20
20
  const res = await fd.read(arr, 0, length, position)
21
21
  return res.buffer.subarray(0, res.bytesRead)
22
22
  } finally {
23
- // This block will always execute, regardless of success or error
24
23
  if (fd) {
25
- // Only close if the fd was successfully opened
26
- await fd.close()
24
+ try {
25
+ await fd.close()
26
+ } catch {
27
+ // Ignore EBADF errors - the file descriptor is already closed/invalid
28
+ // This can happen on network filesystems like Samba
29
+ }
27
30
  }
28
31
  }
29
32
  }
@@ -38,6 +41,11 @@ export default class LocalFile implements GenericFilehandle {
38
41
  public async readFile<T extends BufferEncoding>(
39
42
  options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },
40
43
  ): Promise<string>
44
+ readFile<T extends BufferEncoding>(
45
+ options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },
46
+ ): T extends BufferEncoding
47
+ ? Promise<string>
48
+ : Promise<Uint8Array<ArrayBuffer>>
41
49
  public async readFile(
42
50
  options?: FilehandleOptions | BufferEncoding,
43
51
  ): Promise<Uint8Array<ArrayBuffer> | string> {
package/src/remoteFile.ts CHANGED
@@ -32,12 +32,15 @@ export default class RemoteFile implements GenericFilehandle {
32
32
  input: RequestInfo,
33
33
  init: RequestInit | undefined,
34
34
  ): Promise<Response> {
35
+ const wrapError = (e: unknown) =>
36
+ new Error(`${getMessage(e)} fetching ${input}`, { cause: e })
37
+
35
38
  let response
36
39
  try {
37
40
  response = await this.fetchImplementation(input, init)
38
41
  } catch (e) {
39
42
  if (`${e}`.includes('Failed to fetch')) {
40
- // refetch to to help work around a chrome bug (discussed in
43
+ // refetch to help work around a chrome bug (discussed in
41
44
  // generic-filehandle issue #72) in which the chrome cache returns a
42
45
  // CORS error for content in its cache. see also
43
46
  // https://github.com/GMOD/jbrowse-components/pull/1511
@@ -50,10 +53,10 @@ export default class RemoteFile implements GenericFilehandle {
50
53
  cache: 'reload',
51
54
  })
52
55
  } catch (e) {
53
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })
56
+ throw wrapError(e)
54
57
  }
55
58
  } else {
56
- throw new Error(`${getMessage(e)} fetching ${input}`, { cause: e })
59
+ throw wrapError(e)
57
60
  }
58
61
  }
59
62
  return response
@@ -130,8 +133,8 @@ export default class RemoteFile implements GenericFilehandle {
130
133
  readFile<T extends BufferEncoding>(
131
134
  options: Omit<FilehandleOptions, 'encoding'> & { encoding: T },
132
135
  ): T extends BufferEncoding
133
- ? Promise<Uint8Array<ArrayBuffer>>
134
- : Promise<Uint8Array<ArrayBuffer> | string>
136
+ ? Promise<string>
137
+ : Promise<Uint8Array<ArrayBuffer>>
135
138
  public async readFile(
136
139
  options: FilehandleOptions | BufferEncoding = {},
137
140
  ): Promise<Uint8Array<ArrayBuffer> | string> {
@@ -159,7 +162,7 @@ export default class RemoteFile implements GenericFilehandle {
159
162
  mode: 'cors',
160
163
  signal,
161
164
  })
162
- if (res.status !== 200) {
165
+ if (!res.ok) {
163
166
  throw new Error(`HTTP ${res.status} fetching ${this.url}`)
164
167
  }
165
168
  if (encoding === 'utf8') {