|
@@ -7,8 +7,6 @@
|
|
|
|
|
|
import { defaults, noop } from '../../mol-util';
|
|
import { defaults, noop } from '../../mol-util';
|
|
import { SimpleBuffer } from './simple-buffer';
|
|
import { SimpleBuffer } from './simple-buffer';
|
|
-// only import 'fs' in node.js
|
|
|
|
-const fs = typeof document === 'undefined' ? require('fs') as typeof import('fs') : void 0;
|
|
|
|
|
|
|
|
export interface FileHandle {
|
|
export interface FileHandle {
|
|
name: string
|
|
name: string
|
|
@@ -83,55 +81,4 @@ export namespace FileHandle {
|
|
close: noop
|
|
close: noop
|
|
};
|
|
};
|
|
}
|
|
}
|
|
-
|
|
|
|
- export function fromDescriptor(file: number, name: string): FileHandle {
|
|
|
|
- if (fs === undefined) throw new Error('fs module not available');
|
|
|
|
- return {
|
|
|
|
- name,
|
|
|
|
- readBuffer: (position: number, sizeOrBuffer: SimpleBuffer | number, length?: number, byteOffset?: number) => {
|
|
|
|
- return new Promise((res, rej) => {
|
|
|
|
- let outBuffer: SimpleBuffer;
|
|
|
|
- if (typeof sizeOrBuffer === 'number') {
|
|
|
|
- byteOffset = defaults(byteOffset, 0);
|
|
|
|
- length = defaults(length, sizeOrBuffer);
|
|
|
|
- outBuffer = SimpleBuffer.fromArrayBuffer(new ArrayBuffer(sizeOrBuffer));
|
|
|
|
- } else {
|
|
|
|
- byteOffset = defaults(byteOffset, 0);
|
|
|
|
- length = defaults(length, sizeOrBuffer.length);
|
|
|
|
- outBuffer = sizeOrBuffer;
|
|
|
|
- }
|
|
|
|
- fs.read(file, outBuffer, byteOffset, length, position, (err, bytesRead, buffer) => {
|
|
|
|
- if (err) {
|
|
|
|
- rej(err);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (length !== bytesRead) {
|
|
|
|
- console.warn(`byteCount ${length} and bytesRead ${bytesRead} differ`);
|
|
|
|
- }
|
|
|
|
- res({ bytesRead, buffer });
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- writeBuffer: (position: number, buffer: SimpleBuffer, length?: number) => {
|
|
|
|
- length = defaults(length, buffer.length);
|
|
|
|
- return new Promise<number>((res, rej) => {
|
|
|
|
- fs.write(file, buffer, 0, length, position, (err, written) => {
|
|
|
|
- if (err) rej(err);
|
|
|
|
- else res(written);
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- writeBufferSync: (position: number, buffer: Uint8Array, length?: number) => {
|
|
|
|
- length = defaults(length, buffer.length);
|
|
|
|
- return fs.writeSync(file, buffer, 0, length, position);
|
|
|
|
- },
|
|
|
|
- close: () => {
|
|
|
|
- try {
|
|
|
|
- if (file !== void 0) fs.close(file, noop);
|
|
|
|
- } catch (e) {
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
}
|
|
}
|