UNPKG

@struktoai/mirage-core

Version:

A Unified Virtual Filesystem For AI Agents

54 lines • 2.21 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 { specOf } from "../../spec/builtins.js"; import { FlagView } from "../../spec/flag_view.js"; import { IOResult } from "../../../io/types.js"; import { byteView } from "../../../shell/bytes.js"; import { chainOutput, closeStream, openStream } from "../../../rs/stream.js"; function parseFlags(bag) { const fl = new FlagView(bag, specOf('column')); return { table: fl.asBool('t'), separator: fl.asStr('s') ?? null, outputSeparator: fl.asStr('o', ' '), }; } async function* columned(config, sources, signal) { const stream = await openStream('column', config); try { yield* chainOutput(stream, sources, signal); } finally { await closeStream(stream); } } // util-linux column over every operand, or stdin without one. Mirrors // Python's column_generic. export function columnGeneric(paths, ctx, stream) { const parsed = parseFlags(ctx.flags); const sources = []; for (const path of paths) sources.push(stream(path)); const config = { table: parsed.table, separator: parsed.separator === null ? null : byteView(parsed.separator), output_separator: byteView(parsed.outputSeparator), columns: ctx.env?.COLUMNS ?? null, inputs: Math.max(1, sources.length), }; if (sources.length === 0) sources.push(ctx.stdin ?? new Uint8Array()); return Promise.resolve([columned(config, sources, ctx.signal), new IOResult()]); } //# sourceMappingURL=column.js.map