UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

43 lines • 1.82 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 { eisdir, enotsup } from "../../errors/fs.js"; import { FileType } from "../../types.js"; import { NATIVE_RESOURCE_TYPES } from "./fingerprint.js"; import { liveRow } from "./readdir.js"; import { eaccesOnDenied } from "./resolve.js"; import { write } from "./write.js"; export const truncate = eaccesOnDenied(async function (accessor, path, length, noCreate = false, handed = {}) { if (noCreate) throw enotsup('gdrive', 'truncate --no-create', path); const entry = await liveRow(accessor, path, handed.entry); if (entry !== null && entry.type === FileType.DIRECTORY) throw eisdir(path); let data; if (entry === null || NATIVE_RESOURCE_TYPES.has(entry.extra.resource_type)) { data = new Uint8Array(0); } else { data = await accessor.drive.downloadFile(entry.extra.file_id); } let out; if (length <= data.length) { out = data.slice(0, length); } else { out = new Uint8Array(length); out.set(data, 0); } await write(accessor, path, out, { ...handed, entry }); }); //# sourceMappingURL=truncate.js.map