UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

44 lines • 1.93 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 { norm } from "../../utils/path.js"; import { lookupError } from "./dest.js"; // Write metadata fields on an existing entry (the write side of stat). // Fields live in a per-path attrs hash; values are stored as strings // (redis hashes are string-valued) and decoded by stat. Stored, not // enforced: mount mode does real access control. Returns the residual // (always empty; every field applies natively). export async function setAttrs(accessor, path, fields) { const store = accessor.store; const p = norm(path.mountPath); if (!(await store.hasFile(p)) && !(await store.hasDir(p))) { throw await lookupError(store, path, p); } const encoded = {}; if (fields.mode !== undefined) encoded.mode = String(fields.mode); if (fields.uid !== undefined) encoded.uid = String(fields.uid); if (fields.gid !== undefined) encoded.gid = String(fields.gid); if (fields.atime !== undefined) encoded.atime = fields.atime; if (Object.keys(encoded).length > 0) { await store.setAttrs(p, encoded); } if (fields.mtime !== undefined) { await store.setModified(p, fields.mtime); } return {}; } //# sourceMappingURL=set_attrs.js.map