File size: 9,813 Bytes
be5030f
1
{"version":3,"sources":["io/file.ts"],"names":[],"mappings":"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","file":"file.js","sourcesContent":["// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { FileHandle } from './interfaces';\nimport { ByteStream, AsyncByteStream } from './stream';\nimport { ArrayBufferViewInput, toUint8Array } from '../util/buffer';\n\n/** @ignore */\nexport class RandomAccessFile extends ByteStream {\n    public size: number;\n    public position: number = 0;\n    protected buffer: Uint8Array | null;\n    constructor(buffer: ArrayBufferViewInput, byteLength?: number) {\n        super();\n        this.buffer = toUint8Array(buffer);\n        this.size = typeof byteLength === 'undefined' ? this.buffer.byteLength : byteLength;\n    }\n    public readInt32(position: number) {\n        const { buffer, byteOffset } = this.readAt(position, 4);\n        return new DataView(buffer, byteOffset).getInt32(0, true);\n    }\n    public seek(position: number) {\n        this.position = Math.min(position, this.size);\n        return position < this.size;\n    }\n    public read(nBytes?: number | null) {\n        const { buffer, size, position } = this;\n        if (buffer && position < size) {\n            if (typeof nBytes !== 'number') { nBytes = Infinity; }\n            this.position = Math.min(size,\n                 position + Math.min(size - position, nBytes));\n            return buffer.subarray(position, this.position);\n        }\n        return null;\n    }\n    public readAt(position: number, nBytes: number) {\n        const buf = this.buffer;\n        const end = Math.min(this.size, position + nBytes);\n        return buf ? buf.subarray(position, end) : new Uint8Array(nBytes);\n    }\n    public close() { this.buffer && (this.buffer = null); }\n    public throw(value?: any) { this.close(); return { done: true, value }; }\n    public return(value?: any) { this.close(); return { done: true, value }; }\n}\n\n/** @ignore */\nexport class AsyncRandomAccessFile extends AsyncByteStream {\n    // @ts-ignore\n    public size: number;\n    public position: number = 0;\n    public _pending?: Promise<void>;\n    protected _handle: FileHandle | null;\n    constructor(file: FileHandle, byteLength?: number) {\n        super();\n        this._handle = file;\n        if (typeof byteLength === 'number') {\n            this.size = byteLength;\n        } else {\n            this._pending = (async () => {\n                this.size = (await file.stat()).size;\n                delete this._pending;\n            })();\n        }\n    }\n    public async readInt32(position: number) {\n        const { buffer, byteOffset } = await this.readAt(position, 4);\n        return new DataView(buffer, byteOffset).getInt32(0, true);\n    }\n    public async seek(position: number) {\n        this._pending && await this._pending;\n        this.position = Math.min(position, this.size);\n        return position < this.size;\n    }\n    public async read(nBytes?: number | null) {\n        this._pending && await this._pending;\n        const { _handle: file, size, position } = this;\n        if (file && position < size) {\n            if (typeof nBytes !== 'number') { nBytes = Infinity; }\n            let pos = position, offset = 0, bytesRead = 0;\n            let end = Math.min(size, pos + Math.min(size - pos, nBytes));\n            let buffer = new Uint8Array(Math.max(0, (this.position = end) - pos));\n            while ((pos += bytesRead) < end && (offset += bytesRead) < buffer.byteLength) {\n                ({ bytesRead } = await file.read(buffer, offset, buffer.byteLength - offset, pos));\n            }\n            return buffer;\n        }\n        return null;\n    }\n    public async readAt(position: number, nBytes: number) {\n        this._pending && await this._pending;\n        const { _handle: file, size } = this;\n        if (file && (position + nBytes) < size) {\n            const end = Math.min(size, position + nBytes);\n            const buffer = new Uint8Array(end - position);\n            return (await file.read(buffer, 0, nBytes, position)).buffer;\n        }\n        return new Uint8Array(nBytes);\n    }\n    public async close() { const f = this._handle; this._handle = null; f && await f.close(); }\n    public async throw(value?: any) { await this.close(); return { done: true, value }; }\n    public async return(value?: any) { await this.close(); return { done: true, value }; }\n}\n"]}