🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@hewliyang/headless-spreadjs

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hewliyang/headless-spreadjs - npm Package Compare versions

Comparing version
0.0.3
to
0.0.4
+7
dist/cli/abort.d.ts
export declare class CommandAbortedError extends Error {
constructor(message?: string);
}
export declare function registerSignalTimeout(signal: AbortSignal, timeoutMs: number, message?: string): void;
export declare function throwIfAborted(signal?: AbortSignal | null): void;
export declare function isAbortError(err: unknown): boolean;
//# sourceMappingURL=abort.d.ts.map
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/cli/abort.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,SAAoB;CAIxC;AAaD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAMN;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAWhE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAElD"}
export class CommandAbortedError extends Error {
constructor(message = "Command aborted") {
super(message);
this.name = "CommandAbortedError";
}
}
const signalTimeouts = new WeakMap();
function reasonToMessage(reason) {
if (reason instanceof Error)
return reason.message;
if (typeof reason === "string" && reason.trim())
return reason;
return "Command aborted";
}
export function registerSignalTimeout(signal, timeoutMs, message) {
signalTimeouts.set(signal, {
deadlineAt: Date.now() + timeoutMs,
message: message ?? `Command timed out after ${Math.ceil(timeoutMs / 1000)}s`,
});
}
export function throwIfAborted(signal) {
if (!signal)
return;
if (signal.aborted) {
throw new CommandAbortedError(reasonToMessage(signal.reason));
}
const timeout = signalTimeouts.get(signal);
if (timeout && Date.now() >= timeout.deadlineAt) {
throw new CommandAbortedError(timeout.message);
}
}
export function isAbortError(err) {
return err instanceof CommandAbortedError;
}
//# sourceMappingURL=abort.js.map
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/cli/abort.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,GAAG,iBAAiB;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,cAAc,GAAG,IAAI,OAAO,EAG/B,CAAC;AAEJ,SAAS,eAAe,CAAC,MAAe;IACtC,IAAI,MAAM,YAAY,KAAK;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IACnD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/D,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAmB,EACnB,SAAiB,EACjB,OAAgB;IAEhB,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE;QACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QAClC,OAAO,EACL,OAAO,IAAI,2BAA2B,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG;KACvE,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA2B;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,IAAI,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO,GAAG,YAAY,mBAAmB,CAAC;AAC5C,CAAC"}
export type DaemonCommandResult = {
stdout: string;
stderr: string;
exitCode: number;
};
export declare function spawnDaemon(timeoutMs?: number): Promise<void>;
export declare function tryExistingDaemon(argv: string[], cwd: string, stdin?: string, timeoutMs?: number): Promise<DaemonCommandResult | null>;
export declare function tryDaemon(argv: string[], cwd: string, stdin?: string, timeoutMs?: number): Promise<DaemonCommandResult | null>;
//# sourceMappingURL=client.d.ts.map
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAkDF,wBAAsB,WAAW,CAAC,SAAS,SAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC7E;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,SAAoB,GAC5B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAUrC;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,EACd,SAAS,SAAoB,GAC5B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAsBrC"}
import { spawn } from "node:child_process";
import { closeSync, openSync } from "node:fs";
import { connect } from "node:net";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { getLogPath, getSocketPath } from "./daemon.js";
const CLIENT_TIMEOUT_MS = 30_000;
const SPAWN_TIMEOUT_MS = 15_000;
function isDaemonUnavailableError(err) {
if (!(err instanceof Error))
return false;
const code = err.code;
return code === "ENOENT" || code === "ECONNREFUSED";
}
async function sendCommand(socketPath, argv, cwd, stdin, timeoutMs = CLIENT_TIMEOUT_MS) {
return new Promise((resolve, reject) => {
const socket = connect({ path: socketPath }, () => {
const request = JSON.stringify({ argv, cwd, stdin, timeoutMs });
socket.write(`${request}\n`);
});
let buffer = "";
const timeout = setTimeout(() => {
socket.destroy();
reject(new Error("Daemon request timed out"));
}, timeoutMs);
socket.on("data", (data) => {
buffer += data.toString();
const newlineIdx = buffer.indexOf("\n");
if (newlineIdx !== -1) {
clearTimeout(timeout);
const line = buffer.slice(0, newlineIdx);
socket.end();
try {
resolve(JSON.parse(line));
}
catch {
reject(new Error("Invalid response from daemon"));
}
}
});
socket.on("error", (err) => {
clearTimeout(timeout);
reject(err);
});
socket.on("close", () => {
clearTimeout(timeout);
if (!buffer.includes("\n")) {
reject(new Error("Connection closed before response"));
}
});
});
}
export async function spawnDaemon(timeoutMs = SPAWN_TIMEOUT_MS) {
const thisFile = fileURLToPath(import.meta.url);
const cliDir = dirname(thisFile);
const daemonEntry = join(cliDir, "daemon-entry.js");
const logFd = openSync(getLogPath(), "a");
return new Promise((resolve, reject) => {
const child = spawn(process.execPath, [daemonEntry], {
detached: true,
stdio: ["ignore", "ignore", logFd, "ipc"],
env: { ...process.env },
});
closeSync(logFd);
const timeout = setTimeout(() => {
child.kill();
reject(new Error("Daemon failed to start within timeout"));
}, timeoutMs);
child.on("message", (msg) => {
const m = msg;
if (m?.ready) {
clearTimeout(timeout);
child.disconnect();
child.unref();
resolve();
}
});
child.on("error", (err) => {
clearTimeout(timeout);
reject(err);
});
child.on("exit", (code) => {
clearTimeout(timeout);
reject(new Error(`Daemon exited with code ${code}`));
});
});
}
export async function tryExistingDaemon(argv, cwd, stdin, timeoutMs = CLIENT_TIMEOUT_MS) {
const socketPath = getSocketPath();
try {
return await sendCommand(socketPath, argv, cwd, stdin, timeoutMs);
}
catch (err) {
if (isDaemonUnavailableError(err)) {
return null;
}
throw err;
}
}
export async function tryDaemon(argv, cwd, stdin, timeoutMs = CLIENT_TIMEOUT_MS) {
const existing = await tryExistingDaemon(argv, cwd, stdin, timeoutMs);
if (existing) {
return existing;
}
const socketPath = getSocketPath();
try {
await spawnDaemon(timeoutMs);
}
catch {
return null;
}
try {
return await sendCommand(socketPath, argv, cwd, stdin, timeoutMs);
}
catch (err) {
if (isDaemonUnavailableError(err)) {
return null;
}
throw err;
}
}
//# sourceMappingURL=client.js.map
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"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"}
export declare function deps(filePath: string, ref: string, options?: {
signal?: AbortSignal | null;
depth?: number;
rangeExpansionLimit?: number;
}): Promise<void>;
export declare function refs(filePath: string, ref: string, options?: {
signal?: AbortSignal | null;
depth?: number;
maxFormulaCells?: number;
}): Promise<void>;
//# sourceMappingURL=deps.d.ts.map
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"AAiHA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,OAAO,CAAC,IAAI,CAAC,CA+Hf;AAwGD,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAoHf"}
import { cellToA1, parseRef } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
const USED_RANGE_TYPE_FORMULA = 32;
const DEFAULT_RANGE_EXPANSION_LIMIT = 128;
const DEFAULT_MAX_FORMULA_SCAN = 250_000;
function makeCellKey(sheet, row, col) {
return `${sheet}|${row}|${col}`;
}
function makeRangeKey(range) {
return `${range.sheet}|${range.row}|${range.col}|${range.rowCount}|${range.colCount}`;
}
function toA1Ref(range) {
const start = cellToA1(range.row, range.col);
if (range.rowCount === 1 && range.colCount === 1) {
return start;
}
const end = cellToA1(range.row + range.rowCount - 1, range.col + range.colCount - 1);
return `${start}:${end}`;
}
function normalizePrecedents(raw, defaultSheet) {
if (!raw || raw.length === 0)
return [];
return raw
.map((item) => ({
sheet: item.sheetName || defaultSheet,
row: typeof item.row === "number" ? item.row : -1,
col: typeof item.col === "number" ? item.col : -1,
rowCount: typeof item.rowCount === "number" ? item.rowCount : 1,
colCount: typeof item.colCount === "number" ? item.colCount : 1,
}))
.filter((item) => item.row >= 0 &&
item.col >= 0 &&
item.rowCount > 0 &&
item.colCount > 0);
}
function isSingleCell(range) {
return range.rowCount === 1 && range.colCount === 1;
}
function rangeContainsCell(range, cell) {
if (range.sheet !== cell.sheet)
return false;
return (cell.row >= range.row &&
cell.row < range.row + range.rowCount &&
cell.col >= range.col &&
cell.col < range.col + range.colCount);
}
function parseTarget(ref) {
const parsed = parseRef(ref);
if (parsed.start.row !== parsed.end.row ||
parsed.start.col !== parsed.end.col) {
fail(`Expected a single-cell reference, got range: ${ref}`);
}
return {
sheet: parsed.sheet,
row: parsed.start.row,
col: parsed.start.col,
};
}
export async function deps(filePath, ref, options) {
const signal = options?.signal;
const depth = options?.depth && options.depth > 0 ? options.depth : 1;
const rangeExpansionLimit = options?.rangeExpansionLimit && options.rangeExpansionLimit > 0
? options.rangeExpansionLimit
: DEFAULT_RANGE_EXPANSION_LIMIT;
await withFile(filePath, ({ workbook }) => {
const target = parseTarget(ref);
const defaultSheet = workbook.getActiveSheet().name();
const startSheetName = target.sheet || defaultSheet;
const startSheet = workbook.getSheetFromName(startSheetName);
if (!startSheet) {
fail(`Sheet not found: ${startSheetName}`);
}
let frontier = new Map([
[
makeCellKey(startSheetName, target.row, target.col),
{
sheet: startSheetName,
row: target.row,
col: target.col,
},
],
]);
const visited = new Set(frontier.keys());
const discovered = new Map();
let hopsTraversed = 0;
let cellsExpanded = 0;
let rangesNotExpanded = 0;
let sourceCellsVisited = 0;
for (let hop = 1; hop <= depth && frontier.size > 0; hop++) {
throwIfAborted(signal);
hopsTraversed = hop;
const next = new Map();
for (const cell of frontier.values()) {
throwIfAborted(signal);
sourceCellsVisited++;
const sheet = workbook.getSheetFromName(cell.sheet);
if (!sheet)
continue;
const precedents = normalizePrecedents(sheet.getPrecedents(cell.row, cell.col), cell.sheet);
for (const precedent of precedents) {
const rangeKey = makeRangeKey(precedent);
const existing = discovered.get(rangeKey);
if (!existing || hop < existing.hop) {
discovered.set(rangeKey, { range: precedent, hop });
}
if (hop >= depth)
continue;
const size = precedent.rowCount * precedent.colCount;
if (size > rangeExpansionLimit) {
rangesNotExpanded++;
continue;
}
for (let r = 0; r < precedent.rowCount; r++) {
for (let c = 0; c < precedent.colCount; c++) {
const row = precedent.row + r;
const col = precedent.col + c;
const key = makeCellKey(precedent.sheet, row, col);
if (visited.has(key))
continue;
visited.add(key);
cellsExpanded++;
next.set(key, {
sheet: precedent.sheet,
row,
col,
});
}
}
}
}
frontier = next;
}
const dependencies = Array.from(discovered.values())
.map(({ range, hop }) => ({
sheet: range.sheet,
ref: toA1Ref(range),
hop,
type: isSingleCell(range) ? "cell" : "range",
}))
.sort((a, b) => {
if (a.hop !== b.hop)
return a.hop - b.hop;
if (a.sheet !== b.sheet)
return a.sheet.localeCompare(b.sheet);
return a.ref.localeCompare(b.ref);
});
ok({
target: {
sheet: startSheetName,
cell: cellToA1(target.row, target.col),
},
requestedDepth: depth,
hopsTraversed,
oneHop: depth === 1,
dependencies,
stats: {
sourceCellsVisited,
cellsExpanded,
rangesNotExpanded,
rangeExpansionLimit,
},
note: "Best-effort trace. Dynamic formulas (e.g. INDIRECT/OFFSET) may be incomplete.",
});
}, { signal });
}
function collectFormulaNodes(workbook, maxFormulaCells, signal) {
const nodes = [];
let scannedFormulaCells = 0;
let truncated = false;
for (let si = 0; si < workbook.getSheetCount(); si++) {
throwIfAborted(signal);
const sheet = workbook.getSheet(si);
const sheetName = sheet.name();
let usedRange = null;
try {
usedRange = sheet.getUsedRange(USED_RANGE_TYPE_FORMULA);
}
catch {
continue;
}
if (!usedRange || usedRange.rowCount <= 0 || usedRange.colCount <= 0) {
continue;
}
const rowEnd = usedRange.row + usedRange.rowCount;
const colEnd = usedRange.col + usedRange.colCount;
for (let row = usedRange.row; row < rowEnd; row++) {
throwIfAborted(signal);
for (let col = usedRange.col; col < colEnd; col++) {
const formula = sheet.getFormula(row, col);
if (!formula)
continue;
scannedFormulaCells++;
if (scannedFormulaCells > maxFormulaCells) {
truncated = true;
return { nodes, scannedFormulaCells, truncated };
}
const precedents = normalizePrecedents(sheet.getPrecedents(row, col), sheetName);
nodes.push({
sheet: sheetName,
row,
col,
precedents,
});
}
}
}
return { nodes, scannedFormulaCells, truncated };
}
function matchesAnyFrontierCell(precedents, frontierBySheet, frontierExact) {
for (const precedent of precedents) {
const frontierCells = frontierBySheet.get(precedent.sheet);
if (!frontierCells || frontierCells.length === 0)
continue;
if (isSingleCell(precedent)) {
if (frontierExact.has(makeCellKey(precedent.sheet, precedent.row, precedent.col))) {
return true;
}
continue;
}
for (const cell of frontierCells) {
if (rangeContainsCell(precedent, cell)) {
return true;
}
}
}
return false;
}
function groupBySheet(cells) {
const bySheet = new Map();
for (const cell of cells) {
const list = bySheet.get(cell.sheet);
if (list) {
list.push(cell);
}
else {
bySheet.set(cell.sheet, [cell]);
}
}
return bySheet;
}
export async function refs(filePath, ref, options) {
const signal = options?.signal;
const depth = options?.depth && options.depth > 0 ? options.depth : 1;
const maxFormulaCells = options?.maxFormulaCells && options.maxFormulaCells > 0
? options.maxFormulaCells
: DEFAULT_MAX_FORMULA_SCAN;
await withFile(filePath, ({ workbook }) => {
const target = parseTarget(ref);
const defaultSheet = workbook.getActiveSheet().name();
const startSheetName = target.sheet || defaultSheet;
const startSheet = workbook.getSheetFromName(startSheetName);
if (!startSheet) {
fail(`Sheet not found: ${startSheetName}`);
}
const { nodes, scannedFormulaCells, truncated } = collectFormulaNodes(workbook, maxFormulaCells, signal);
let frontier = [
{ sheet: startSheetName, row: target.row, col: target.col },
];
let frontierExact = new Set([
makeCellKey(startSheetName, target.row, target.col),
]);
const seenDependents = new Set();
const discovered = new Map();
let hopsTraversed = 0;
for (let hop = 1; hop <= depth && frontier.length > 0; hop++) {
throwIfAborted(signal);
hopsTraversed = hop;
const frontierBySheet = groupBySheet(frontier);
const next = [];
const nextExact = new Set();
for (const node of nodes) {
throwIfAborted(signal);
const nodeKey = makeCellKey(node.sheet, node.row, node.col);
if (seenDependents.has(nodeKey))
continue;
if (!matchesAnyFrontierCell(node.precedents, frontierBySheet, frontierExact)) {
continue;
}
if (nodeKey === makeCellKey(startSheetName, target.row, target.col)) {
continue;
}
seenDependents.add(nodeKey);
discovered.set(nodeKey, {
sheet: node.sheet,
row: node.row,
col: node.col,
hop,
});
next.push({ sheet: node.sheet, row: node.row, col: node.col });
nextExact.add(nodeKey);
}
frontier = next;
frontierExact = nextExact;
}
const references = Array.from(discovered.values())
.map((item) => ({
sheet: item.sheet,
cell: cellToA1(item.row, item.col),
hop: item.hop,
}))
.sort((a, b) => {
if (a.hop !== b.hop)
return a.hop - b.hop;
if (a.sheet !== b.sheet)
return a.sheet.localeCompare(b.sheet);
return a.cell.localeCompare(b.cell);
});
ok({
target: {
sheet: startSheetName,
cell: cellToA1(target.row, target.col),
},
requestedDepth: depth,
hopsTraversed,
oneHop: depth === 1,
references,
stats: {
scannedFormulaCells,
indexedFormulaCells: nodes.length,
maxFormulaCells,
truncated,
},
note: "Best-effort trace. Dynamic formulas (e.g. INDIRECT/OFFSET) may be incomplete.",
});
}, { signal });
}
//# sourceMappingURL=deps.js.map
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"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"}
export declare function diff(leftFilePath: string, rightFilePath: string, options?: {
signal?: AbortSignal | null;
inlineLimit?: number;
previewLimit?: number;
epsilon?: number;
}): Promise<void>;
//# sourceMappingURL=diff.d.ts.map
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AA4IA,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CA2Lf"}
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { cellToA1 } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { ok } from "../output.js";
const DEFAULT_INLINE_LIMIT = 2000;
const DEFAULT_PREVIEW_LIMIT = 200;
const USED_RANGE_TYPE_DATA_FORMULA = 16 | 32;
function toCellKey(row, col) {
return `${row}:${col}`;
}
function fromCellKey(key) {
const [row, col] = key.split(":");
return {
row: Number.parseInt(row, 10),
col: Number.parseInt(col, 10),
};
}
function collectUsedCells(sheet, signal) {
const cells = new Map();
let usedRange = null;
try {
usedRange = sheet.getUsedRange(USED_RANGE_TYPE_DATA_FORMULA);
}
catch {
return cells;
}
if (!usedRange || usedRange.rowCount <= 0 || usedRange.colCount <= 0) {
return cells;
}
const rowEnd = usedRange.row + usedRange.rowCount;
const colEnd = usedRange.col + usedRange.colCount;
for (let row = usedRange.row; row < rowEnd; row++) {
throwIfAborted(signal);
for (let col = usedRange.col; col < colEnd; col++) {
const value = sheet.getValue(row, col);
const formula = sheet.getFormula(row, col);
const hasFormula = !!formula;
const hasValue = value !== null && value !== undefined && value !== "";
if (!hasFormula && !hasValue) {
continue;
}
cells.set(toCellKey(row, col), {
row,
col,
value: value ?? null,
formula: formula || null,
});
}
}
return cells;
}
const DEFAULT_NUMERIC_EPSILON = 1e-8;
function numbersNearlyEqual(a, b, epsilon) {
if (a === b)
return true;
const diff = Math.abs(a - b);
const largest = Math.max(Math.abs(a), Math.abs(b));
return diff <= largest * epsilon;
}
function valuesEqual(left, right, epsilon) {
if (Object.is(left, right)) {
return true;
}
if (typeof left === "number" && typeof right === "number") {
return numbersNearlyEqual(left, right, epsilon);
}
if (left instanceof Date && right instanceof Date) {
return left.getTime() === right.getTime();
}
if (left && right && typeof left === "object" && typeof right === "object") {
try {
return JSON.stringify(left) === JSON.stringify(right);
}
catch {
return false;
}
}
return false;
}
function summarizeDivergence(changedCells, comparedCells, sheetsWithDifferences, sheetsOnlyLeft, sheetsOnlyRight) {
if (changedCells === 0) {
return "No differences found.";
}
const ratio = comparedCells > 0 ? changedCells / comparedCells : 1;
const level = ratio < 0.01
? "Low divergence"
: ratio < 0.2
? "Moderate divergence"
: "High divergence";
return `${level}: ${changedCells} changed cells across ${sheetsWithDifferences} sheet(s). Left-only sheets: ${sheetsOnlyLeft}, right-only sheets: ${sheetsOnlyRight}.`;
}
export async function diff(leftFilePath, rightFilePath, options) {
const signal = options?.signal;
const inlineLimit = options?.inlineLimit && options.inlineLimit > 0
? options.inlineLimit
: DEFAULT_INLINE_LIMIT;
const previewLimit = options?.previewLimit && options.previewLimit > 0
? options.previewLimit
: DEFAULT_PREVIEW_LIMIT;
const epsilon = options?.epsilon !== undefined && options.epsilon >= 0
? options.epsilon
: DEFAULT_NUMERIC_EPSILON;
await withFile(leftFilePath, ({ workbook: leftWorkbook }) => withFile(rightFilePath, ({ workbook: rightWorkbook }) => {
const leftSheetNames = new Set();
const rightSheetNames = new Set();
for (let i = 0; i < leftWorkbook.getSheetCount(); i++) {
throwIfAborted(signal);
leftSheetNames.add(leftWorkbook.getSheet(i).name());
}
for (let i = 0; i < rightWorkbook.getSheetCount(); i++) {
throwIfAborted(signal);
rightSheetNames.add(rightWorkbook.getSheet(i).name());
}
const allSheetNames = Array.from(new Set([...leftSheetNames, ...rightSheetNames])).sort((a, b) => a.localeCompare(b));
const previews = [];
let bufferedDiffs = [];
let outputFilePath = null;
let outputDirPath = null;
const sheetStats = {};
let changedCells = 0;
let comparedCells = 0;
const ensureOutputFile = () => {
if (outputFilePath) {
return outputFilePath;
}
outputDirPath = fs.mkdtempSync(path.join(os.tmpdir(), "hsx-diff-"));
outputFilePath = path.join(outputDirPath, "diff.ndjson");
if (bufferedDiffs.length > 0) {
const bootstrap = bufferedDiffs
.map((entry) => `${JSON.stringify(entry)}\n`)
.join("");
fs.writeFileSync(outputFilePath, bootstrap, "utf8");
bufferedDiffs = [];
}
return outputFilePath;
};
const recordDiff = (entry) => {
changedCells++;
sheetStats[entry.sheet] ??= { changedCells: 0 };
sheetStats[entry.sheet].changedCells++;
if (previews.length < previewLimit) {
previews.push(entry);
}
if (outputFilePath) {
fs.appendFileSync(outputFilePath, `${JSON.stringify(entry)}\n`, "utf8");
return;
}
bufferedDiffs.push(entry);
if (bufferedDiffs.length > inlineLimit) {
ensureOutputFile();
}
};
for (const sheetName of allSheetNames) {
throwIfAborted(signal);
const leftSheet = leftWorkbook.getSheetFromName(sheetName);
const rightSheet = rightWorkbook.getSheetFromName(sheetName);
const leftCells = leftSheet
? collectUsedCells(leftSheet, signal)
: new Map();
const rightCells = rightSheet
? collectUsedCells(rightSheet, signal)
: new Map();
const cellKeys = new Set([
...leftCells.keys(),
...rightCells.keys(),
]);
comparedCells += cellKeys.size;
for (const key of cellKeys) {
throwIfAborted(signal);
const coords = fromCellKey(key);
const left = leftCells.get(key) ?? {
row: coords.row,
col: coords.col,
value: null,
formula: null,
};
const right = rightCells.get(key) ?? {
row: coords.row,
col: coords.col,
value: null,
formula: null,
};
const sameFormula = (left.formula || null) === (right.formula || null);
const sameValue = valuesEqual(left.value, right.value, epsilon);
if (sameFormula && sameValue) {
continue;
}
recordDiff({
sheet: sheetName,
cell: cellToA1(left.row, left.col),
left: {
value: left.value,
formula: left.formula,
},
right: {
value: right.value,
formula: right.formula,
},
});
}
}
const sheetsWithDifferences = Object.keys(sheetStats).length;
const sheetsOnlyLeft = Array.from(leftSheetNames).filter((name) => !rightSheetNames.has(name));
const sheetsOnlyRight = Array.from(rightSheetNames).filter((name) => !leftSheetNames.has(name));
const summary = summarizeDivergence(changedCells, comparedCells, sheetsWithDifferences, sheetsOnlyLeft.length, sheetsOnlyRight.length);
const inlineDiffs = outputFilePath ? previews : bufferedDiffs;
ok({
summary,
leftFile: leftFilePath,
rightFile: rightFilePath,
changedCells,
comparedCells,
sheetsCompared: allSheetNames.length,
sheetsWithDifferences,
sheetsOnlyLeft,
sheetsOnlyRight,
inlineLimit,
previewLimit,
outputMode: outputFilePath ? "tmpfile" : "inline",
...(outputDirPath && outputFilePath
? {
diffFile: outputFilePath,
tempDir: outputDirPath,
note: "Diff set is large; full diff was written to diffFile as NDJSON for grep-friendly inspection.",
}
: {}),
diffs: inlineDiffs,
sheetStats,
});
}));
}
//# sourceMappingURL=diff.js.map
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAClC,MAAM,4BAA4B,GAAG,EAAE,GAAG,EAAE,CAAC;AAkB7C,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7B,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAsB,EACtB,MAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,IAAI,SAAS,GAAwB,IAAI,CAAC;IAE1C,IAAI,CAAC;QACH,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;IAElD,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAClD,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;YAC7B,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC;YAEvE,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBAC7B,GAAG;gBACH,GAAG;gBACH,KAAK,EAAE,KAAK,IAAI,IAAI;gBACpB,OAAO,EAAE,OAAO,IAAI,IAAI;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,SAAS,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe;IAC/D,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,KAAc,EAAE,OAAe;IACjE,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3E,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,YAAoB,EACpB,aAAqB,EACrB,qBAA6B,EAC7B,cAAsB,EACtB,eAAuB;IAEvB,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GACT,KAAK,GAAG,IAAI;QACV,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,KAAK,GAAG,GAAG;YACX,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,iBAAiB,CAAC;IAE1B,OAAO,GAAG,KAAK,KAAK,YAAY,yBAAyB,qBAAqB,gCAAgC,cAAc,wBAAwB,eAAe,GAAG,CAAC;AACzK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,YAAoB,EACpB,aAAqB,EACrB,OAKC;IAED,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,WAAW,GACf,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,WAAW;QACrB,CAAC,CAAC,oBAAoB,CAAC;IAC3B,MAAM,YAAY,GAChB,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC;QAC/C,CAAC,CAAC,OAAO,CAAC,YAAY;QACtB,CAAC,CAAC,qBAAqB,CAAC;IAC5B,MAAM,OAAO,GACX,OAAO,EAAE,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC;QACpD,CAAC,CAAC,OAAO,CAAC,OAAO;QACjB,CAAC,CAAC,uBAAuB,CAAC;IAE9B,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,CAC1D,QAAQ,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE;QACtD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAC9B,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,eAAe,CAAC,CAAC,CACjD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAgB,EAAE,CAAC;QACjC,IAAI,aAAa,GAAgB,EAAE,CAAC;QACpC,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,IAAI,aAAa,GAAkB,IAAI,CAAC;QAExC,MAAM,UAAU,GAA6C,EAAE,CAAC;QAEhE,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,MAAM,gBAAgB,GAAG,GAAW,EAAE;YACpC,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,cAAc,CAAC;YACxB,CAAC;YAED,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;YACpE,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAEzD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,SAAS,GAAG,aAAa;qBAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;qBAC5C,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBACpD,aAAa,GAAG,EAAE,CAAC;YACrB,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAQ,EAAE;YAC5C,YAAY,EAAE,CAAC;YACf,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YAChD,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC;YAEvC,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,EAAE,CAAC,cAAc,CACf,cAAc,EACd,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAC5B,MAAM,CACP,CAAC;gBACF,OAAO;YACT,CAAC;YAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,aAAa,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACvC,gBAAgB,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACtC,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAE7D,MAAM,SAAS,GAAG,SAAS;gBACzB,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC;gBACrC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,UAAU,GAAG,UAAU;gBAC3B,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC;gBACtC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;YAEd,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS;gBAC/B,GAAG,SAAS,CAAC,IAAI,EAAE;gBACnB,GAAG,UAAU,CAAC,IAAI,EAAE;aACrB,CAAC,CAAC;YAEH,aAAa,IAAI,QAAQ,CAAC,IAAI,CAAC;YAE/B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;oBACjC,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,IAAI;iBACd,CAAC;gBACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;oBACnC,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,IAAI;iBACd,CAAC;gBAEF,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChE,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,UAAU,CAAC;oBACT,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;oBAClC,IAAI,EAAE;wBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB;oBACD,KAAK,EAAE;wBACL,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CACtD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CACrC,CAAC;QACF,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CACxD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CACpC,CAAC;QAEF,MAAM,OAAO,GAAG,mBAAmB,CACjC,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,CAAC,MAAM,EACrB,eAAe,CAAC,MAAM,CACvB,CAAC;QAEF,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;QAE9D,EAAE,CAAC;YACD,OAAO;YACP,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,aAAa;YACxB,YAAY;YACZ,aAAa;YACb,cAAc,EAAE,aAAa,CAAC,MAAM;YACpC,qBAAqB;YACrB,cAAc;YACd,eAAe;YACf,WAAW;YACX,YAAY;YACZ,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YACjD,GAAG,CAAC,aAAa,IAAI,cAAc;gBACjC,CAAC,CAAC;oBACE,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,aAAa;oBACtB,IAAI,EAAE,8FAA8F;iBACrG;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,EAAE,WAAW;YAClB,UAAU;SACX,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
interface ScreenshotOptions {
ref?: string;
out?: string;
signal?: AbortSignal | null;
}
export declare function screenshot(filePath: string, options: ScreenshotOptions): Promise<void>;
export {};
//# sourceMappingURL=screenshot.d.ts.map
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"AAmBA,UAAU,iBAAiB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAiID,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiJf"}
import http from "node:http";
import path from "node:path";
import { parseRef, rangeDimensions } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
/**
* CDN URLs for SpreadJS (trial/eval, browser-only rendering).
* Uses the older @grapecity packages which work in eval mode with fromJSON.
*/
const CDN = {
css: "https://cdn.jsdelivr.net/npm/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.min.css",
sheets: "https://cdn.jsdelivr.net/npm/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js",
excelio: "https://cdn.jsdelivr.net/npm/@grapecity/spread-excelio/dist/gc.spread.excelio.min.js",
};
function buildViewerHTML() {
return `<!DOCTYPE html>
<html><head>
<link rel="stylesheet" href="${CDN.css}">
<style>
body { margin: 0; padding: 0; background: white; }
#ss { width: 100%; height: 100vh; }
</style>
</head><body>
<div id="ss"></div>
<script src="${CDN.sheets}"></script>
<script src="${CDN.excelio}"></script>
<script>
(function(){
var orig = CanvasRenderingContext2D.prototype.fillText;
CanvasRenderingContext2D.prototype.fillText = function(text) {
if (text && typeof text === 'string' && (
text.includes('GrapeCity') || text.includes('MESCIUS') ||
text.includes('EVALUATION') || text.includes('Powered') ||
text.includes('deployment') || text.includes('grapecity.com') ||
text.includes('mescius.com') || text.includes('Email us') ||
text === 'Evaluation Version'
)) return;
return orig.apply(this, arguments);
};
})();
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'));
fetch('/file.xlsx?t=' + Date.now()).then(function(r){ return r.blob(); }).then(function(blob){
var io = new GC.Spread.Excel.IO();
io.open(blob, function(json){
if (json.sheets) {
Object.values(json.sheets).forEach(function(s) {
s.rowCount = Math.max(s.rowCount || 0, 500);
s.columnCount = Math.max(s.columnCount || 0, 100);
});
}
spread.fromJSON(json);
spread.refresh();
window.__spread = spread;
window.__ready = true;
}, function(err){
window.__error = String(err);
window.__ready = true;
});
});
</script>
</body></html>`;
}
function startServer(html, xlsxBuf) {
return new Promise((resolve, reject) => {
const server = http.createServer((req, res) => {
if (req.url === "/" || req.url === "/index.html") {
res.writeHead(200, { "Content-Type": "text/html" });
res.end(html);
}
else if (req.url?.startsWith("/file.xlsx")) {
res.writeHead(200, {
"Content-Type": "application/octet-stream",
"Cache-Control": "no-cache",
});
res.end(xlsxBuf);
}
else {
res.writeHead(404);
res.end();
}
});
server.on("error", reject);
server.listen(0, "127.0.0.1", () => {
const addr = server.address();
if (!addr || typeof addr === "string")
return reject(new Error("bind failed"));
resolve({ server, port: addr.port });
});
});
}
/**
* Browser-side script that navigates to a range and returns its pixel rect.
* Injected via page.evaluate() as a string to avoid DOM type issues.
*/
const CLIP_RANGE_SCRIPT = `(opts) => {
const spread = window.__spread;
if (!spread) return null;
if (opts.sheetName) {
const idx = spread.getSheetIndex(opts.sheetName);
if (idx === -1) return { error: "Sheet not found: " + opts.sheetName };
spread.setActiveSheetIndex(idx);
}
const sheet = spread.getActiveSheet();
sheet.showRow(opts.startRow, GC.Spread.Sheets.VerticalPosition.top);
sheet.showColumn(opts.startCol, GC.Spread.Sheets.HorizontalPosition.left);
spread.refresh();
const hostRect = document.getElementById("ss").getBoundingClientRect();
const first = sheet.getCellRect(opts.startRow, opts.startCol);
const last = sheet.getCellRect(
opts.startRow + opts.rows - 1,
opts.startCol + opts.cols - 1,
);
if (!first || first.x == null || !last || last.x == null) return null;
var rhw = sheet.options.rowHeaderVisible !== false
? sheet.getColumnWidth(0, GC.Spread.Sheets.SheetArea.rowHeader) : 0;
var chh = sheet.options.colHeaderVisible !== false
? sheet.getRowHeight(0, GC.Spread.Sheets.SheetArea.colHeader) : 0;
const x = first.x + hostRect.left - rhw;
const y = first.y + hostRect.top - chh;
const right = last.x + last.width + hostRect.left;
const bottom = last.y + last.height + hostRect.top;
return {
x: Math.max(0, Math.floor(x)),
y: Math.max(0, Math.floor(y)),
width: Math.ceil(right - x),
height: Math.ceil(bottom - y),
};
}`;
export async function screenshot(filePath, options) {
const signal = options.signal;
// Resolve output path
const outPath = options.out
? path.resolve(options.out)
: path.resolve(`${path.basename(filePath, path.extname(filePath))}.png`);
// Get xlsx buffer from the headless engine
const xlsxBuf = await withFile(filePath, async ({ file }) => {
throwIfAborted(signal);
return file.saveToBuffer();
}, { signal });
throwIfAborted(signal);
// Import playwright lazily (optional dependency)
let chromium;
try {
const pw = await import("playwright");
chromium = pw.chromium;
}
catch {
fail("playwright is required for screenshots. Install it:\n npm i -D playwright && npx playwright install chromium");
}
// Parse range ref (if given)
const rangeRef = options.ref ? parseRef(options.ref) : null;
// Start local HTTP server
const html = buildViewerHTML();
const { server, port } = await startServer(html, xlsxBuf);
try {
throwIfAborted(signal);
const browser = await chromium.launch();
try {
// Start with a default viewport; we may resize later for large ranges
const page = await browser.newPage({
viewport: { width: 1280, height: 800 },
});
await page.goto(`http://127.0.0.1:${port}`, {
waitUntil: "networkidle",
});
// Wait for SpreadJS to finish loading the xlsx
await page.waitForFunction("window.__ready", { timeout: 15_000 });
// Check for load errors
const loadError = await page.evaluate("window.__error");
if (loadError)
fail(`SpreadJS IO error: ${loadError}`);
if (rangeRef) {
const { rows, cols } = rangeDimensions(rangeRef);
// Compute the pixel size the range needs so we can resize the viewport
const CALC_SIZE_SCRIPT = `(opts) => {
const spread = window.__spread;
if (!spread) return null;
if (opts.sheetName) {
const idx = spread.getSheetIndex(opts.sheetName);
if (idx === -1) return null;
spread.setActiveSheetIndex(idx);
}
const sheet = spread.getActiveSheet();
let w = 0, h = 0;
for (let c = opts.startCol; c < opts.startCol + opts.cols; c++) {
w += sheet.getColumnWidth(c);
}
for (let r = opts.startRow; r < opts.startRow + opts.rows; r++) {
h += sheet.getRowHeight(r);
}
// Add space for row/column headers if visible
const rhw = sheet.options.rowHeaderVisible !== false ? sheet.getColumnWidth(0, GC.Spread.Sheets.SheetArea.rowHeader) : 0;
const chh = sheet.options.colHeaderVisible !== false ? sheet.getRowHeight(0, GC.Spread.Sheets.SheetArea.colHeader) : 0;
return { width: Math.ceil(w + rhw), height: Math.ceil(h + chh) };
}`;
const calcFn = new Function(`return (${CALC_SIZE_SCRIPT})`)();
const rangeSize = (await page.evaluate(calcFn, {
sheetName: rangeRef.sheet,
startRow: rangeRef.start.row,
startCol: rangeRef.start.col,
rows,
cols,
}));
// Resize viewport if the range needs more space (with some padding)
if (rangeSize) {
const needW = rangeSize.width + 50;
const needH = rangeSize.height + 50;
if (needW > 1280 || needH > 800) {
await page.setViewportSize({
width: Math.max(1280, needW),
height: Math.max(800, needH),
});
await page.waitForTimeout(200);
}
}
// Navigate to range and get clip rect
const clipFn = new Function(`return (${CLIP_RANGE_SCRIPT})`)();
const clipRect = (await page.evaluate(clipFn, {
sheetName: rangeRef.sheet,
startRow: rangeRef.start.row,
startCol: rangeRef.start.col,
rows,
cols,
}));
if (clipRect && "error" in clipRect && clipRect.error) {
fail(clipRect.error);
}
await page.waitForTimeout(300);
if (clipRect && clipRect.width > 0 && clipRect.height > 0) {
await page.screenshot({ path: outPath, clip: clipRect });
}
else {
await page.locator("#ss").screenshot({ path: outPath });
}
}
else {
await page.waitForTimeout(300);
await page.locator("#ss").screenshot({ path: outPath });
}
}
finally {
await browser.close();
}
}
finally {
server.close();
}
ok({ file: outPath });
}
//# sourceMappingURL=screenshot.js.map
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/cli/commands/screenshot.ts"],"names":[],"mappings":"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"}
#!/usr/bin/env node
export {};
//# sourceMappingURL=daemon-entry.d.ts.map
{"version":3,"file":"daemon-entry.d.ts","sourceRoot":"","sources":["../../src/cli/daemon-entry.ts"],"names":[],"mappings":""}
#!/usr/bin/env node
import { startDaemon } from "./daemon.js";
await startDaemon();
//# sourceMappingURL=daemon-entry.js.map
{"version":3,"file":"daemon-entry.js","sourceRoot":"","sources":["../../src/cli/daemon-entry.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,EAAE,CAAC"}
export declare function getSocketPath(): string;
export declare function getLogPath(): string;
export declare function startDaemon(): Promise<void>;
//# sourceMappingURL=daemon.d.ts.map
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAmCA,wBAAgB,aAAa,IAAI,MAAM,CAKtC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AA+BD,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyTjD"}
import { existsSync, unlinkSync } from "node:fs";
import { connect, createServer } from "node:net";
import { homedir } from "node:os";
import { join } from "node:path";
import { dispose as disposeRuntime, init } from "../index.js";
import { registerSignalTimeout, throwIfAborted } from "./abort.js";
import { runWithDaemonRuntime } from "./context.js";
import { dispatch } from "./dispatch.js";
import { FileCache } from "./file-cache.js";
import { createIoContext, runWithIo } from "./output.js";
function envEnabled(value) {
if (!value)
return false;
return /^(1|true|yes|on)$/i.test(value.trim());
}
function envPositiveInt(value, fallback) {
if (!value)
return fallback;
const parsed = Number.parseInt(value, 10);
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
}
const IDLE_TIMEOUT_MS = 5 * 60 * 1000;
const AUTO_FLUSH_INTERVAL_MS = envPositiveInt(process.env.HSX_AUTO_FLUSH_MS, 5_000);
const DEFAULT_CACHE_SIZE = 10;
const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
const PROBE_TIMEOUT_MS = 3_000;
function errorMessage(err) {
return err instanceof Error ? err.message : String(err);
}
export function getSocketPath() {
if (process.env.HSX_SOCKET_PATH)
return process.env.HSX_SOCKET_PATH;
return process.platform === "win32"
? "\\\\.\\pipe\\hsx-daemon"
: join(homedir(), ".hsx-daemon.sock");
}
export function getLogPath() {
const socketPath = getSocketPath();
if (socketPath.startsWith("\\\\.\\pipe\\")) {
return join(homedir(), ".hsx-daemon.log");
}
return `${socketPath.replace(/\.sock$/, "")}.log`;
}
function isDaemonListening(socketPath) {
return new Promise((resolve) => {
const probe = connect({ path: socketPath });
const timeout = setTimeout(() => {
probe.destroy();
resolve(false);
}, PROBE_TIMEOUT_MS);
probe.on("connect", () => {
clearTimeout(timeout);
probe.end();
resolve(true);
});
probe.on("error", () => {
clearTimeout(timeout);
resolve(false);
});
});
}
export async function startDaemon() {
const socketPath = getSocketPath();
if (process.platform !== "win32" && existsSync(socketPath)) {
if (await isDaemonListening(socketPath)) {
process.stderr.write(`${JSON.stringify({ error: "Daemon already running" })}\n`);
process.exit(1);
}
try {
unlinkSync(socketPath);
}
catch { }
}
const { GC, ExcelFile } = await init();
const cacheSize = envPositiveInt(process.env.HSX_CACHE_SIZE, DEFAULT_CACHE_SIZE);
const writeThrough = envEnabled(process.env.HSX_WRITE_THROUGH);
const fileCache = new FileCache(cacheSize);
let idleTimer = null;
let activeConnections = 0;
const server = createServer(handleConnection);
function daemonLog(msg) {
const ts = new Date().toISOString();
process.stderr.write(`[hsx-daemon ${ts}] ${msg}\n`);
}
function resetIdleTimer() {
if (idleTimer)
clearTimeout(idleTimer);
idleTimer = setTimeout(() => {
if (activeConnections === 0) {
void shutdown().catch((err) => {
daemonLog(`idle shutdown failed: ${errorMessage(err)}`);
});
}
}, IDLE_TIMEOUT_MS);
}
let shuttingDown = false;
async function shutdown(options) {
if (shuttingDown)
return;
shuttingDown = true;
if (idleTimer)
clearTimeout(idleTimer);
if (autoFlushTimer)
clearInterval(autoFlushTimer);
if (!options?.skipFlush) {
try {
const flushed = await fileCache.flushDirty();
if (flushed > 0) {
daemonLog(`flushed ${flushed} dirty file(s) to disk`);
}
}
catch (err) {
daemonLog(`shutdown aborted: failed to flush dirty files: ${errorMessage(err)}`);
shuttingDown = false;
resetIdleTimer();
throw err;
}
}
fileCache.clear();
server.close();
try {
unlinkSync(socketPath);
}
catch { }
disposeRuntime();
process.exit(0);
}
let queue = Promise.resolve();
function enqueue(fn) {
const task = queue
.catch((err) => daemonLog(`queue error: ${errorMessage(err)}`))
.then(fn);
queue = task;
return task;
}
let autoFlushTimer = null;
if (!writeThrough) {
autoFlushTimer = setInterval(() => {
if (fileCache.dirtyCount > 0) {
enqueue(async () => {
try {
const flushed = await fileCache.flushDirty();
if (flushed > 0) {
daemonLog(`auto-flush: saved ${flushed} dirty file(s) to disk`);
}
}
catch (err) {
daemonLog(`auto-flush failed: ${errorMessage(err)}`);
}
}).catch(() => { });
}
}, AUTO_FLUSH_INTERVAL_MS);
autoFlushTimer.unref();
}
async function handleRequest(request, signal) {
try {
throwIfAborted(signal);
if (request.argv[0] === "daemon" && request.argv[1] === "stop") {
const flushed = await fileCache.flushDirty();
if (flushed > 0) {
daemonLog(`flushed ${flushed} dirty file(s) before stop`);
}
return {
stdout: `${JSON.stringify({ stopped: true })}\n`,
stderr: "",
exitCode: 0,
shutdown: true,
};
}
if (request.argv[0] === "daemon" && request.argv[1] === "flush") {
const flushed = await fileCache.flushDirty();
if (flushed > 0) {
daemonLog(`flushed ${flushed} dirty file(s) via explicit request`);
}
return {
stdout: `${JSON.stringify({
flushed,
dirtyFiles: fileCache.dirtyCount,
})}\n`,
stderr: "",
exitCode: 0,
};
}
if (request.argv[0] === "daemon" && request.argv[1] === "status") {
const mem = process.memoryUsage();
return {
stdout: `${JSON.stringify({
pid: process.pid,
cachedFiles: fileCache.size,
dirtyFiles: fileCache.dirtyCount,
maxCacheSize: fileCache.maxCacheSize,
writeThrough,
uptime: Math.floor(process.uptime()),
heapUsedMB: Math.round(mem.heapUsed / 1024 / 1024),
rssMB: Math.round(mem.rss / 1024 / 1024),
logFile: getLogPath(),
})}\n`,
stderr: "",
exitCode: 0,
};
}
const runtime = {
GC,
ExcelFile,
fileCache,
cwd: request.cwd,
writeThrough,
};
const io = createIoContext(request.stdin);
try {
await runWithDaemonRuntime(runtime, () => runWithIo(io, () => dispatch(request.argv, { signal })));
return { stdout: io.stdout, stderr: io.stderr, exitCode: 0 };
}
catch (err) {
return {
stdout: io.stdout,
stderr: `${io.stderr}${JSON.stringify({ error: errorMessage(err) })}\n`,
exitCode: 1,
};
}
}
catch (err) {
return {
stdout: "",
stderr: `${JSON.stringify({ error: errorMessage(err) })}\n`,
exitCode: 1,
};
}
}
function handleConnection(socket) {
activeConnections++;
resetIdleTimer();
const activeControllers = new Set();
let buffer = "";
socket.on("data", (data) => {
buffer += data.toString();
let newlineIdx = buffer.indexOf("\n");
while (newlineIdx !== -1) {
const line = buffer.slice(0, newlineIdx);
buffer = buffer.slice(newlineIdx + 1);
if (line.trim()) {
let request;
try {
request = JSON.parse(line);
}
catch {
socket.write(`${JSON.stringify({ stdout: "", stderr: "Invalid JSON\n", exitCode: 1 })}\n`);
newlineIdx = buffer.indexOf("\n");
continue;
}
const controller = new AbortController();
activeControllers.add(controller);
const requestTimeoutMs = envPositiveInt(request.timeoutMs ? String(request.timeoutMs) : undefined, DEFAULT_REQUEST_TIMEOUT_MS);
registerSignalTimeout(controller.signal, requestTimeoutMs, `Command timed out after ${Math.ceil(requestTimeoutMs / 1000)}s`);
const timeout = setTimeout(() => {
controller.abort(new Error(`Command timed out after ${Math.ceil(requestTimeoutMs / 1000)}s`));
}, requestTimeoutMs);
enqueue(async () => {
try {
const response = await handleRequest(request, controller.signal);
const { shutdown: shouldShutdown, ...wire } = response;
try {
socket.write(`${JSON.stringify(wire)}\n`, (err) => {
if (err)
daemonLog(`socket.write error: ${err.message}`);
if (shouldShutdown) {
void shutdown({ skipFlush: true }).catch((shutdownErr) => {
daemonLog(`shutdown failed after stop ack: ${errorMessage(shutdownErr)}`);
});
}
});
}
catch (err) {
daemonLog(`socket.write threw: ${errorMessage(err)}`);
}
}
finally {
clearTimeout(timeout);
activeControllers.delete(controller);
}
}).catch((err) => {
daemonLog(`request handling failed: ${errorMessage(err)}`);
});
}
newlineIdx = buffer.indexOf("\n");
}
});
let disconnected = false;
const onDisconnect = () => {
if (disconnected)
return;
disconnected = true;
for (const controller of activeControllers) {
controller.abort(new Error("Client disconnected"));
}
activeConnections--;
resetIdleTimer();
};
socket.on("close", onDisconnect);
socket.on("error", onDisconnect);
}
server.on("error", (err) => {
daemonLog(`server error: ${err.message}`);
try {
unlinkSync(socketPath);
}
catch { }
disposeRuntime();
process.exit(1);
});
server.listen(socketPath, () => {
if (process.send)
process.send({ ready: true });
process.stdout.write(`${JSON.stringify({ daemon: "started", pid: process.pid })}\n`);
resetIdleTimer();
});
process.on("SIGINT", () => {
void shutdown().catch((err) => {
daemonLog(`SIGINT shutdown failed: ${errorMessage(err)}`);
process.exit(1);
});
});
process.on("SIGTERM", () => {
void shutdown().catch((err) => {
daemonLog(`SIGTERM shutdown failed: ${errorMessage(err)}`);
process.exit(1);
});
});
}
//# sourceMappingURL=daemon.js.map
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
export declare const USAGE = "Usage: hsx <command> [args]\n\nCommands:\n create <file> Create a new Excel file\n info <file> Show workbook metadata\n get <file> <ref> Read cells (Sheet1!A1:C10)\n csv <file> <ref> [--mode M] [--formulas] Read range as CSV\n set <file> <ref> [json] Write cells (JSON from arg or stdin)\n clear <file> <ref> [--type all|styles] Clear a range (default: values only)\n search <file> <term> [--sheet S] [--regex] Search for values across sheets\n copy <file> <src> <dst> Copy range (formulas + styles)\n diff <left-file> <right-file> Compare workbooks (value + formula)\n deps <file> <cell> [--depth N|--recursive] Trace precedents (what this cell reads)\n refs <file> <cell> [--depth N|--recursive] Trace dependents (what reads this cell)\n sheet <file> <op> [args] list | create | delete | rename\n rc <file> <op> <dim> [--ref R] [--count N] Insert/delete/hide/freeze rows or columns\n resize <file> [--columns A:D] [--width N] Resize column widths or row heights\n objects <file> [--sheet <name>] List charts, tables, pivots\n screenshot <file> [ref] [-o out.png] Screenshot workbook or range as PNG\n eval <file> [code] Execute arbitrary JS (code from arg or stdin)\n daemon start Start the background daemon\n daemon stop Stop the background daemon\n daemon status Show daemon status\n daemon flush Flush buffered workbook writes\n\nOptions:\n --no-daemon Skip daemon, run directly\n --timeout <seconds> Command timeout (default: 30s)\n\nDiff options:\n --inline-limit <n> Max inline diff rows before spooling to tmp file\n --preview-limit <n> Number of diff rows kept in stdout JSON\n --epsilon <n> Relative tolerance for numeric comparison (default: 1e-8)\n\nCSV options:\n --mode value|formula|both value: calculated values (default)\n formula: formula text for formula cells\n both: value and formula (e.g. \"5 | =B2+1\")\n --formulas shorthand for --mode formula\n\nDependency tracing options:\n --depth <n> Trace up to n hops (default: 1)\n --recursive Shorthand for --depth 50\n --max-formulas <n> refs: cap scanned formula cells (default: 250000)\n\nReference format:\n Sheet1!A1:C10 range on named sheet\n A1:C10 range on active sheet\n A1 single cell\n\nGlobals available in eval:\n workbook SpreadJS Workbook instance\n sheet Active worksheet\n GC GC.Spread.Sheets namespace\n file ExcelFile wrapper (batch, save, toJSON)\n range(ref) SpreadJS Range resolved from A1 ref (active sheet by default)";
export declare function dispatch(args: string[], options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=dispatch.d.ts.map
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/cli/dispatch.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,KAAK,w/FAuDyD,CAAC;AAqJ5E,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAyMf"}
import { clear } from "./commands/clear.js";
import { copy } from "./commands/copy.js";
import { create } from "./commands/create.js";
import { csv } from "./commands/csv.js";
import { deps, refs } from "./commands/deps.js";
import { diff } from "./commands/diff.js";
import { evalCode } from "./commands/eval.js";
import { get } from "./commands/get.js";
import { info } from "./commands/info.js";
import { objects } from "./commands/objects.js";
import { resize } from "./commands/resize.js";
import { rowsCols } from "./commands/rows-cols.js";
import { screenshot } from "./commands/screenshot.js";
import { search } from "./commands/search.js";
import { set } from "./commands/set.js";
import { sheet } from "./commands/sheet.js";
import { writeStderr, writeStdout } from "./output.js";
export const USAGE = `Usage: hsx <command> [args]
Commands:
create <file> Create a new Excel file
info <file> Show workbook metadata
get <file> <ref> Read cells (Sheet1!A1:C10)
csv <file> <ref> [--mode M] [--formulas] Read range as CSV
set <file> <ref> [json] Write cells (JSON from arg or stdin)
clear <file> <ref> [--type all|styles] Clear a range (default: values only)
search <file> <term> [--sheet S] [--regex] Search for values across sheets
copy <file> <src> <dst> Copy range (formulas + styles)
diff <left-file> <right-file> Compare workbooks (value + formula)
deps <file> <cell> [--depth N|--recursive] Trace precedents (what this cell reads)
refs <file> <cell> [--depth N|--recursive] Trace dependents (what reads this cell)
sheet <file> <op> [args] list | create | delete | rename
rc <file> <op> <dim> [--ref R] [--count N] Insert/delete/hide/freeze rows or columns
resize <file> [--columns A:D] [--width N] Resize column widths or row heights
objects <file> [--sheet <name>] List charts, tables, pivots
screenshot <file> [ref] [-o out.png] Screenshot workbook or range as PNG
eval <file> [code] Execute arbitrary JS (code from arg or stdin)
daemon start Start the background daemon
daemon stop Stop the background daemon
daemon status Show daemon status
daemon flush Flush buffered workbook writes
Options:
--no-daemon Skip daemon, run directly
--timeout <seconds> Command timeout (default: 30s)
Diff options:
--inline-limit <n> Max inline diff rows before spooling to tmp file
--preview-limit <n> Number of diff rows kept in stdout JSON
--epsilon <n> Relative tolerance for numeric comparison (default: 1e-8)
CSV options:
--mode value|formula|both value: calculated values (default)
formula: formula text for formula cells
both: value and formula (e.g. "5 | =B2+1")
--formulas shorthand for --mode formula
Dependency tracing options:
--depth <n> Trace up to n hops (default: 1)
--recursive Shorthand for --depth 50
--max-formulas <n> refs: cap scanned formula cells (default: 250000)
Reference format:
Sheet1!A1:C10 range on named sheet
A1:C10 range on active sheet
A1 single cell
Globals available in eval:
workbook SpreadJS Workbook instance
sheet Active worksheet
GC GC.Spread.Sheets namespace
file ExcelFile wrapper (batch, save, toJSON)
range(ref) SpreadJS Range resolved from A1 ref (active sheet by default)`;
function flag(args, name) {
const idx = args.indexOf(name);
return idx !== -1 ? args[idx + 1] : undefined;
}
function hasFlag(args, name) {
return args.includes(name);
}
function requireArg(args, index, usage) {
const value = args[index];
if (!value || value.startsWith("--")) {
throw new Error(`Usage: hsx ${usage}`);
}
return value;
}
function parseOptionalInt(value, optionName) {
if (value === undefined)
return undefined;
const parsed = Number.parseInt(value, 10);
if (Number.isNaN(parsed)) {
throw new Error(`Invalid value for ${optionName}: ${value}`);
}
return parsed;
}
function parseOptionalFloat(value, optionName) {
if (value === undefined)
return undefined;
const parsed = Number.parseFloat(value);
if (Number.isNaN(parsed)) {
throw new Error(`Invalid value for ${optionName}: ${value}`);
}
return parsed;
}
function parseClearType(value) {
if (!value)
return "values";
if (value === "values" || value === "styles" || value === "all") {
return value;
}
throw new Error(`Invalid value for --type: ${value}`);
}
function parseCsvMode(args) {
let explicitMode;
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === "--mode") {
const next = args[i + 1];
if (!next || next.startsWith("--")) {
throw new Error("Usage: hsx csv <file> <ref> [--mode value|formula|both]");
}
explicitMode = next;
i++;
continue;
}
if (arg.startsWith("--mode=")) {
const value = arg.slice("--mode=".length);
if (!value) {
throw new Error("Usage: hsx csv <file> <ref> [--mode value|formula|both]");
}
explicitMode = value;
}
}
if (explicitMode) {
if (explicitMode === "value" ||
explicitMode === "formula" ||
explicitMode === "both") {
return explicitMode;
}
throw new Error(`Invalid --mode value: ${explicitMode}. Expected value|formula|both`);
}
return hasFlag(args, "--formulas") ? "formula" : "value";
}
function parseCsvPositionalArgs(args) {
const positional = [];
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === "--mode") {
i++;
continue;
}
if (arg.startsWith("--mode=") || arg === "--formulas") {
continue;
}
if (arg.startsWith("--")) {
continue;
}
positional.push(arg);
}
const file = positional[0];
const ref = positional[1];
if (!file || !ref) {
throw new Error("Usage: hsx csv <file> <ref> [--mode value|formula|both]");
}
return { file, ref };
}
function parseTraceDepth(args) {
const hasDepthFlag = hasFlag(args, "--depth");
const rawDepth = flag(args, "--depth");
if (hasDepthFlag && (!rawDepth || rawDepth.startsWith("--"))) {
throw new Error("Usage: --depth <n>");
}
if (rawDepth !== undefined) {
const depth = Number.parseInt(rawDepth, 10);
if (Number.isNaN(depth) || depth <= 0) {
throw new Error(`Invalid value for --depth: ${rawDepth}`);
}
return depth;
}
return hasFlag(args, "--recursive") ? 50 : 1;
}
export async function dispatch(args, options) {
const signal = options?.signal;
const command = args[0];
const rest = args.slice(1);
switch (command) {
case "create": {
const file = requireArg(rest, 0, "create <file>");
await create(file, { signal });
break;
}
case "info": {
const file = requireArg(rest, 0, "info <file>");
await info(file, { signal });
break;
}
case "get": {
const file = requireArg(rest, 0, "get <file> <ref>");
const ref = requireArg(rest, 1, "get <file> <ref>");
const styles = !hasFlag(rest, "--no-styles");
await get(file, ref, { styles, signal });
break;
}
case "csv": {
const { file, ref } = parseCsvPositionalArgs(rest);
const mode = parseCsvMode(rest);
await csv(file, ref, { signal, mode });
break;
}
case "set": {
const file = requireArg(rest, 0, "set <file> <ref> [json]");
const ref = requireArg(rest, 1, "set <file> <ref> [json]");
const json = rest[2];
await set(file, ref, json, { signal });
break;
}
case "clear": {
const file = requireArg(rest, 0, "clear <file> <ref>");
const ref = requireArg(rest, 1, "clear <file> <ref>");
await clear(file, ref, parseClearType(flag(rest, "--type")), { signal });
break;
}
case "search": {
const file = requireArg(rest, 0, "search <file> <term>");
const term = requireArg(rest, 1, "search <file> <term>");
await search(file, term, {
sheet: flag(rest, "--sheet"),
matchCase: hasFlag(rest, "--match-case"),
regex: hasFlag(rest, "--regex"),
maxResults: parseOptionalInt(flag(rest, "--max"), "--max"),
signal,
});
break;
}
case "copy": {
const file = requireArg(rest, 0, "copy <file> <src> <dst>");
const src = requireArg(rest, 1, "copy <file> <src> <dst>");
const dst = requireArg(rest, 2, "copy <file> <src> <dst>");
await copy(file, src, dst, { signal });
break;
}
case "diff": {
const leftFile = requireArg(rest, 0, "diff <left-file> <right-file>");
const rightFile = requireArg(rest, 1, "diff <left-file> <right-file>");
await diff(leftFile, rightFile, {
inlineLimit: parseOptionalInt(flag(rest, "--inline-limit"), "--inline-limit"),
previewLimit: parseOptionalInt(flag(rest, "--preview-limit"), "--preview-limit"),
epsilon: parseOptionalFloat(flag(rest, "--epsilon"), "--epsilon"),
signal,
});
break;
}
case "deps": {
const file = requireArg(rest, 0, "deps <file> <cell>");
const cell = requireArg(rest, 1, "deps <file> <cell>");
await deps(file, cell, {
depth: parseTraceDepth(rest),
signal,
});
break;
}
case "refs": {
const file = requireArg(rest, 0, "refs <file> <cell>");
const cell = requireArg(rest, 1, "refs <file> <cell>");
await refs(file, cell, {
depth: parseTraceDepth(rest),
maxFormulaCells: parseOptionalInt(flag(rest, "--max-formulas"), "--max-formulas"),
signal,
});
break;
}
case "sheet": {
const file = requireArg(rest, 0, "sheet <file> <op> [args]");
const op = requireArg(rest, 1, "sheet <file> <op> [args]");
const opArgs = rest.slice(2);
await sheet(file, op, opArgs, { signal });
break;
}
case "rc": {
const file = requireArg(rest, 0, "rc <file> <op> <dim>");
const opRaw = requireArg(rest, 1, "rc <file> <op> <dim>");
const dimRaw = requireArg(rest, 2, "rc <file> <op> <dim>");
const validOps = new Set([
"insert",
"delete",
"hide",
"unhide",
"freeze",
"unfreeze",
]);
const dimAliases = {
rows: "rows",
row: "rows",
columns: "columns",
column: "columns",
cols: "columns",
col: "columns",
};
if (!validOps.has(opRaw)) {
throw new Error(`Invalid rc operation: ${opRaw}`);
}
const dim = dimAliases[dimRaw.toLowerCase()];
if (!dim) {
throw new Error(`Invalid rc dimension: ${dimRaw}. Expected rows|columns`);
}
await rowsCols(file, opRaw, dim, {
sheet: flag(rest, "--sheet"),
ref: flag(rest, "--ref"),
count: parseOptionalInt(flag(rest, "--count"), "--count"),
signal,
});
break;
}
case "resize": {
const file = requireArg(rest, 0, "resize <file> [options]");
await resize(file, flag(rest, "--sheet"), {
columns: flag(rest, "--columns"),
rows: flag(rest, "--rows"),
width: parseOptionalFloat(flag(rest, "--width"), "--width"),
height: parseOptionalFloat(flag(rest, "--height"), "--height"),
signal,
});
break;
}
case "objects": {
const file = requireArg(rest, 0, "objects <file>");
await objects(file, flag(rest, "--sheet"), { signal });
break;
}
case "screenshot": {
const file = requireArg(rest, 0, "screenshot <file> [ref] [-o out.png]");
const ref = rest[1] && !rest[1].startsWith("-") ? rest[1] : undefined;
await screenshot(file, {
ref,
out: flag(rest, "-o") ?? flag(rest, "--out"),
signal,
});
break;
}
case "eval": {
const file = requireArg(rest, 0, "eval <file> [code]");
const code = rest[1];
await evalCode(file, code, { signal });
break;
}
default:
writeStderr(`Unknown command: ${command}\n`);
writeStdout(`${USAGE}\n`);
throw new Error(`Unknown command: ${command}`);
}
}
//# sourceMappingURL=dispatch.js.map
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/cli/dispatch.ts"],"names":[],"mappings":"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"}
import type { ExcelFile } from "../index.js";
export declare class FileCache {
private readonly maxSize;
private cache;
constructor(maxSize?: number);
get maxCacheSize(): number;
private key;
private getMtime;
get(filePath: string, cwd: string): Promise<{
file: ExcelFile;
absPath: string;
} | null>;
put(filePath: string, cwd: string, file: ExcelFile): Promise<void>;
markDirty(filePath: string, cwd: string): void;
updateMtime(filePath: string, cwd: string): Promise<void>;
isDirty(filePath: string, cwd: string): boolean;
invalidate(filePath: string, cwd: string): void;
flushDirty(): Promise<number>;
get dirtyCount(): number;
clear(): void;
get size(): number;
}
//# sourceMappingURL=file-cache.d.ts.map
{"version":3,"file":"file-cache.d.ts","sourceRoot":"","sources":["../../src/cli/file-cache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,KAAK,CAAiC;gBAEjB,OAAO,SAAK;IAEzC,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,OAAO,CAAC,GAAG;YAIG,QAAQ;IAQhB,GAAG,CACP,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAkBjD,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAMxC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAK/C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAanC,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
import { stat } from "node:fs/promises";
import { resolve } from "node:path";
export class FileCache {
maxSize;
cache = new Map();
constructor(maxSize = 10) {
this.maxSize = maxSize;
}
get maxCacheSize() {
return this.maxSize;
}
key(filePath, cwd) {
return resolve(cwd, filePath);
}
async getMtime(absPath) {
try {
return (await stat(absPath)).mtimeMs;
}
catch {
return -1;
}
}
async get(filePath, cwd) {
const absPath = this.key(filePath, cwd);
const entry = this.cache.get(absPath);
if (!entry)
return null;
if (!entry.dirty) {
const currentMtime = await this.getMtime(absPath);
if (currentMtime !== entry.mtime) {
this.cache.delete(absPath);
return null;
}
}
this.cache.delete(absPath);
this.cache.set(absPath, entry);
return { file: entry.file, absPath };
}
async put(filePath, cwd, file) {
const absPath = this.key(filePath, cwd);
const mtime = await this.getMtime(absPath);
if (this.cache.size >= this.maxSize && !this.cache.has(absPath)) {
const oldest = this.cache.keys().next().value;
if (oldest !== undefined) {
const entry = this.cache.get(oldest);
if (entry?.dirty) {
await entry.file.save(entry.absPath);
}
this.cache.delete(oldest);
}
}
this.cache.set(absPath, { file, absPath, mtime, dirty: false });
}
markDirty(filePath, cwd) {
const absPath = this.key(filePath, cwd);
const entry = this.cache.get(absPath);
if (entry)
entry.dirty = true;
}
async updateMtime(filePath, cwd) {
const absPath = this.key(filePath, cwd);
const entry = this.cache.get(absPath);
if (entry) {
entry.mtime = await this.getMtime(absPath);
entry.dirty = false;
}
}
isDirty(filePath, cwd) {
const entry = this.cache.get(this.key(filePath, cwd));
return !!entry?.dirty;
}
invalidate(filePath, cwd) {
this.cache.delete(this.key(filePath, cwd));
}
async flushDirty() {
let flushed = 0;
for (const entry of this.cache.values()) {
if (entry.dirty) {
await entry.file.save(entry.absPath);
entry.mtime = await this.getMtime(entry.absPath);
entry.dirty = false;
flushed++;
}
}
return flushed;
}
get dirtyCount() {
let count = 0;
for (const entry of this.cache.values()) {
if (entry.dirty)
count++;
}
return count;
}
clear() {
this.cache.clear();
}
get size() {
return this.cache.size;
}
}
//# sourceMappingURL=file-cache.js.map
{"version":3,"file":"file-cache.js","sourceRoot":"","sources":["../../src/cli/file-cache.ts"],"names":[],"mappings":"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"}
+3
-1

@@ -1,2 +0,4 @@

export declare function clear(filePath: string, ref: string, clearType?: "values" | "styles" | "all"): Promise<void>;
export declare function clear(filePath: string, ref: string, clearType?: "values" | "styles" | "all", options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=clear.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,QAAQ,GAAG,QAAQ,GAAG,KAAgB,GAChD,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
{"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAIA,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,QAAQ,GAAG,QAAQ,GAAG,KAAgB,EACjD,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAiDf"}
import { parseRef, rangeDimensions } from "../a1.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
export async function clear(filePath, ref, clearType = "values") {
export async function clear(filePath, ref, clearType = "values", options) {
const parsed = parseRef(ref);
await withFile(filePath, ({ workbook, GC }) => {
await withFile(filePath, ({ file, workbook, GC }) => {
const sheet = parsed.sheet

@@ -15,11 +15,13 @@ ? workbook.getSheetFromName(parsed.sheet)

const range = new GC.Spread.Sheets.Range(parsed.start.row, parsed.start.col, rows, cols);
if (clearType === "values" || clearType === "all") {
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
}
if (clearType === "styles" || clearType === "all") {
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.style);
}
file.batch(() => {
if (clearType === "values" || clearType === "all") {
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.data);
}
if (clearType === "styles" || clearType === "all") {
sheet.clear(range.row, range.col, range.rowCount, range.colCount, GC.Spread.Sheets.SheetArea.viewport, GC.Spread.Sheets.StorageType.style);
}
});
ok({ cleared: ref, type: clearType });
}, { save: true });
}, { save: true, signal: options?.signal });
}
//# sourceMappingURL=clear.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,QAAgB,EAChB,GAAW,EACX,YAAyC,QAAQ;IAEjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAClC,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CACnC,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;AACJ,CAAC"}
{"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/cli/commands/clear.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,QAAgB,EAChB,GAAW,EACX,YAAyC,QAAQ,EACjD,OAAyC;IAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACd,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAClC,CAAC;YACJ,CAAC;YACD,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBAClD,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,QAAQ,EACd,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CACnC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACxC,CAAC;AACJ,CAAC"}

@@ -1,2 +0,4 @@

export declare function copy(filePath: string, srcRef: string, dstRef: string): Promise<void>;
export declare function copy(filePath: string, srcRef: string, dstRef: string, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=copy.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsDf"}
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"AAKA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAwDf"}
import { parseRef, rangeDimensions } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
export async function copy(filePath, srcRef, dstRef) {
export async function copy(filePath, srcRef, dstRef, options) {
const src = parseRef(srcRef);
const dst = parseRef(dstRef);
const signal = options?.signal;
await withFile(filePath, ({ file, workbook }) => {

@@ -22,2 +24,3 @@ const srcSheet = src.sheet

for (let r = 0; r < dstRows; r++) {
throwIfAborted(signal);
for (let c = 0; c < dstCols; c++) {

@@ -50,4 +53,4 @@ const sr = src.start.row + (r % srcRows);

});
}, { save: true });
}, { save: true, signal });
}
//# sourceMappingURL=copy.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/cli/commands/copy.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,4 @@

export declare function create(filePath: string): Promise<void>;
export declare function create(filePath: string, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=create.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAGf"}
import { withNewFile } from "../context.js";
import { ok } from "../output.js";
export async function create(filePath) {
await withNewFile(filePath);
export async function create(filePath, options) {
await withNewFile(filePath, undefined, { signal: options?.signal });
ok({ created: filePath });
}
//# sourceMappingURL=create.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5B,CAAC"}
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,OAAyC;IAEzC,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpE,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5B,CAAC"}

@@ -1,2 +0,6 @@

export declare function csv(filePath: string, ref: string): Promise<void>;
export type CsvMode = "value" | "formula" | "both";
export declare function csv(filePath: string, ref: string, options?: {
signal?: AbortSignal | null;
mode?: CsvMode;
}): Promise<void>;
//# sourceMappingURL=csv.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"AAIA,wBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtE"}
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnD,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,OAAO,CAAC,IAAI,CAAC,CAkCf"}
import { parseRef, rangeDimensions } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail } from "../output.js";
export async function csv(filePath, ref) {
import { fail, writeStdout } from "../output.js";
export async function csv(filePath, ref, options = {}) {
const parsed = parseRef(ref);
const signal = options?.signal;
const mode = options.mode ?? "value";
await withFile(filePath, ({ workbook }) => {

@@ -16,19 +19,41 @@ const sheet = parsed.sheet

for (let r = 0; r < rows; r++) {
throwIfAborted(signal);
const row = [];
for (let c = 0; c < cols; c++) {
const value = sheet.getValue(parsed.start.row + r, parsed.start.col + c);
const str = value === null || value === undefined ? "" : String(value);
if (str.includes(",") || str.includes('"') || str.includes("\n")) {
row.push(`"${str.replace(/"/g, '""')}"`);
}
else {
row.push(str);
}
const rowIndex = parsed.start.row + r;
const colIndex = parsed.start.col + c;
row.push(toCsvCell(sheet, rowIndex, colIndex, mode));
}
lines.push(row.join(","));
}
process.stdout.write(`${lines.join("\n")}\n`);
process.exit(0);
});
writeStdout(`${lines.join("\n")}\n`);
}, { signal });
}
function toCsvCell(sheet, row, col, mode) {
const value = sheet.getValue(row, col);
const formula = sheet.getFormula(row, col);
const valueText = value === null || value === undefined ? "" : String(value);
const formulaText = formula ? `=${formula}` : "";
let text = "";
if (mode === "formula") {
text = formulaText || valueText;
}
else if (mode === "both") {
text = formulaText
? valueText
? `${valueText} | ${formulaText}`
: formulaText
: valueText;
}
else {
text = valueText;
}
return escapeCsv(text);
}
function escapeCsv(text) {
if (text.includes(",") || text.includes('"') || text.includes("\n")) {
return `"${text.replace(/"/g, '""')}"`;
}
return text;
}
//# sourceMappingURL=csv.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,QAAgB,EAAE,GAAW;IACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACxB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAE9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EACpB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CACrB,CAAC;gBACF,MAAM,GAAG,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
{"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/cli/commands/csv.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,4 @@

export declare function evalCode(filePath: string, codeArg: string | undefined): Promise<void>;
export declare function evalCode(filePath: string, codeArg: string | undefined, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=eval.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkDf"}
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAIA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAqFf"}

@@ -0,7 +1,26 @@

import { parseRef } from "../a1.js";
import { withFile } from "../context.js";
import { fail, ok, readInput } from "../output.js";
export async function evalCode(filePath, codeArg) {
export async function evalCode(filePath, codeArg, options) {
const code = await readInput(codeArg);
await withFile(filePath, async ({ file, workbook, GC }) => {
const sheet = workbook.getActiveSheet();
const range = (ref) => {
if (typeof ref !== "string" || ref.trim().length === 0) {
throw new Error("range(ref) expects a non-empty A1 reference string.");
}
const parsed = parseRef(ref.trim());
const targetSheet = parsed.sheet
? workbook.getSheetFromName(parsed.sheet)
: workbook.getActiveSheet();
if (!targetSheet) {
throw new Error(`Sheet not found: ${parsed.sheet ?? "(active)"}`);
}
const rowCount = parsed.end.row - parsed.start.row + 1;
const colCount = parsed.end.col - parsed.start.col + 1;
if (rowCount < 1 || colCount < 1) {
throw new Error(`Invalid range reference: ${ref}`);
}
return targetSheet.getRange(parsed.start.row, parsed.start.col, rowCount, colCount);
};
// Capture console.log output

@@ -17,4 +36,4 @@ const logs = [];

const AsyncFunction = Object.getPrototypeOf(async () => { }).constructor;
const fn = new AsyncFunction("workbook", "sheet", "GC", "file", code);
const result = await fn(workbook, sheet, GC, file);
const fn = new AsyncFunction("workbook", "sheet", "GC", "file", "range", code);
const result = await fn(workbook, sheet, GC, file, range);
const output = {};

@@ -33,6 +52,2 @@ if (result !== undefined) {

catch (err) {
// Restore console before failing
console.log = origLog;
console.warn = origWarn;
console.error = origError;
fail(err instanceof Error ? err.message : String(err));

@@ -45,4 +60,4 @@ }

}
}, { save: true });
}, { save: true, signal: options?.signal });
}
//# sourceMappingURL=eval.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"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"}
export declare function get(filePath: string, ref: string, options: {
styles?: boolean;
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=get.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAKA,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiEf"}
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AAMA,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACzD,OAAO,CAAC,IAAI,CAAC,CAwEf"}
import { cellToA1, parseRef, rangeDimensions } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";

@@ -7,2 +8,3 @@ import { fail, ok } from "../output.js";

const parsed = parseRef(ref);
const signal = options.signal;
await withFile(filePath, ({ workbook }) => {

@@ -19,2 +21,3 @@ const sheet = parsed.sheet

for (let r = 0; r < rows; r++) {
throwIfAborted(signal);
for (let c = 0; c < cols; c++) {

@@ -41,3 +44,3 @@ const row = parsed.start.row + r;

if (serialized) {
cell.styles = serialized;
cell.style = serialized;
}

@@ -56,4 +59,4 @@ }

});
});
}, { signal });
}
//# sourceMappingURL=get.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}

