UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

43 lines • 1.78 kB
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ========= Copyright 2026 @ Strukto.AI All Rights Reserved. ========= import { record, startOp } from "../../observe/context.js"; import { VFSName } from "../../types.js"; import { lookupError } from "./dest.js"; import { eisdir } from "../../errors/fs.js"; import { norm } from "../../utils/path.js"; /** * Read a file, optionally only a byte range of it. * * Args: * accessor: Redis accessor. * path: the path to read. * options: `{offset, size}`, the byte window, or absent for the whole file. */ export async function read(accessor, path, options) { const offset = options?.offset ?? 0; const size = options?.size ?? null; const timer = startOp(); const p = norm(path.mountPath); const data = offset !== 0 || size !== null ? await accessor.store.getFileRange(p, offset, size) : await accessor.store.getFile(p); if (data === null) { if (await accessor.store.hasDir(p)) throw eisdir(path); throw await lookupError(accessor.store, path, p); } record('read', path.virtual, VFSName.REDIS, data.byteLength, timer); return data; } //# sourceMappingURL=read.js.map