@@ -1,2 +0,4 @@

export declare function info(filePath: string): Promise<void>;
export declare function info(filePath: string, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=info.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C1D"}
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAKA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAiDf"}
import { cellToA1 } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { ok } from "../output.js";
export async function info(filePath) {
export async function info(filePath, options) {
const signal = options?.signal;
await withFile(filePath, ({ workbook, GC }) => {

@@ -10,2 +12,3 @@ const sheetCount = workbook.getSheetCount();

for (let i = 0; i < sheetCount; i++) {
throwIfAborted(signal);
const sheet = workbook.getSheet(i);

@@ -33,4 +36,4 @@ let usedRange = null;

ok({ sheets });
});
}, { signal });
}
//# sourceMappingURL=info.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,QAAgB;IACzC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACnD,MAAM,MAAM,GAKN,EAAE,CAAC;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAC9B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI;oBACjC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CACzC,CAAC;gBACF,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAC9B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAC/B,CAAC;oBACF,SAAS,GAAG,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,SAAS;gBACT,MAAM,EAAE,CAAC,KAAK,WAAW;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/cli/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,QAAgB,EAChB,OAAyC;IAEzC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE;QACnB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACnD,MAAM,MAAM,GAKN,EAAE,CAAC;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,SAAS,GAAkB,IAAI,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAC9B,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI;oBACjC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CACzC,CAAC;gBACF,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,MAAM,KAAK,GAAG,QAAQ,CACpB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAC9B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAC/B,CAAC;oBACF,SAAS,GAAG,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBAClB,SAAS;gBACT,MAAM,EAAE,CAAC,KAAK,WAAW;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACjB,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC"}

@@ -1,2 +0,4 @@

export declare function objects(filePath: string, sheetFilter?: string): Promise<void>;
export declare function objects(filePath: string, sheetFilter?: string, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=objects.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAqEf"}
{"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AAUA,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAwEf"}

@@ -0,7 +1,10 @@

import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { ok } from "../output.js";
export async function objects(filePath, sheetFilter) {
export async function objects(filePath, sheetFilter, options) {
const signal = options?.signal;
await withFile(filePath, ({ workbook }) => {
const result = [];
for (let i = 0; i < workbook.getSheetCount(); i++) {
throwIfAborted(signal);
const sheet = workbook.getSheet(i);

@@ -11,3 +14,2 @@ const sheetName = sheet.name();

continue;
// Charts
try {

@@ -26,3 +28,2 @@ const charts = sheet.charts?.all?.() ?? [];

}
// Tables
try {

@@ -41,3 +42,2 @@ const tables = sheet.tables?.all?.() ?? [];

}
// Pivot tables
try {

@@ -56,3 +56,2 @@ const pivots = sheet.pivotTables?.all?.() ?? [];

}
// Slicers
try {

@@ -73,4 +72,4 @@ const slicers = sheet.slicers?.all?.() ?? [];

ok({ objects: result });
});
}, { signal });
}
//# sourceMappingURL=objects.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,WAAoB;IAEpB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW;gBAAE,SAAS;YAEvD,SAAS;YACT,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,SAAS;YACT,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;YAED,eAAe;YACf,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YAED,UAAU;YACV,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;QAED,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
{"version":3,"file":"objects.js","sourceRoot":"","sources":["../../../src/cli/commands/objects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQlC,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,WAAoB,EACpB,OAAyC;IAEzC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAE/B,IAAI,WAAW,IAAI,SAAS,KAAK,WAAW;gBAAE,SAAS;YAEvD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8BAA8B;YAChC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;QACH,CAAC;QAED,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1B,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC"}

@@ -6,3 +6,4 @@ export declare function resize(filePath: string, sheetName: string | undefined, options: {

height?: number;
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=resize.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resize.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACA,OAAO,CAAC,IAAI,CAAC,CAoDf"}
{"version":3,"file":"resize.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/resize.ts"],"names":[],"mappings":"AAuCA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CA+Df"}
import { colToIndex } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
const USED_RANGE_TYPE_DATA_FORMULA = 16 | 32;
function parseColumnSpan(ref) {
const trimmed = ref.trim();
const match = trimmed.match(/^([A-Za-z]+)(?::([A-Za-z]+))?$/);
if (!match) {
fail(`Invalid --columns reference: ${ref}`);
}
const start = colToIndex(match[1]);
const end = match[2] ? colToIndex(match[2]) : start;
if (start < 0 || end < 0 || end < start) {
fail(`Invalid --columns reference: ${ref}`);
}
return { start, end };
}
function parseRowSpan(ref) {
const trimmed = ref.trim();
const match = trimmed.match(/^(\d+)(?::(\d+))?$/);
if (!match) {
fail(`Invalid --rows reference: ${ref}`);
}
const start = Number.parseInt(match[1], 10) - 1;
const end = match[2] ? Number.parseInt(match[2], 10) - 1 : start;
if (start < 0 || end < 0 || end < start) {
fail(`Invalid --rows reference: ${ref}`);
}
return { start, end };
}
export async function resize(filePath, sheetName, options) {

@@ -8,3 +36,4 @@ if (!options.width && !options.height) {

}
await withFile(filePath, ({ workbook }) => {
const signal = options.signal;
await withFile(filePath, ({ file, workbook }) => {
const sheet = sheetName

@@ -15,39 +44,48 @@ ? workbook.getSheetFromName(sheetName)

fail(`Sheet not found: ${sheetName ?? "(active)"}`);
if (options.width !== undefined) {
if (options.columns) {
const [startStr, endStr] = options.columns.split(":");
const startCol = colToIndex(startStr);
const endCol = endStr ? colToIndex(endStr) : startCol;
for (let c = startCol; c <= endCol; c++) {
sheet.setColumnWidth(c, options.width);
file.batch(() => {
let usedRange = null;
if (!options.columns || !options.rows) {
try {
usedRange = sheet.getUsedRange(USED_RANGE_TYPE_DATA_FORMULA);
}
}
else {
// All columns
const colCount = sheet.getColumnCount();
for (let c = 0; c < colCount; c++) {
sheet.setColumnWidth(c, options.width);
catch {
usedRange = null;
}
}
}
if (options.height !== undefined) {
if (options.rows) {
const [startStr, endStr] = options.rows.split(":");
const startRow = parseInt(startStr, 10) - 1;
const endRow = endStr ? parseInt(endStr, 10) - 1 : startRow;
for (let r = startRow; r <= endRow; r++) {
sheet.setRowHeight(r, options.height);
if (options.width !== undefined) {
if (options.columns) {
const span = parseColumnSpan(options.columns);
for (let c = span.start; c <= span.end; c++) {
throwIfAborted(signal);
sheet.setColumnWidth(c, options.width);
}
}
else if (usedRange && usedRange.colCount > 0) {
const endCol = usedRange.col + usedRange.colCount;
for (let c = usedRange.col; c < endCol; c++) {
throwIfAborted(signal);
sheet.setColumnWidth(c, options.width);
}
}
}
else {
// All rows
const rowCount = sheet.getRowCount();
for (let r = 0; r < rowCount; r++) {
sheet.setRowHeight(r, options.height);
if (options.height !== undefined) {
if (options.rows) {
const span = parseRowSpan(options.rows);
for (let r = span.start; r <= span.end; r++) {
throwIfAborted(signal);
sheet.setRowHeight(r, options.height);
}
}
else if (usedRange && usedRange.rowCount > 0) {
const endRow = usedRange.row + usedRange.rowCount;
for (let r = usedRange.row; r < endRow; r++) {
throwIfAborted(signal);
sheet.setRowHeight(r, options.height);
}
}
}
}
});
ok({ resized: true });
}, { save: true });
}, { save: true, signal });
}
//# sourceMappingURL=resize.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/cli/commands/resize.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"resize.js","sourceRoot":"","sources":["../../../src/cli/commands/resize.ts"],"names":[],"mappings":"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"}

@@ -7,3 +7,4 @@ export type RcOp = "insert" | "delete" | "hide" | "unhide" | "freeze" | "unfreeze";

count?: number;
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=rows-cols.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"rows-cols.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rows-cols.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GACZ,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AACf,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,IAAI,EACR,GAAG,EAAE,KAAK,EACV,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAgFf"}
{"version":3,"file":"rows-cols.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/rows-cols.ts"],"names":[],"mappings":"AA4CA,MAAM,MAAM,IAAI,GACZ,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,UAAU,CAAC;AACf,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,IAAI,EACR,GAAG,EAAE,KAAK,EACV,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CA2Gf"}
import { colToIndex } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
function splitQualifiedRef(ref) {
const quotedMatch = ref.match(/^'([^']+)'!(.+)$/);
if (quotedMatch) {
return { sheet: quotedMatch[1], localRef: quotedMatch[2] };
}
const bangIndex = ref.indexOf("!");
if (bangIndex === -1) {
return { localRef: ref };
}
return {
sheet: ref.slice(0, bangIndex),
localRef: ref.slice(bangIndex + 1),
};
}
function parseRowRef(ref) {
if (!/^\d+$/.test(ref)) {
fail(`Invalid row reference: ${ref}`);
}
const parsed = Number.parseInt(ref, 10);
if (!Number.isFinite(parsed) || parsed <= 0) {
fail(`Invalid row reference: ${ref}`);
}
return parsed;
}
function parseColumnRef(ref) {
if (!/^[A-Za-z]+$/.test(ref)) {
fail(`Invalid column reference: ${ref}`);
}
const index = colToIndex(ref);
if (!Number.isFinite(index) || index < 0) {
fail(`Invalid column reference: ${ref}`);
}
return index;
}
export async function rowsCols(filePath, op, dim, options) {
await withFile(filePath, ({ workbook }) => {
const sheet = options.sheet
? workbook.getSheetFromName(options.sheet)
const signal = options.signal;
await withFile(filePath, ({ file, workbook }) => {
const qualified = options.ref ? splitQualifiedRef(options.ref) : null;
if (options.sheet &&
qualified?.sheet &&
options.sheet !== qualified.sheet) {
fail(`Sheet mismatch: --sheet ${options.sheet} does not match ref sheet ${qualified.sheet}`);
}
const effectiveSheetName = options.sheet ?? qualified?.sheet;
const sheet = effectiveSheetName
? workbook.getSheetFromName(effectiveSheetName)
: workbook.getActiveSheet();
if (!sheet)
fail(`Sheet not found: ${options.sheet ?? "(active)"}`);
fail(`Sheet not found: ${effectiveSheetName ?? "(active)"}`);
if (op === "unfreeze") {
sheet.frozenRowCount(0);
sheet.frozenColumnCount(0);
file.batch(() => {
sheet.frozenRowCount(0);
sheet.frozenColumnCount(0);
});
ok({ operation: "unfreeze" });

@@ -20,8 +65,11 @@ return;

fail("freeze requires --ref (e.g. --ref 2 for rows or --ref C for columns)");
if (dim === "rows") {
sheet.frozenRowCount(parseInt(options.ref, 10));
}
else {
sheet.frozenColumnCount(colToIndex(options.ref) + 1);
}
const ref = qualified?.localRef ?? options.ref;
file.batch(() => {
if (dim === "rows") {
sheet.frozenRowCount(parseRowRef(ref));
}
else {
sheet.frozenColumnCount(parseColumnRef(ref) + 1);
}
});
ok({ operation: "freeze", dimension: dim, ref: options.ref });

@@ -33,47 +81,55 @@ return;

const count = options.count ?? 1;
if (!Number.isInteger(count) || count <= 0) {
fail(`Invalid --count value: ${options.count}`);
}
const localRef = qualified?.localRef ?? options.ref;
const isRow = dim === "rows";
const index = isRow
? parseInt(options.ref, 10) - 1
: colToIndex(options.ref);
switch (op) {
case "insert":
if (isRow) {
sheet.addRows(index, count);
}
else {
sheet.addColumns(index, count);
}
break;
case "delete":
if (isRow) {
sheet.deleteRows(index, count);
}
else {
sheet.deleteColumns(index, count);
}
break;
case "hide":
for (let i = 0; i < count; i++) {
? parseRowRef(localRef) - 1
: parseColumnRef(localRef);
file.batch(() => {
switch (op) {
case "insert":
if (isRow) {
sheet.setRowVisible(index + i, false);
sheet.addRows(index, count);
}
else {
sheet.setColumnVisible(index + i, false);
sheet.addColumns(index, count);
}
}
break;
case "unhide":
for (let i = 0; i < count; i++) {
break;
case "delete":
if (isRow) {
sheet.setRowVisible(index + i, true);
sheet.deleteRows(index, count);
}
else {
sheet.setColumnVisible(index + i, true);
sheet.deleteColumns(index, count);
}
}
break;
}
break;
case "hide":
for (let i = 0; i < count; i++) {
throwIfAborted(signal);
if (isRow) {
sheet.setRowVisible(index + i, false);
}
else {
sheet.setColumnVisible(index + i, false);
}
}
break;
case "unhide":
for (let i = 0; i < count; i++) {
throwIfAborted(signal);
if (isRow) {
sheet.setRowVisible(index + i, true);
}
else {
sheet.setColumnVisible(index + i, true);
}
}
break;
}
});
ok({ operation: op, dimension: dim, ref: options.ref, count });
}, { save: true });
}, { save: true, signal });
}
//# sourceMappingURL=rows-cols.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"rows-cols.js","sourceRoot":"","sources":["../../../src/cli/commands/rows-cols.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"rows-cols.js","sourceRoot":"","sources":["../../../src/cli/commands/rows-cols.ts"],"names":[],"mappings":"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"}

@@ -6,3 +6,4 @@ export declare function search(filePath: string, term: string, options: {

maxResults?: number;
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=search.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAWA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAoEf"}
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAYA,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CAgFf"}
import { cellToA1 } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { ok } from "../output.js";
export async function search(filePath, term, options) {
const signal = options.signal;
await withFile(filePath, ({ workbook }) => {

@@ -13,2 +15,3 @@ const matches = [];

for (let si = 0; si < sheetCount && matches.length < max; si++) {
throwIfAborted(signal);
const ws = workbook.getSheet(si);

@@ -18,9 +21,13 @@ const sheetName = ws.name();

continue;
let usedRows = 0;
let usedCols = 0;
let startRow = 0;
let endRow = 0;
let startCol = 0;
let endCol = 0;
try {
const range = ws.getUsedRange(16 | 32); // data | formula
if (range && range.rowCount > 0) {
usedRows = range.row + range.rowCount;
usedCols = range.col + range.colCount;
if (range && range.rowCount > 0 && range.colCount > 0) {
startRow = range.row;
endRow = range.row + range.rowCount;
startCol = range.col;
endCol = range.col + range.colCount;
}

@@ -31,4 +38,5 @@ }

}
for (let r = 0; r < usedRows && matches.length < max; r++) {
for (let c = 0; c < usedCols && matches.length < max; c++) {
for (let r = startRow; r < endRow && matches.length < max; r++) {
throwIfAborted(signal);
for (let c = startCol; c < endCol && matches.length < max; c++) {
const value = ws.getValue(r, c);

@@ -68,4 +76,4 @@ const formula = ws.getFormula(r, c);

});
});
}, { signal });
}
//# sourceMappingURL=search.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,IAAY,EACZ,OAKC;IAED,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;YAC3B,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAE5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/D,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,KAAK,OAAO,CAAC,KAAK;gBAAE,SAAS;YAE3D,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB;gBACzD,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAChC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;oBACtC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACxC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC1D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC1C,IAAI,CAAC,OAAO;4BAAE,SAAS;oBACzB,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjC,IAAI,OAAO,GAAG,KAAK,CAAC;oBAEpB,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;yBAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;wBAC7B,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAED,IAAI,CAAC,OAAO;wBAAE,SAAS;oBAEvB,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;wBACpB,KAAK;wBACL,OAAO,EAAE,OAAO,IAAI,IAAI;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,EAAE,CAAC;YACD,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;YAC9B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AASlC,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,IAAY,EACZ,OAMC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE9B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;YAC3B,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QAE5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/D,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,KAAK,OAAO,CAAC,KAAK;gBAAE,SAAS;YAE3D,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB;gBACzD,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACtD,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;oBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;oBACpC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;oBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACtC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/D,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC1C,IAAI,CAAC,OAAO;4BAAE,SAAS;oBACzB,CAAC;oBAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjC,IAAI,OAAO,GAAG,KAAK,CAAC;oBAEpB,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC/B,CAAC;yBAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;wBAC7B,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBAED,IAAI,CAAC,OAAO;wBAAE,SAAS;oBAEvB,OAAO,CAAC,IAAI,CAAC;wBACX,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;wBACpB,KAAK;wBACL,OAAO,EAAE,OAAO,IAAI,IAAI;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,EAAE,CAAC;YACD,OAAO;YACP,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG;YAC9B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC"}

@@ -1,2 +0,4 @@

export declare function set(filePath: string, ref: string, jsonArg: string | undefined): Promise<void>;
export declare function set(filePath: string, ref: string, jsonArg: string | undefined, options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=set.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAWA,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAyBA,wBAAsB,GAAG,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CA0Hf"}

@@ -1,6 +0,19 @@

import { parseRef, rangeDimensions } from "../a1.js";
import { cellToA1, parseRef, rangeDimensions } from "../a1.js";
import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok, readInput } from "../output.js";
import { ok, readInput } from "../output.js";
import { applyStyles } from "../styles.js";
export async function set(filePath, ref, jsonArg) {
function formatRange(ref) {
const start = cellToA1(ref.start.row, ref.start.col);
const end = cellToA1(ref.end.row, ref.end.col);
const base = start === end ? start : `${start}:${end}`;
if (!ref.sheet)
return base;
const safeSheet = /^[A-Za-z0-9_]+$/.test(ref.sheet)
? ref.sheet
: `'${ref.sheet.replace(/'/g, "''")}'`;
return `${safeSheet}!${base}`;
}
export async function set(filePath, ref, jsonArg, options) {
const signal = options?.signal;
const input = await readInput(jsonArg);

@@ -12,27 +25,54 @@ let cells;

catch {
fail("Invalid JSON input for cells.");
return;
throw new Error("Invalid JSON input for cells.");
}
if (!Array.isArray(cells) || !Array.isArray(cells[0])) {
fail("Cells must be a 2D array: [[{value: ...}, ...], ...]");
return;
throw new Error("Cells must be a 2D array: [[{value: ...}, ...], ...]");
}
const parsed = parseRef(ref);
const { rows, cols } = rangeDimensions(parsed);
if (cells.length !== rows) {
fail(`Row count mismatch: range has ${rows} rows but got ${cells.length} rows.`);
return;
const target = {
sheet: parsed.sheet,
start: { ...parsed.start },
end: { ...parsed.end },
};
const { rows: originalRows, cols: originalCols } = rangeDimensions(parsed);
const isSingleCellRef = originalRows === 1 && originalCols === 1;
const dataRows = cells.length;
const dataCols = cells[0].length;
for (let r = 0; r < dataRows; r++) {
throwIfAborted(signal);
if (!Array.isArray(cells[r])) {
throw new Error(`Row ${r} is not an array.`);
}
if (cells[r].length !== dataCols) {
throw new Error(`Column count mismatch in row ${r}: expected ${dataCols} cols but got ${cells[r].length} cols.`);
}
}
for (let r = 0; r < cells.length; r++) {
if (cells[r].length !== cols) {
fail(`Column count mismatch in row ${r}: range has ${cols} cols but got ${cells[r].length} cols.`);
return;
const messages = [];
if (isSingleCellRef) {
target.end.row = target.start.row + dataRows - 1;
target.end.col = target.start.col + dataCols - 1;
const rowDiff = dataRows - originalRows;
const colDiff = dataCols - originalCols;
if (rowDiff !== 0 || colDiff !== 0) {
messages.push(`Adjusted range from ${formatRange(parsed)} to ${formatRange(target)} (row diff: ${rowDiff}, col diff: ${colDiff})`);
}
}
else {
if (dataRows !== originalRows) {
throw new Error(`Row count mismatch: range has ${originalRows} rows but got ${dataRows} rows.`);
}
for (let r = 0; r < dataRows; r++) {
throwIfAborted(signal);
if (cells[r].length !== originalCols) {
throw new Error(`Column count mismatch in row ${r}: range has ${originalCols} cols but got ${cells[r].length} cols.`);
}
}
}
const { rows, cols } = rangeDimensions(target);
await withFile(filePath, ({ file, workbook, GC }) => {
const sheet = parsed.sheet
? workbook.getSheetFromName(parsed.sheet)
const sheet = target.sheet
? workbook.getSheetFromName(target.sheet)
: workbook.getActiveSheet();
if (!sheet) {
fail(`Sheet not found: ${parsed.sheet ?? "(active)"}`);
throw new Error(`Sheet not found: ${target.sheet ?? "(active)"}`);
}

@@ -42,8 +82,9 @@ let written = 0;

for (let r = 0; r < rows; r++) {
throwIfAborted(signal);
for (let c = 0; c < cols; c++) {
const cell = cells[r][c];
const cell = cells[r]?.[c];
if (!cell)
continue;
const row = parsed.start.row + r;
const col = parsed.start.col + c;
const row = target.start.row + r;
const col = target.start.col + c;
if (cell.formula) {

@@ -57,7 +98,8 @@ const f = cell.formula.startsWith("=")

else if (cell.value !== undefined) {
sheet.setFormula(row, col, "");
sheet.setValue(row, col, cell.value);
written++;
}
if (cell.cellStyles) {
applyStyles(sheet, row, col, cell.cellStyles, GC);
if (cell.style) {
applyStyles(sheet, row, col, cell.style, GC);
}

@@ -67,5 +109,10 @@ }

});
ok({ written, range: ref });
}, { save: true });
ok({
success: true,
written,
range: formatRange(target),
messages,
});
}, { save: true, signal });
}
//# sourceMappingURL=set.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"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"}
export type SheetOp = "list" | "create" | "delete" | "rename";
export declare function sheet(filePath: string, op: SheetOp, args: string[]): Promise<void>;
export declare function sheet(filePath: string, op: SheetOp, args: string[], options?: {
signal?: AbortSignal | null;
}): Promise<void>;
//# sourceMappingURL=sheet.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sheet.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAwDf"}
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sheet.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9D,wBAAsB,KAAK,CACzB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAgEf"}

@@ -0,6 +1,8 @@

import { throwIfAborted } from "../abort.js";
import { withFile } from "../context.js";
import { fail, ok } from "../output.js";
export async function sheet(filePath, op, args) {
export async function sheet(filePath, op, args, options) {
const needsSave = op !== "list";
await withFile(filePath, ({ workbook, GC }) => {
const signal = options?.signal;
await withFile(filePath, ({ file, workbook, GC }) => {
switch (op) {

@@ -10,2 +12,3 @@ case "list": {

for (let i = 0; i < workbook.getSheetCount(); i++) {
throwIfAborted(signal);
sheets.push({ index: i, name: workbook.getSheet(i).name() });

@@ -20,4 +23,6 @@ }

fail("Usage: hsx sheet <file> create <name>");
const ws = new GC.Spread.Sheets.Worksheet(name);
workbook.addSheet(workbook.getSheetCount(), ws);
file.batch(() => {
const ws = new GC.Spread.Sheets.Worksheet(name);
workbook.addSheet(workbook.getSheetCount(), ws);
});
ok({ created: name, index: workbook.getSheetCount() - 1 });

@@ -30,3 +35,3 @@ break;

fail("Usage: hsx sheet <file> delete <name>");
const index = findSheet(workbook, name);
const index = findSheet(workbook, name, signal);
if (index === -1)

@@ -37,3 +42,5 @@ fail(`Sheet not found: ${name}`);

}
workbook.removeSheet(index);
file.batch(() => {
workbook.removeSheet(index);
});
ok({ deleted: name });

@@ -47,6 +54,8 @@ break;

}
const index = findSheet(workbook, oldName);
const index = findSheet(workbook, oldName, signal);
if (index === -1)
fail(`Sheet not found: ${oldName}`);
workbook.getSheet(index).name(newName);
file.batch(() => {
workbook.getSheet(index).name(newName);
});
ok({ renamed: { from: oldName, to: newName } });

@@ -58,6 +67,7 @@ break;

}
}, { save: needsSave });
}, { save: needsSave, signal });
}
function findSheet(workbook, name) {
function findSheet(workbook, name, signal) {
for (let i = 0; i < workbook.getSheetCount(); i++) {
throwIfAborted(signal);
if (workbook.getSheet(i).name() === name)

@@ -64,0 +74,0 @@ return i;

@@ -1,1 +0,1 @@

{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../src/cli/commands/sheet.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../src/cli/commands/sheet.ts"],"names":[],"mappings":"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"}

@@ -1,6 +0,4 @@

/**
* Lifecycle wrapper: init → open/create → execute → save → dispose.
*/
import { type ExcelFile } from "../index.js";
import type { GCNamespace, SpreadWorkbook } from "../types.js";
import type { FileCache } from "./file-cache.js";
export interface FileContext {

@@ -11,6 +9,20 @@ file: ExcelFile;

}
export declare function withFile<T>(filePath: string, fn: (ctx: FileContext) => T | Promise<T>, options?: {
interface DaemonRuntime {
GC: GCNamespace;
ExcelFile: typeof ExcelFile;
fileCache: FileCache;
cwd: string;
writeThrough: boolean;
}
interface FileOptions {
save?: boolean;
}): Promise<T>;
export declare function withNewFile<T>(filePath: string, fn?: (ctx: FileContext) => T | Promise<T>): Promise<T | undefined>;
signal?: AbortSignal | null;
}
export declare function runWithDaemonRuntime<T>(runtime: DaemonRuntime, fn: () => T | Promise<T>): T | Promise<T>;
export declare function getDaemonRuntime(): DaemonRuntime | null;
export declare function withFile<T>(filePath: string, fn: (ctx: FileContext) => T | Promise<T>, options?: FileOptions): Promise<T>;
export declare function withNewFile<T>(filePath: string, fn?: (ctx: FileContext) => T | Promise<T>, options?: {
signal?: AbortSignal | null;
}): Promise<T | undefined>;
export {};
//# sourceMappingURL=context.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,EAAE,EAAE,WAAW,CAAC;CACjB;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,CAAC,CAAC,CAYZ;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAaxB"}
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,cAAc,CAAC;IACzB,EAAE,EAAE,WAAW,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,WAAW,CAAC;IAChB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAID,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,OAAO,EAAE,aAAa,EACtB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB;AAED,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxC,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AA0DD,wBAAsB,WAAW,CAAC,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAsBxB"}

@@ -1,11 +0,27 @@

/**
* Lifecycle wrapper: init → open/create → execute → save → dispose.
*/
import { AsyncLocalStorage } from "node:async_hooks";
import { resolve } from "node:path";
import { init } from "../index.js";
import { throwIfAborted } from "./abort.js";
const runtimeStore = new AsyncLocalStorage();
export function runWithDaemonRuntime(runtime, fn) {
return runtimeStore.run(runtime, fn);
}
export function getDaemonRuntime() {
return runtimeStore.getStore() ?? null;
}
export async function withFile(filePath, fn, options) {
const signal = options?.signal;
throwIfAborted(signal);
const daemonRuntime = runtimeStore.getStore();
if (daemonRuntime) {
return withFileDaemon(daemonRuntime, filePath, fn, options);
}
const { GC, ExcelFile: EF, dispose } = await init();
try {
throwIfAborted(signal);
const file = await EF.open(filePath);
throwIfAborted(signal);
const result = await fn({ file, workbook: file.workbook, GC });
if (options?.save) {
throwIfAborted(signal);
await file.save(filePath);

@@ -19,10 +35,64 @@ }

}
export async function withNewFile(filePath, fn) {
async function withFileDaemon(rt, filePath, fn, options) {
const signal = options?.signal;
throwIfAborted(signal);
const absPath = resolve(rt.cwd, filePath);
let cached = await rt.fileCache.get(filePath, rt.cwd);
if (!cached) {
throwIfAborted(signal);
const file = await rt.ExcelFile.open(absPath);
throwIfAborted(signal);
await rt.fileCache.put(filePath, rt.cwd, file);
cached = { file, absPath };
}
const wasDirty = rt.fileCache.isDirty(filePath, rt.cwd);
let result;
try {
throwIfAborted(signal);
result = await fn({
file: cached.file,
workbook: cached.file.workbook,
GC: rt.GC,
});
}
catch (err) {
if (!wasDirty) {
rt.fileCache.invalidate(filePath, rt.cwd);
}
throw err;
}
if (options?.save) {
throwIfAborted(signal);
if (rt.writeThrough) {
try {
await cached.file.save(cached.absPath);
throwIfAborted(signal);
await rt.fileCache.updateMtime(filePath, rt.cwd);
}
catch (err) {
rt.fileCache.invalidate(filePath, rt.cwd);
throw err;
}
}
else {
rt.fileCache.markDirty(filePath, rt.cwd);
}
}
return result;
}
export async function withNewFile(filePath, fn, options) {
const signal = options?.signal;
throwIfAborted(signal);
const daemonRuntime = runtimeStore.getStore();
if (daemonRuntime) {
return withNewFileDaemon(daemonRuntime, filePath, fn, options);
}
const { GC, ExcelFile: EF, dispose } = await init();
try {
throwIfAborted(signal);
const file = new EF();
let result;
if (fn) {
result = await fn({ file, workbook: file.workbook, GC });
}
const result = fn
? await fn({ file, workbook: file.workbook, GC })
: undefined;
throwIfAborted(signal);
await file.save(filePath);

@@ -35,2 +105,17 @@ return result;

}
async function withNewFileDaemon(rt, filePath, fn, options) {
const signal = options?.signal;
throwIfAborted(signal);
const absPath = resolve(rt.cwd, filePath);
const file = new rt.ExcelFile();
const result = fn
? await fn({ file, workbook: file.workbook, GC: rt.GC })
: undefined;
throwIfAborted(signal);
await file.save(absPath);
throwIfAborted(signal);
await rt.fileCache.put(filePath, rt.cwd, file);
await rt.fileCache.updateMtime(filePath, rt.cwd);
return result;
}
//# sourceMappingURL=context.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,EAAwC,EACxC,OAA4B;IAE5B,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,EAAyC;IAEzC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;QACtB,IAAI,MAAqB,CAAC;QAC1B,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,MAAW,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"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"}

@@ -23,5 +23,16 @@ #!/usr/bin/env node

function reportFatalError(reason) {
const err = reason;
if (err?.code === "EPIPE") {
process.exit(0);
}
process.stderr.write(`${JSON.stringify({ error: toErrorMessage(reason) })}\n`);
process.exit(1);
}
function handlePipeError(err) {
if (err.code === "EPIPE") {
process.exit(0);
}
}
process.stdout.on("error", handlePipeError);
process.stderr.on("error", handlePipeError);
process.on("uncaughtException", reportFatalError);

@@ -28,0 +39,0 @@ process.on("unhandledRejection", reportFatalError);

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,kCAAkC,GACtC,mFAAmF,CAAC;AAEtF,SAAS,cAAc,CAAC,MAAe;IACrC,MAAM,OAAO,GACX,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,mCAAmC,GACvC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE9B,IACE,mCAAmC;QACnC,OAAO,CAAC,MAAM,GAAG,wBAAwB,EACzC,CAAC;QACD,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CACzD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAClD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAEnD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3C,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,kCAAkC,GACtC,mFAAmF,CAAC;AAEtF,SAAS,cAAc,CAAC,MAAe;IACrC,MAAM,OAAO,GACX,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,mCAAmC,GACvC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAE9B,IACE,mCAAmC;QACnC,OAAO,CAAC,MAAM,GAAG,wBAAwB,EACzC,CAAC;QACD,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QAC9C,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,GAAG,GAAG,MAA+B,CAAC;IAC5C,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CACzD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,GAA0B;IACjD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAE5C,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAClD,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAEnD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3C,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAoDA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAgJ1C"}
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AA8IA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoI1C"}
import { createRequire } from "node:module";
import { clear } from "./commands/clear.js";
import { copy } from "./commands/copy.js";
import { create } from "./commands/create.js";
import { csv } from "./commands/csv.js";
import { evalCode } from "./commands/eval.js";
import { get } from "./commands/get.js";
import { info } from "./commands/info.js";
import { objects } from "./commands/objects.js";
import { resize } from "./commands/resize.js";
import { rowsCols } from "./commands/rows-cols.js";
import { search } from "./commands/search.js";
import { set } from "./commands/set.js";
import { sheet } from "./commands/sheet.js";
const USAGE = `Usage: hsx <command> [args]
Commands:
create <file> Create a new Excel file
info <file> Show workbook metadata
get <file> <ref> Read cells (Sheet1!A1:C10)
csv <file> <ref> Read range as CSV
set <file> <ref> [json] Write cells (JSON from arg or stdin)
clear <file> <ref> [--type all|styles] Clear a range (default: values only)
search <file> <term> [--sheet S] [--regex] Search for values across sheets
copy <file> <src> <dst> Copy range (formulas + styles)
sheet <file> <op> [args] list | create | delete | rename
rc <file> <op> <dim> [--ref R] [--count N] Insert/delete/hide/freeze rows or columns
resize <file> [--columns A:D] [--width N] Resize column widths or row heights
objects <file> [--sheet <name>] List charts, tables, pivots
eval <file> [code] Execute arbitrary JS (code from arg or stdin)
Reference format:
Sheet1!A1:C10 range on named sheet
A1:C10 range on active sheet
A1 single cell
Globals available in eval:
workbook SpreadJS Workbook instance
sheet Active worksheet
GC GC.Spread.Sheets namespace
file ExcelFile wrapper (batch, save, toJSON)`;
function flag(args, name) {
const idx = args.indexOf(name);
return idx !== -1 ? args[idx + 1] : undefined;
}
import { registerSignalTimeout } from "./abort.js";
import { spawnDaemon, tryDaemon, tryExistingDaemon } from "./client.js";
import { dispatch, USAGE } from "./dispatch.js";
import { createIoContext, runWithIo } from "./output.js";
const DEFAULT_TIMEOUT_MS = 30_000;
function hasFlag(args, name) {
return args.includes(name);
}
function parseTimeoutValue(raw) {
const value = raw.trim();
if (!/^\d+(\.\d+)?$/.test(value)) {
throw new Error("Invalid --timeout value (expected seconds)");
}
const seconds = Number.parseFloat(value);
if (!Number.isFinite(seconds) || seconds <= 0) {
throw new Error("Invalid --timeout value (expected seconds)");
}
return Math.floor(seconds * 1000);
}
function parseGlobalOptions(args) {
const out = [];
let timeoutMs = DEFAULT_TIMEOUT_MS;
for (let i = 0; i < args.length; i++) {
const arg = args[i];
if (arg === "--timeout") {
const raw = args[i + 1];
if (!raw || raw.startsWith("--")) {
throw new Error("Usage: --timeout <seconds>");
}
timeoutMs = parseTimeoutValue(raw);
i++;
continue;
}
if (arg.startsWith("--timeout=")) {
timeoutMs = parseTimeoutValue(arg.slice("--timeout=".length));
continue;
}
out.push(arg);
}
return { args: out, timeoutMs };
}
async function runWithTimeout(fn, timeoutMs) {
const controller = new AbortController();
registerSignalTimeout(controller.signal, timeoutMs, `Command timed out after ${Math.ceil(timeoutMs / 1000)}s`);
let timer = null;
try {
return await Promise.race([
fn(controller.signal),
new Promise((_, reject) => {
timer = setTimeout(() => {
const message = `Command timed out after ${Math.ceil(timeoutMs / 1000)}s`;
controller.abort(new Error(message));
reject(new Error(message));
}, timeoutMs);
}),
]);
}
finally {
if (timer)
clearTimeout(timer);
}
}
async function writeTo(stream, data) {
await new Promise((resolve, reject) => {
let settled = false;
const finish = (err) => {
if (settled)
return;
settled = true;
stream.off("error", onError);
if (err?.code === "EPIPE" ||
err?.message?.toUpperCase().includes("EPIPE")) {
resolve();
return;
}
if (err) {
reject(err);
return;
}
resolve();
};
const onError = (err) => finish(err);
stream.once("error", onError);
try {
stream.write(data, (err) => {
finish(err ?? null);
});
}
catch (err) {
finish(err);
}
});
}
async function flushStdStreams() {
await Promise.all([writeTo(process.stdout, ""), writeTo(process.stderr, "")]);
}
async function exitWith(code, output) {
if (output?.stdout) {
await writeTo(process.stdout, output.stdout);
}
if (output?.stderr) {
await writeTo(process.stderr, output.stderr);
}
await flushStdStreams();
process.exit(code);
}
export async function main() {
const args = process.argv.slice(2);
let args;
let timeoutMs;
try {
const parsed = parseGlobalOptions(process.argv.slice(2));
args = parsed.args;
timeoutMs = parsed.timeoutMs;
}
catch (err) {
const message = err instanceof Error ? err.message : String(err);
return exitWith(1, { stderr: `${JSON.stringify({ error: message })}\n` });
}
if (args.length === 0 || args[0] === "--help" || args[0] === "-h") {
console.log(USAGE);
process.exit(0);
return exitWith(0, { stdout: `${USAGE}\n` });
}

@@ -58,125 +126,86 @@ if (args[0] === "--version" || args[0] === "-v") {

const { version } = require("../../package.json");
console.log(version);
process.exit(0);
return exitWith(0, { stdout: `${version}\n` });
}
const command = args[0];
const rest = args.slice(1);
switch (command) {
case "create": {
const file = requireArg(rest, 0, "create <file>");
await create(file);
break;
const noDaemon = hasFlag(args, "--no-daemon");
const filteredArgs = args.filter((a) => a !== "--no-daemon");
if (filteredArgs[0] === "daemon") {
const sub = filteredArgs[1];
if (sub === "start") {
try {
await spawnDaemon(timeoutMs);
return exitWith(0, {
stdout: `${JSON.stringify({ daemon: "started" })}\n`,
});
}
catch (err) {
const message = err instanceof Error ? err.message : String(err);
return exitWith(1, {
stderr: `${JSON.stringify({ error: message })}\n`,
});
}
}
case "info": {
const file = requireArg(rest, 0, "info <file>");
await info(file);
break;
}
case "get": {
const file = requireArg(rest, 0, "get <file> <ref>");
const ref = requireArg(rest, 1, "get <file> <ref>");
const styles = !hasFlag(rest, "--no-styles");
await get(file, ref, { styles });
break;
}
case "csv": {
const file = requireArg(rest, 0, "csv <file> <ref>");
const ref = requireArg(rest, 1, "csv <file> <ref>");
await csv(file, ref);
break;
}
case "set": {
const file = requireArg(rest, 0, "set <file> <ref> [json]");
const ref = requireArg(rest, 1, "set <file> <ref> [json]");
const json = rest[2]; // optional, reads stdin if missing
await set(file, ref, json);
break;
}
case "clear": {
const file = requireArg(rest, 0, "clear <file> <ref>");
const ref = requireArg(rest, 1, "clear <file> <ref>");
const clearType = (flag(rest, "--type") ?? "values");
await clear(file, ref, clearType);
break;
}
case "search": {
const file = requireArg(rest, 0, "search <file> <term>");
const term = requireArg(rest, 1, "search <file> <term>");
await search(file, term, {
sheet: flag(rest, "--sheet"),
matchCase: hasFlag(rest, "--match-case"),
regex: hasFlag(rest, "--regex"),
maxResults: flag(rest, "--max")
? parseInt(flag(rest, "--max"), 10)
: undefined,
if (sub === "stop" || sub === "status" || sub === "flush") {
const result = await tryExistingDaemon(filteredArgs, process.cwd(), undefined, timeoutMs);
if (result) {
return exitWith(result.exitCode, {
stdout: result.stdout,
stderr: result.stderr,
});
}
if (sub === "status") {
return exitWith(0, {
stdout: `${JSON.stringify({ running: false })}\n`,
});
}
return exitWith(1, {
stdout: `${JSON.stringify({ error: "No daemon running" })}\n`,
});
break;
}
case "copy": {
const file = requireArg(rest, 0, "copy <file> <src> <dst>");
const src = requireArg(rest, 1, "copy <file> <src> <dst>");
const dst = requireArg(rest, 2, "copy <file> <src> <dst>");
await copy(file, src, dst);
break;
return exitWith(1, {
stderr: "Usage: hsx daemon start|stop|status|flush\n",
});
}
if (!noDaemon) {
let stdin;
const command = filteredArgs[0];
const setJsonArg = filteredArgs[3];
const evalCodeArg = filteredArgs[2];
const needsStdin = (command === "set" && (!setJsonArg || setJsonArg === "-")) ||
(command === "eval" && (!evalCodeArg || evalCodeArg === "-"));
if (needsStdin && !process.stdin.isTTY) {
const chunks = [];
for await (const chunk of process.stdin) {
chunks.push(chunk);
}
stdin = Buffer.concat(chunks).toString("utf-8").trim();
}
case "sheet": {
const file = requireArg(rest, 0, "sheet <file> <op> [args]");
const op = requireArg(rest, 1, "sheet <file> <op> [args]");
const opArgs = rest.slice(2);
await sheet(file, op, opArgs);
break;
}
case "rc": {
const file = requireArg(rest, 0, "rc <file> <op> <dim>");
const op = requireArg(rest, 1, "rc <file> <op> <dim>");
const dim = requireArg(rest, 2, "rc <file> <op> <dim>");
await rowsCols(file, op, dim, {
sheet: flag(rest, "--sheet"),
ref: flag(rest, "--ref"),
count: flag(rest, "--count")
? parseInt(flag(rest, "--count"), 10)
: undefined,
const result = await tryDaemon(filteredArgs, process.cwd(), stdin, timeoutMs);
if (result) {
return exitWith(result.exitCode, {
stdout: result.stdout,
stderr: result.stderr,
});
break;
}
case "resize": {
const file = requireArg(rest, 0, "resize <file> [options]");
await resize(file, flag(rest, "--sheet"), {
columns: flag(rest, "--columns"),
rows: flag(rest, "--rows"),
width: flag(rest, "--width")
? parseFloat(flag(rest, "--width"))
: undefined,
height: flag(rest, "--height")
? parseFloat(flag(rest, "--height"))
: undefined,
});
break;
if (stdin !== undefined) {
const io = createIoContext(stdin);
try {
await runWithTimeout((signal) => Promise.resolve(runWithIo(io, () => dispatch(filteredArgs, { signal }))), timeoutMs);
}
catch (err) {
const message = err instanceof Error ? err.message : String(err);
io.stderr += `${JSON.stringify({ error: message })}\n`;
return exitWith(1, { stdout: io.stdout, stderr: io.stderr });
}
return exitWith(0, { stdout: io.stdout, stderr: io.stderr });
}
case "objects": {
const file = requireArg(rest, 0, "objects <file>");
await objects(file, flag(rest, "--sheet"));
break;
}
case "eval": {
const file = requireArg(rest, 0, "eval <file> [code]");
const code = rest[1]; // optional, reads stdin if missing
await evalCode(file, code);
break;
}
default:
console.error(`Unknown command: ${command}\n`);
console.log(USAGE);
process.exit(1);
}
process.exit(0);
}
function requireArg(args, index, usage) {
const value = args[index];
if (!value || value.startsWith("--")) {
console.error(`Usage: hsx ${usage}`);
process.exit(1);
try {
await runWithTimeout((signal) => dispatch(filteredArgs, { signal }), timeoutMs);
}
return value;
catch (err) {
const message = err instanceof Error ? err.message : String(err);
return exitWith(1, { stderr: `${JSON.stringify({ error: message })}\n` });
}
return exitWith(0);
}
//# sourceMappingURL=main.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}

@@ -1,10 +0,13 @@

/**
* Structured JSON output helpers for CLI commands.
*/
export interface IoContext {
stdout: string;
stderr: string;
stdin: string | null;
}
export declare function runWithIo<T>(io: IoContext, fn: () => T | Promise<T>): T | Promise<T>;
export declare function createIoContext(stdin?: string): IoContext;
export declare function writeStdout(data: string): void;
export declare function writeStderr(data: string): void;
export declare function ok(data: unknown): void;
export declare function fail(message: string): never;
/**
* Read input from last positional arg or stdin.
*/
export declare function readInput(argValue: string | undefined): Promise<string>;
//# sourceMappingURL=output.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE3C;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAe7E"}
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAID,wBAAgB,SAAS,CAAC,CAAC,EACzB,EAAE,EAAE,SAAS,EACb,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAEzD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAO9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAO9C;AAED,wBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE3C;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB7E"}

@@ -1,6 +0,29 @@

/**
* Structured JSON output helpers for CLI commands.
*/
import { AsyncLocalStorage } from "node:async_hooks";
const ioStore = new AsyncLocalStorage();
export function runWithIo(io, fn) {
return ioStore.run(io, fn);
}
export function createIoContext(stdin) {
return { stdout: "", stderr: "", stdin: stdin ?? null };
}
export function writeStdout(data) {
const io = ioStore.getStore();
if (io) {
io.stdout += data;
}
else {
process.stdout.write(data);
}
}
export function writeStderr(data) {
const io = ioStore.getStore();
if (io) {
io.stderr += data;
}
else {
process.stderr.write(data);
}
}
export function ok(data) {
process.stdout.write(`${JSON.stringify(data)}\n`);
writeStdout(`${JSON.stringify(data)}\n`);
}

@@ -10,5 +33,2 @@ export function fail(message) {

}
/**
* Read input from last positional arg or stdin.
*/
export async function readInput(argValue) {

@@ -18,3 +38,11 @@ if (argValue && argValue !== "-") {

}
// Read from stdin
const io = ioStore.getStore();
if (io?.stdin != null) {
const text = io.stdin;
io.stdin = null;
if (!text) {
fail("No input provided. Pass as argument or pipe via stdin.");
}
return text;
}
const chunks = [];

@@ -21,0 +49,0 @@ for await (const chunk of process.stdin) {

@@ -1,1 +0,1 @@

{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,EAAE,CAAC,IAAa;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAA4B;IAC1D,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAa,CAAC;AAEnD,MAAM,UAAU,SAAS,CACvB,EAAa,EACb,EAAwB;IAExB,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,IAAa;IAC9B,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAA4B;IAC1D,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC;QACtB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
/**
* Agent-friendly style schema ↔ SpreadJS Style conversion.
* SpreadJS-style cell style serialization and application for CLI I/O.
*/
import type { Spread } from "@mescius/spread-sheets";
import type { GCNamespace, SpreadStyle, SpreadWorksheet } from "../types.js";
export interface CellStyles {
fontWeight?: "normal" | "bold";
fontStyle?: "normal" | "italic";
fontSize?: number;
fontFamily?: string;
fontColor?: string;
backgroundColor?: string;
horizontalAlignment?: "left" | "center" | "right";
numberFormat?: string;
}
export interface SerializedStyle {
export interface FontStyleObject {
bold?: boolean;
italic?: boolean;
fontSize?: number;
underline?: boolean;
}
export interface CellStyle {
fontStyle?: FontStyleObject;
fontSize?: string;
fontFamily?: string;
fontColor?: string;
backgroundColor?: string;
hAlign?: string;
numberFormat?: string;
foreColor?: string;
backColor?: string;
hAlign?: Spread.Sheets.HorizontalAlign;
formatter?: string;
}
export declare function serializeStyle(style: SpreadStyle): SerializedStyle | null;
export declare function applyStyles(sheet: SpreadWorksheet, row: number, col: number, styles: CellStyles, GC: GCNamespace): void;
export declare function serializeStyle(style: SpreadStyle): CellStyle | null;
export declare function applyStyles(sheet: SpreadWorksheet, row: number, col: number, styles: CellStyle, GC: GCNamespace): void;
//# sourceMappingURL=styles.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/cli/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAeD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,CAkDzE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,EAAE,EAAE,WAAW,GACd,IAAI,CA2CN"}
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/cli/styles.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8CD,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAoDnE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,SAAS,EACjB,EAAE,EAAE,WAAW,GACd,IAAI,CAoDN"}
/**
* Agent-friendly style schema ↔ SpreadJS Style conversion.
* SpreadJS-style cell style serialization and application for CLI I/O.
*/
const H_ALIGN_NAMES = {
0: "left",
1: "center",
2: "right",
3: "general",
};
const H_ALIGN_GENERAL = 3;
// Default values to suppress from serialization

@@ -15,11 +10,42 @@ const DEFAULT_FONT_SIZE = 14.6667; // SpreadJS default ~11pt

const DEFAULT_FORE_COLORS = new Set(["Text 1 0", "windowtext", "#000000"]);
export function serializeStyle(style) {
function normalizeFontStyle(style) {
const result = {};
let hasAny = false;
const raw = style.fontStyle;
if (raw && typeof raw === "object") {
const maybe = raw;
if (maybe.bold === true)
result.bold = true;
if (maybe.italic === true)
result.italic = true;
if (maybe.underline === true)
result.underline = true;
}
if (style.fontWeight === "bold") {
result.bold = true;
hasAny = true;
}
if (style.fontStyle === "italic") {
result.italic = true;
}
const textDecoration = style
.textDecoration;
if (textDecoration !== undefined && textDecoration !== null) {
if (typeof textDecoration === "number") {
if (textDecoration !== 0) {
result.underline = true;
}
}
else if (typeof textDecoration === "string") {
if (textDecoration !== "none" && textDecoration !== "None") {
result.underline = true;
}
}
}
return Object.keys(result).length > 0 ? result : undefined;
}
export function serializeStyle(style) {
const result = {};
let hasAny = false;
const fontStyle = normalizeFontStyle(style);
if (fontStyle) {
result.fontStyle = fontStyle;
hasAny = true;

@@ -29,4 +55,4 @@ }

const size = parseFloat(style.fontSize);
if (Math.abs(size - DEFAULT_FONT_SIZE) > 0.5) {
result.fontSize = size;
if (Number.isFinite(size) && Math.abs(size - DEFAULT_FONT_SIZE) > 0.5) {
result.fontSize = style.fontSize;
hasAny = true;

@@ -43,3 +69,3 @@ }

if (!DEFAULT_FORE_COLORS.has(style.foreColor)) {
result.fontColor = style.foreColor;
result.foreColor = style.foreColor;
hasAny = true;

@@ -49,9 +75,8 @@ }

if (style.backColor && typeof style.backColor === "string") {
result.backgroundColor = style.backColor;
result.backColor = style.backColor;
hasAny = true;
}
if (style.hAlign !== undefined && style.hAlign !== null) {
const name = H_ALIGN_NAMES[style.hAlign];
if (name && name !== "general") {
result.hAlign = name;
if (style.hAlign !== H_ALIGN_GENERAL) {
result.hAlign = style.hAlign;
hasAny = true;

@@ -62,3 +87,3 @@ }

if (!DEFAULT_FORMATTERS.has(style.formatter)) {
result.numberFormat = style.formatter;
result.formatter = style.formatter;
hasAny = true;

@@ -74,35 +99,36 @@ }

: new GC.Spread.Sheets.Style();
// Copy existing properties if we cloned
if (existing) {
Object.assign(style, existing);
}
if (styles.fontWeight) {
style.fontWeight = styles.fontWeight;
}
if (styles.fontStyle) {
style.fontStyle = styles.fontStyle;
if (styles.fontStyle.bold !== undefined) {
style.fontWeight = styles.fontStyle.bold ? "bold" : "normal";
}
if (styles.fontStyle.italic !== undefined) {
style.fontStyle = styles.fontStyle.italic ? "italic" : "normal";
}
if (styles.fontStyle.underline !== undefined) {
const TextDecoration = GC.Spread.Sheets.TextDecorationType;
style.textDecoration = styles.fontStyle.underline
? TextDecoration.underline
: TextDecoration.none;
}
}
if (styles.fontSize !== undefined) {
style.fontSize = `${styles.fontSize}px`;
style.fontSize = styles.fontSize;
}
if (styles.fontFamily) {
if (styles.fontFamily !== undefined) {
style.fontFamily = styles.fontFamily;
}
if (styles.fontColor) {
style.foreColor = styles.fontColor;
if (styles.foreColor !== undefined) {
style.foreColor = styles.foreColor;
}
if (styles.backgroundColor) {
style.backColor = styles.backgroundColor;
if (styles.backColor !== undefined) {
style.backColor = styles.backColor;
}
if (styles.numberFormat) {
style.formatter = styles.numberFormat;
if (styles.formatter !== undefined) {
style.formatter = styles.formatter;
}
if (styles.horizontalAlignment) {
const HAlign = GC.Spread.Sheets.HorizontalAlign;
const alignMap = {
left: HAlign.left,
center: HAlign.center,
right: HAlign.right,
};
style.hAlign = alignMap[styles.horizontalAlignment];
if (styles.hAlign !== undefined) {
style.hAlign = styles.hAlign;
}

@@ -109,0 +135,0 @@ sheet.setStyle(row, col, style);

@@ -1,1 +0,1 @@

{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/cli/styles.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/cli/styles.ts"],"names":[],"mappings":"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"}

@@ -5,6 +5,8 @@ import type { GCNamespace, SpreadWorkbook } from "./types.js";

readonly workbook: SpreadWorkbook;
/** The file path this workbook was opened from (if any). */
sourcePath: string | undefined;
constructor(workbook?: SpreadWorkbook);
batch<T>(fn: () => T): T;
batch<T>(fn: () => Promise<T>): Promise<T>;
save(filePath: string): Promise<void>;
save(filePath?: string): Promise<void>;
saveToBuffer(): Promise<Buffer>;

@@ -11,0 +13,0 @@ toJSON(): object;

@@ -1,1 +0,1 @@

{"version":3,"file":"excel-file.d.ts","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8I9D,wBAAgB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAElD;AAED,qBAAa,SAAS;IACpB,SAAgB,QAAQ,EAAE,cAAc,CAAC;gBAE7B,QAAQ,CAAC,EAAE,cAAc;IAKrC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IACxB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqBpC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,MAAM,IAAI,MAAM;IAIhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAIf,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;WAO1C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAKhE"}
{"version":3,"file":"excel-file.d.ts","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA0K9D,wBAAgB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAElD;AAED,qBAAa,SAAS;IACpB,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,4DAA4D;IACrD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE1B,QAAQ,CAAC,EAAE,cAAc;IAMrC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IACxB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgCpC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,MAAM,IAAI,MAAM;IAIhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAIf,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;WAS1C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAKhE"}

@@ -18,2 +18,8 @@ import fs from "node:fs";

}
function getMethod(obj, name) {
if (!obj || typeof obj !== "object")
return null;
const value = obj[name];
return typeof value === "function" ? value : null;
}
function toArrayBuffer(buffer) {

@@ -108,2 +114,22 @@ return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);

}
/**
* SpreadJS defaults to 200 rows × 20 columns and **silently drops**
* any writes outside that range. Expand every sheet in the workbook
* to the Excel-maximum so callers never hit this.
*
* Cost: ~16 MB heap + ~180 ms per workbook (one-time).
* File size is unaffected — SpreadJS only serializes populated cells.
*/
const EXCEL_MAX_ROWS = 1_048_576;
const EXCEL_MAX_COLS = 16_384;
function expandSheetDefaults(spread) {
const n = spread.getSheetCount();
for (let i = 0; i < n; i++) {
const s = spread.getSheet(i);
if (s.getRowCount() < EXCEL_MAX_ROWS)
s.setRowCount(EXCEL_MAX_ROWS);
if (s.getColumnCount() < EXCEL_MAX_COLS)
s.setColumnCount(EXCEL_MAX_COLS);
}
}
export function setGC(gc) {

@@ -114,20 +140,32 @@ gcRef = gc;

workbook;
/** The file path this workbook was opened from (if any). */
sourcePath;
constructor(workbook) {
const gc = getGC();
this.workbook = workbook ?? new gc.Spread.Sheets.Workbook();
expandSheetDefaults(this.workbook);
}
batch(fn) {
const suspendPaint = getMethod(this.workbook, "suspendPaint");
const resumePaint = getMethod(this.workbook, "resumePaint");
const suspendEvent = getMethod(this.workbook, "suspendEvent");
const resumeEvent = getMethod(this.workbook, "resumeEvent");
suspendPaint?.call(this.workbook);
suspendEvent?.call(this.workbook);
this.workbook.suspendCalcService(false);
const finalize = () => {
this.workbook.resumeCalcService(true);
resumeEvent?.call(this.workbook);
resumePaint?.call(this.workbook);
};
try {
const result = fn();
if (result instanceof Promise) {
return result.finally(() => {
this.workbook.resumeCalcService(true);
});
return result.finally(finalize);
}
this.workbook.resumeCalcService(true);
finalize();
return result;
}
catch (error) {
this.workbook.resumeCalcService(true);
finalize();
throw error;

@@ -137,2 +175,6 @@ }

async save(filePath) {
filePath ??= this.sourcePath;
if (!filePath) {
throw new Error("No file path provided. Pass a path to save() or open the file with ExcelFile.open().");
}
const bytes = await this.saveToBuffer();

@@ -158,3 +200,5 @@ const dir = path.dirname(filePath);

const spread = await importWorkbook(toArrayBuffer(bytes), gc);
return new ExcelFile(spread);
const ef = new ExcelFile(spread);
ef.sourcePath = path.resolve(filePath);
return ef;
}

@@ -161,0 +205,0 @@ static async openFromBuffer(buffer) {

@@ -1,1 +0,1 @@

{"version":3,"file":"excel-file.js","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"excel-file.js","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"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"}
{
"name": "@hewliyang/headless-spreadjs",
"version": "0.0.3",
"version": "0.0.4",
"description": "Headless Excel workbook engine for Node.js — powered by SpreadJS with DOM shims. No browser, no Excel, any platform.",

@@ -71,2 +71,10 @@ "main": "dist/index.js",

},
"peerDependencies": {
"playwright": ">=1.0.0"
},
"peerDependenciesMeta": {
"playwright": {
"optional": true
}
},
"engines": {

@@ -73,0 +81,0 @@ "node": ">=18"

+78
-50
# headless-spreadjs
Headless Excel workbook engine for Node.js — powered by [SpreadJS](https://developer.mescius.com/spreadjs) with DOM shims. No browser, no Excel, any platform including Linux.
Headless Excel engine for Node.js using [SpreadJS](https://developer.mescius.com/spreadjs).
Runs without a browser or Excel.
## Features
- **Full Excel fidelity** — 500+ formula functions, charts, pivot tables, tables, cell styling, merging, number formatting
- **XLSX I/O** — read and write `.xlsx, .xlsm` files with full roundtrip support
- **JSON serialization** — `toJSON()` / `fromJSON()` preserves everything (formulas, styles, charts, pivots)
- Read/write `.xlsx` and `.xlsm`
- High-fidelity formulas, styles, tables, charts, pivots
- SpreadJS JSON roundtrip (`toJSON` / `fromJSON`)
- CLI (`hsx`) for quick workbook ops
## System Dependencies
## System dependencies
Cairo/Pango are required by the `canvas` npm package:
`canvas` requires Cairo/Pango.

@@ -19,3 +21,3 @@ ```bash

# Linux (Debian/Ubuntu)
# Debian/Ubuntu
sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

@@ -27,15 +29,12 @@ ```

```bash
npm install headless-spreadjs
npm install @hewliyang/headless-spreadjs
```
## Usage
## SDK quick start
```js
import { init } from "headless-spreadjs";
import { init } from "@hewliyang/headless-spreadjs";
// Initialize (with optional SpreadJS license key)
// If you use this for commercial purposes, please get a license from the madlads!
const { ExcelFile, GC, dispose } = await init({ licenseKey: "xxx" });
const { ExcelFile, dispose } = await init({ licenseKey: "xxx" });
// Create a workbook from scratch
const file = new ExcelFile();

@@ -47,58 +46,86 @@ const sheet = file.workbook.getActiveSheet();

sheet.setValue(1, 1, 95);
sheet.setValue(2, 0, "Bob");
sheet.setValue(2, 1, 87);
sheet.setValue(3, 0, "Average");
sheet.setFormula(3, 1, "AVERAGE(B2:B3)");
await file.save("output.xlsx");
// Open an existing workbook
const file2 = await ExcelFile.open("input.xlsx");
const val = file2.workbook.getActiveSheet().getValue(0, 0);
console.log(val);
dispose();
```
// Access raw SpreadJS API
const workbook = file.workbook; // GC.Spread.Sheets.Workbook instance
## CLI quick start
// Clean up when done
dispose();
```bash
hsx create scores.xlsx
hsx set scores.xlsx A1:B3 '[["Name","Score"],["Alice",95],["Bob",87]]'
hsx get scores.xlsx A1:B3
hsx csv scores.xlsx A1:B3
hsx search scores.xlsx "Alice"
hsx diff before.xlsx after.xlsx
hsx deps scores.xlsx Sheet1!A1
```
## API
Run `hsx --help` for all commands.
### `init(options?): { GC, ExcelFile, dispose }`
## Daemon (CLI)
Initialize the headless runtime. Must be called before creating ExcelFiles.
`hsx` uses a background daemon by default to avoid re-initializing SpreadJS on each command.
| Option | Type | Description |
| ------------ | --------- | ------------------------------------------ |
| `licenseKey` | `string?` | SpreadJS license key. Omit for trial mode. |
- Auto-starts on first use
- Caches open workbooks
- Auto-exits after 5 minutes idle
- Falls back to direct mode if daemon is unavailable
Useful commands:
```bash
hsx daemon start
hsx daemon status
hsx daemon flush
hsx daemon stop
hsx --no-daemon get file.xlsx A1
hsx --timeout 120 eval file.xlsx '/* script */'
```
Environment variables:
| Variable | Default | Purpose |
| ------------------- | ---------------- | ---------------------------- |
| `HSX_SOCKET_PATH` | platform default | Custom daemon socket/pipe |
| `HSX_CACHE_SIZE` | `10` | LRU workbook cache size |
| `HSX_WRITE_THROUGH` | `0` | Immediate writes when truthy |
## SDK API
### `init(options?)`
Initializes runtime and returns `{ GC, ExcelFile, dispose }`.
- `licenseKey?: string` — SpreadJS license key (omit for trial)
### `ExcelFile`
| Method | Description |
| ----------------------------------- | ---------------------------------------------- |
| `new ExcelFile()` | Create an empty workbook |
| `ExcelFile.open(path)` | Open an xlsx file → `Promise<ExcelFile>` |
| `ExcelFile.openFromBuffer(buf)` | Open xlsx from a Buffer → `Promise<ExcelFile>` |
| `file.save(path)` | Save to xlsx file → `Promise<void>` |
| `file.saveToBuffer()` | Save to Buffer → `Promise<Buffer>` |
| `file.toJSON()` | Serialize to SpreadJS JSON |
| `file.fromJSON(json)` | Load from SpreadJS JSON |
| `file.batch(fn)` | Suspend calc during `fn`, resume after |
| `file.workbook` | Raw `GC.Spread.Sheets.Workbook` instance |
- `new ExcelFile()`
- `ExcelFile.open(path)`
- `ExcelFile.openFromBuffer(buf)`
- `file.save(path)`
- `file.saveToBuffer()`
- `file.toJSON()`
- `file.fromJSON(json)`
- `file.batch(fn)`
- `file.workbook` (raw `GC.Spread.Sheets.Workbook`)
### `GC`
Full SpreadJS namespace (`GC.Spread.Sheets.*`) for advanced APIs (styles, enums, tables, formatting, etc).
### `dispose()`
Close the happy-dom window to prevent memory leaks. Call when done with all workbooks.
Closes the DOM shim runtime. Call when all workbook work is done.
## Concurrency
## Concurrency notes
`headless-spreadjs` installs DOM shims on `globalThis` (e.g. `window`, `document`, `navigator`), so a single Node.js process supports **one `init()` / `dispose()` lifecycle at a time**. You cannot safely run multiple workbook operations concurrently within the same process.
A process supports one active `init()`/`dispose()` lifecycle at a time.
Multiple `ExcelFile` instances are fine within that lifecycle.
If you need parallelism, use separate processes (e.g. worker threads or child processes) — each gets its own global scope so the shims don't collide.
For isolation, use child processes (not worker threads).
## Docker
`headless-spreadjs` will run in an image as simple as follows
```dockerfile

@@ -114,2 +141,3 @@ FROM node:20-slim

MIT (this package). SpreadJS requires a separate commercial license from [MESCIUS](https://developer.mescius.com/spreadjs).
MIT for this package.
SpreadJS requires a separate commercial license from [MESCIUS](https://developer.mescius.com/spreadjs).