@intentic/fileq 1.360.0 → 1.361.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"check-pdf.d.ts","sourceRoot":"","sources":["../../../src/lib/check/check-pdf.ts"],"names":[],"mappings":"AAWA,OAAO,EAA0B,KAAK,WAAW,EAAgB,MAAM,cAAc,CAAC;AAmLtF,eAAO,MAAM,QAAQ,UAAiB,UAAU,KAAG,OAAO,CAAC,WAAW,CAyDrE,CAAC"}
1
+ {"version":3,"file":"check-pdf.d.ts","sourceRoot":"","sources":["../../../src/lib/check/check-pdf.ts"],"names":[],"mappings":"AAWA,OAAO,EAA0B,KAAK,WAAW,EAAgB,MAAM,cAAc,CAAC;AAoLtF,eAAO,MAAM,QAAQ,UAAiB,UAAU,KAAG,OAAO,CAAC,WAAW,CAyDrE,CAAC"}
@@ -105,7 +105,7 @@ const sizeLabel = (width, height) => `${Number((width / POINTS_PER_INCH).toFixed
105
105
  const pageList = (numbers) => (numbers.length > 6 ? `${numbers.slice(0, 6).join(", ")}, …` : numbers.join(", "));
106
106
  const openPdf = async (bytes) => {
107
107
  try {
108
- return await getDocumentProxy(bytes, { verbosity: 0 });
108
+ return await getDocumentProxy(bytes, { verbosity: 0, fontExtraProperties: true });
109
109
  }
110
110
  catch (cause) {
111
111
  const reason = cause instanceof Error && cause.name === "PasswordException"
@@ -1 +1 @@
1
- {"version":3,"file":"check-pdf.js","sourceRoot":"","sources":["../../../src/lib/check/check-pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-pdf.js","sourceRoot":"","sources":["../../../src/lib/check/check-pdf.ts"],"names":[],"mappings":"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"}
@@ -61,7 +61,7 @@ export const odtDeriver = {
61
61
  name: "odt",
62
62
  version: 1,
63
63
  derive: async (absPath) => {
64
- const zip = unzipSync(new Uint8Array(await readFile(absPath)));
64
+ const zip = unzipSync(new Uint8Array(await readFile(absPath)), { filter: (file) => file.name === "content.xml" || file.name === "meta.xml" });
65
65
  const decoder = new TextDecoder();
66
66
  const content = zip["content.xml"];
67
67
  if (content === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"odt.js","sourceRoot":"","sources":["../../../src/lib/derivers/odt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQxD,MAAM,GAAG,GAA2B;IAChC,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,GAAG;IACb,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,KAAK;IAC3B,aAAa,EAAE,OAAO;IACtB,yBAAyB,EAAE,OAAO;IAClC,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,0BAA0B,EAAE,IAAI;IAChC,oBAAoB,EAAE,KAAK;IAC3B,qBAAqB,EAAE,UAAU;CACpC,CAAC;AAGF,MAAM,YAAY,GAAG;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,YAAY;IACZ,8BAA8B;IAC9B,2BAA2B;IAC3B,gCAAgC;CACnC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE,CACzC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,+BAA+B,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAGjI,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACpF,OAAO,CACH,IAAI;SAEC,UAAU,CAAC,wCAAwC,EAAE,CAAC,CAAC,EAAE,UAAkB,EAAE,KAAa,EAAE,EAAE;QAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,oBAAoB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1G,OAAO,KAAK,KAAK,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC;IAC7C,CAAC,CAAC;SAED,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAkB,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SAChI,UAAU,CAAC,sBAAsB,EAAE,GAAG,CAAC;SAEvC,UAAU,CACP,0DAA0D,EAC1D,CAAC,CAAC,EAAE,KAAa,EAAE,IAAY,EAAE,UAAkB,EAAE,WAAmB,EAAE,EAAE;QACxE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAChB,OAAO,KAAK,MAAM,GAAG,CAAC;QAC1B,CAAC;QACD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACnD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC;QACvF,CAAC;QACD,OAAO,WAAW,KAAK,GAAG,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC;IAClH,CAAC,CACJ;SAGA,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;SACjC,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAC9C,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAY;IAC/B,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,KAAK,EAAE,OAAO,EAAuB,EAAE;QAC3C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,+CAA+C,CAAC,EAAE,CAAC;QACtF,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7G,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9H,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAClG,OAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC1F,CAAC;CACJ,CAAC"}
1
+ {"version":3,"file":"odt.js","sourceRoot":"","sources":["../../../src/lib/derivers/odt.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export const pptxDeriver = {
23
23
  name: "pptx",
24
24
  version: 1,
25
25
  derive: async (absPath) => {
26
- const zip = unzipSync(new Uint8Array(await readFile(absPath)));
26
+ const zip = unzipSync(new Uint8Array(await readFile(absPath)), { filter: (file) => SLIDE_PART.test(file.name) || NOTES_PART.test(file.name) });
27
27
  const names = Object.keys(zip);
28
28
  const decoder = new TextDecoder();
29
29
  const xmlOf = (name) => decoder.decode(zip[name]);
@@ -1 +1 @@
1
- {"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../../src/lib/derivers/pptx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../../src/lib/derivers/pptx.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAsCxD,eAAO,MAAM,WAAW,EAAE,OAqCzB,CAAC"}
1
+ {"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAgCxD,eAAO,MAAM,WAAW,EAAE,OA4BzB,CAAC"}
@@ -9,55 +9,32 @@ const cellText = (value) => {
9
9
  if (value instanceof Date) {
10
10
  return value.toISOString();
11
11
  }
12
- if (typeof value === "object") {
13
- if ("richText" in value) {
14
- return value.richText.map((run) => run.text).join("");
15
- }
16
- if ("text" in value) {
17
- return String(value.text);
18
- }
19
- if ("result" in value && value.result !== undefined) {
20
- return cellText(value.result);
21
- }
22
- if ("error" in value) {
23
- return String(value.error);
24
- }
25
- return "";
26
- }
27
12
  return String(value);
28
13
  };
14
+ const isBlank = (row) => row.every((cell) => cell === null || cell === "");
29
15
  export const xlsxDeriver = {
30
16
  name: "xlsx",
31
- version: 1,
17
+ version: 2,
32
18
  derive: async (absPath) => {
33
- const { default: excel } = await import("exceljs");
34
- const workbook = new excel.Workbook();
35
- await workbook.xlsx.readFile(absPath);
19
+ const { default: readXlsxFile } = await import("read-excel-file/node");
20
+ const sheets = await readXlsxFile(absPath);
36
21
  const notes = [];
37
22
  const sections = [];
38
- for (const sheet of workbook.worksheets) {
39
- const rows = [];
40
- let columnCap = 0;
41
- sheet.eachRow({ includeEmpty: false }, (row) => {
42
- if (rows.length > MAX_ROWS_PER_SHEET) {
43
- return;
44
- }
45
- const values = row.values.slice(1, MAX_COLUMNS + 1).map(cellText);
46
- columnCap = Math.max(columnCap, row.cellCount);
47
- rows.push(values);
48
- });
49
- const kept = rows.slice(0, MAX_ROWS_PER_SHEET);
50
- if (sheet.rowCount > MAX_ROWS_PER_SHEET) {
51
- notes.push(`sheet "${sheet.name}": showing ${MAX_ROWS_PER_SHEET} of ${sheet.rowCount} rows`);
23
+ for (const { sheet: sheetName, data } of sheets) {
24
+ const filled = data.filter((row) => !isBlank(row));
25
+ const columnCap = filled.reduce((width, row) => Math.max(width, row.length), 0);
26
+ const kept = filled.slice(0, MAX_ROWS_PER_SHEET).map((row) => row.slice(0, MAX_COLUMNS).map(cellText));
27
+ if (filled.length > MAX_ROWS_PER_SHEET) {
28
+ notes.push(`sheet "${sheetName}": showing ${MAX_ROWS_PER_SHEET} of ${filled.length} rows`);
52
29
  }
53
30
  if (columnCap > MAX_COLUMNS) {
54
- notes.push(`sheet "${sheet.name}": showing ${MAX_COLUMNS} of ${columnCap} columns`);
31
+ notes.push(`sheet "${sheetName}": showing ${MAX_COLUMNS} of ${columnCap} columns`);
55
32
  }
56
33
  if (kept.length === 0) {
57
- sections.push(`## ${sheet.name}\n\n(empty sheet)`);
34
+ sections.push(`## ${sheetName}\n\n(empty sheet)`);
58
35
  continue;
59
36
  }
60
- sections.push(`## ${sheet.name}\n\n${markdownTable(kept.map((row) => row.map((cell) => oneLine(cell))))}`);
37
+ sections.push(`## ${sheetName}\n\n${markdownTable(kept.map((row) => row.map((cell) => oneLine(cell))))}`);
61
38
  }
62
39
  return { markdown: sections.join("\n\n"), notes };
63
40
  },
@@ -1 +1 @@
1
- {"version":3,"file":"xlsx.js","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xlsx.js","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/fileq",
3
- "version": "1.360.0",
3
+ "version": "1.361.0",
4
4
  "description": "fileq, agent-native file reading: any binary workspace file (docx, xlsx, pptx, pdf, images, audio, archives) as clean budgeted markdown, cached by content so a repeat read is instant",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -73,33 +73,32 @@
73
73
  }
74
74
  },
75
75
  "dependencies": {
76
- "@intentic/agent-cli": "1.360.0",
77
- "@intentic/base": "1.360.0",
78
- "@intentic/constants": "1.360.0",
79
- "@intentic/webq": "1.360.0",
80
- "@intentic/workspace-ignore": "1.360.0",
76
+ "@intentic/agent-cli": "1.361.0",
77
+ "@intentic/base": "1.361.0",
78
+ "@intentic/constants": "1.361.0",
79
+ "@intentic/webq": "1.361.0",
80
+ "@intentic/workspace-ignore": "1.361.0",
81
81
  "@stricli/core": "1.3.0",
82
- "exceljs": "4.4.0",
83
82
  "exifr": "7.1.3",
84
83
  "fflate": "0.8.3",
85
- "file-type": "22.1.1",
84
+ "file-type": "22.2.0",
86
85
  "image-size": "2.0.4",
87
86
  "mammoth": "1.13.0",
88
- "music-metadata": "11.16.1",
89
- "tslib": "2.8.1",
90
- "unpdf": "1.8.1"
87
+ "music-metadata": "12.3.2",
88
+ "read-excel-file": "9.3.12",
89
+ "unpdf": "1.9.1"
91
90
  },
92
91
  "devDependencies": {
93
92
  "@intentic/testing": "0.0.0",
94
93
  "@intentic/tsconfig": "0.0.0",
95
- "@types/bun": "1.4.2",
96
- "@types/node": "24.19.1",
97
- "@typescript/native-preview": "7.0.0-dev.20260707.2"
94
+ "@types/bun": "1.4.4",
95
+ "@types/node": "24.19.2",
96
+ "typescript": "7.0.2"
98
97
  },
99
98
  "scripts": {
100
- "build": "tsgo",
99
+ "build": "tsc",
101
100
  "typecheck": "bun check -p tsconfig.test.json",
102
- "watch": "tsgo --build --watch",
101
+ "watch": "tsc --build --watch",
103
102
  "test": "suites",
104
103
  "test:watch": "suites --watch"
105
104
  }
@@ -35,6 +35,7 @@ import {
35
35
  rtfBytes,
36
36
  tarBytes,
37
37
  wavBytes,
38
+ workbookBytes,
38
39
  zipBytes,
39
40
  } from "./testing.js";
40
41
 
@@ -80,20 +81,40 @@ describe("pptx", () => {
80
81
  });
81
82
 
82
83
  describe("xlsx", () => {
84
+ // A cell as the sheet XML saves it: an inline string, or a value of the given type (n: number, e: an error).
85
+ const text = (ref: string, value: string): string => `<c r="${ref}" t="inlineStr"><is><t>${value}</t></is></c>`;
86
+ const saved = (ref: string, value: string, type: "n" | "e"): string => `<c r="${ref}" t="${type}"><v>${value}</v></c>`;
87
+ const row = (index: number, cells: string): string => `<row r="${index}">${cells}</row>`;
88
+
83
89
  test("sheets become capped markdown tables", async () => {
84
- const ExcelJS = (await import("exceljs")).default;
85
- const workbook = new ExcelJS.Workbook();
86
- const sheet = workbook.addWorksheet("Costs");
87
- sheet.addRow(["item", "price"]);
88
- sheet.addRow(["widget", 4]);
89
- sheet.addRow(["gadget", 7]);
90
- const path = join(root, "costs.xlsx");
91
- await workbook.xlsx.writeFile(path);
92
- const doc = await xlsxDeriver.derive(path);
90
+ const rows = [row(1, text("A1", "item") + text("B1", "price")), row(2, text("A2", "widget") + saved("B2", "4", "n")), row(3, text("A3", "gadget") + saved("B3", "7", "n"))];
91
+ const doc = await xlsxDeriver.derive(fixture("costs.xlsx", workbookBytes([{ name: "Costs", rows: rows.join("") }])));
93
92
  expect(doc.markdown).toContain("## Costs");
94
93
  expect(doc.markdown).toContain("| widget | 4 |");
95
94
  expect(doc.notes).toEqual([]); // nothing was cut, so nothing claims to be
96
95
  });
96
+
97
+ // The reader pads the gap between two filled rows into rows of empty cells; they are not rows of the sheet.
98
+ test("the empty rows between filled ones are neither shown nor counted against the cap", async () => {
99
+ const filled = Array.from({ length: 205 }, (_, index) => row(index * 3 + 1, text(`A${index * 3 + 1}`, `line ${index}`)));
100
+ const doc = await xlsxDeriver.derive(fixture("gaps.xlsx", workbookBytes([{ name: "Gaps", rows: filled.join("") }])));
101
+ const tableRows = doc.markdown.split("\n").filter((line) => line.startsWith("|"));
102
+ expect(tableRows).toHaveLength(201); // the header row, its rule, and 199 rows more of the 200 shown
103
+ expect(tableRows.some((line) => /^\|[\s|]*$/.test(line))).toBe(false);
104
+ expect(doc.notes).toEqual(['sheet "Gaps": showing 200 of 205 rows']);
105
+ });
106
+
107
+ // An error's saved value is dropped by the reader (lib/derivers/xlsx.ts); `fileq check` is what reports it.
108
+ test("every sheet is its own section, an empty one says so, and a saved error reads as an empty cell", async () => {
109
+ const bytes = workbookBytes([
110
+ { name: "Totals", rows: row(1, text("A1", "ratio") + saved("B1", "#DIV/0!", "e") + text("C1", "end")) },
111
+ { name: "Spare", rows: "" },
112
+ ]);
113
+ const doc = await xlsxDeriver.derive(fixture("totals.xlsx", bytes));
114
+ expect(doc.markdown).toContain("## Totals");
115
+ expect(doc.markdown).not.toContain("#DIV/0!");
116
+ expect(doc.markdown).toContain("## Spare\n\n(empty sheet)");
117
+ });
97
118
  });
98
119
 
99
120
  describe("pdf", () => {
@@ -178,7 +178,8 @@ const pageList = (numbers: readonly number[]): string => (numbers.length > 6 ? `
178
178
  const openPdf = async (bytes: Uint8Array): Promise<PdfDocument | CheckReport> => {
179
179
  try {
180
180
  // Errors only: pdf.js otherwise narrates its recovery of a damaged file on the console, into the report.
181
- return await getDocumentProxy(bytes, { verbosity: 0 });
181
+ // pdf.js 6 exposes the original font name only with extra font properties enabled.
182
+ return await getDocumentProxy(bytes, { verbosity: 0, fontExtraProperties: true });
182
183
  } catch (cause) {
183
184
  const reason =
184
185
  cause instanceof Error && cause.name === "PasswordException"
@@ -86,7 +86,7 @@ export const odtDeriver: Deriver = {
86
86
  name: "odt",
87
87
  version: 1,
88
88
  derive: async (absPath): Promise<DerivedDoc> => {
89
- const zip = unzipSync(new Uint8Array(await readFile(absPath)));
89
+ const zip = unzipSync(new Uint8Array(await readFile(absPath)), { filter: (file) => file.name === "content.xml" || file.name === "meta.xml" });
90
90
  const decoder = new TextDecoder();
91
91
  const content = zip["content.xml"];
92
92
  if (content === undefined) {
@@ -34,7 +34,7 @@ export const pptxDeriver: Deriver = {
34
34
  name: "pptx",
35
35
  version: 1,
36
36
  derive: async (absPath): Promise<DerivedDoc> => {
37
- const zip = unzipSync(new Uint8Array(await readFile(absPath)));
37
+ const zip = unzipSync(new Uint8Array(await readFile(absPath)), { filter: (file) => SLIDE_PART.test(file.name) || NOTES_PART.test(file.name) });
38
38
  const names = Object.keys(zip);
39
39
  const decoder = new TextDecoder();
40
40
  const xmlOf = (name: string): string => decoder.decode(zip[name]);
@@ -1,78 +1,63 @@
1
1
  import { oneLine } from "@intentic/base/one-line";
2
2
  import { markdownTable } from "@intentic/webq/markdown";
3
- import type ExcelJS from "exceljs";
3
+ import type { Row } from "read-excel-file/node";
4
4
  import type { DerivedDoc, Deriver } from "./deriver.js";
5
5
 
6
6
  /* Spreadsheets: one markdown table per sheet, capped, with the cap announced. */
7
7
 
8
- // exceljs is 0.8s to load, and it is loaded inside derive() rather than here because every fileq run — every agent
9
- // read of a png, every `fileq derive`, `fileq --version` — pays for a module this file imports at its top. The type import
10
- // above is erased at compile time and costs nothing.
8
+ // read-excel-file is loaded inside derive() rather than here because every fileq run — every agent read of a png, every
9
+ // `fileq derive`, `fileq --version` — pays for a module this file imports at its top. The type import above is erased at
10
+ // compile time and costs nothing.
11
+ //
12
+ // What it reads is each cell's saved value, as a person sees the rendered sheet: a formula's last result, rich text and a
13
+ // hyperlink's label as their text. A cell whose saved value is an error (#REF!, #DIV/0!) reads as empty, by the library's
14
+ // own choice and with no option to keep it; `fileq check` reads those off the sheet XML itself (check/check-xlsx.ts).
11
15
 
12
16
  const MAX_ROWS_PER_SHEET = 200;
13
17
  const MAX_COLUMNS = 30;
14
18
 
15
- // A cell's value as text. exceljs surfaces formulas, rich text and hyperlinks as objects; each collapses to
16
- // what a person looking at the rendered sheet would read.
17
- const cellText = (value: ExcelJS.CellValue): string => {
19
+ type Cell = Row[number];
20
+
21
+ // A cell's value as text.
22
+ const cellText = (value: Cell): string => {
18
23
  if (value === null || value === undefined) {
19
24
  return "";
20
25
  }
21
26
  if (value instanceof Date) {
22
27
  return value.toISOString();
23
28
  }
24
- if (typeof value === "object") {
25
- if ("richText" in value) {
26
- return value.richText.map((run) => run.text).join("");
27
- }
28
- if ("text" in value) {
29
- return String(value.text);
30
- }
31
- if ("result" in value && value.result !== undefined) {
32
- return cellText(value.result as ExcelJS.CellValue);
33
- }
34
- if ("error" in value) {
35
- return String(value.error);
36
- }
37
- return "";
38
- }
39
29
  return String(value);
40
30
  };
41
31
 
32
+ // A row with nothing in it: the reader pads gaps between rows into rows of empty cells, which a table would show as blank
33
+ // lines and the row cap would count.
34
+ const isBlank = (row: Row): boolean => row.every((cell) => cell === null || cell === "");
35
+
42
36
  export const xlsxDeriver: Deriver = {
43
37
  name: "xlsx",
44
- version: 1,
38
+ // v2: read with read-excel-file (was exceljs), whose cells differ where a saved value is an error.
39
+ version: 2,
45
40
  derive: async (absPath): Promise<DerivedDoc> => {
46
- const { default: excel } = await import("exceljs");
47
- const workbook = new excel.Workbook();
48
- await workbook.xlsx.readFile(absPath);
41
+ const { default: readXlsxFile } = await import("read-excel-file/node");
42
+ const sheets = await readXlsxFile(absPath);
49
43
  const notes: string[] = [];
50
44
  const sections: string[] = [];
51
- for (const sheet of workbook.worksheets) {
52
- const rows: string[][] = [];
53
- let columnCap = 0;
54
- sheet.eachRow({ includeEmpty: false }, (row) => {
55
- if (rows.length > MAX_ROWS_PER_SHEET) {
56
- return; // counted past the cap so the note can say how many were left behind
57
- }
58
- // `row.values` is 1-based (index 0 is always empty); keep blanks so columns stay aligned.
59
- const values = (row.values as ExcelJS.CellValue[]).slice(1, MAX_COLUMNS + 1).map(cellText);
60
- columnCap = Math.max(columnCap, row.cellCount);
61
- rows.push(values);
62
- });
63
- const kept = rows.slice(0, MAX_ROWS_PER_SHEET);
64
- if (sheet.rowCount > MAX_ROWS_PER_SHEET) {
65
- notes.push(`sheet "${sheet.name}": showing ${MAX_ROWS_PER_SHEET} of ${sheet.rowCount} rows`);
45
+ for (const { sheet: sheetName, data } of sheets) {
46
+ const filled = data.filter((row) => !isBlank(row));
47
+ const columnCap = filled.reduce((width, row) => Math.max(width, row.length), 0);
48
+ const kept = filled.slice(0, MAX_ROWS_PER_SHEET).map((row) => row.slice(0, MAX_COLUMNS).map(cellText));
49
+ if (filled.length > MAX_ROWS_PER_SHEET) {
50
+ notes.push(`sheet "${sheetName}": showing ${MAX_ROWS_PER_SHEET} of ${filled.length} rows`);
66
51
  }
67
52
  if (columnCap > MAX_COLUMNS) {
68
- notes.push(`sheet "${sheet.name}": showing ${MAX_COLUMNS} of ${columnCap} columns`);
53
+ notes.push(`sheet "${sheetName}": showing ${MAX_COLUMNS} of ${columnCap} columns`);
69
54
  }
70
55
  if (kept.length === 0) {
71
- sections.push(`## ${sheet.name}\n\n(empty sheet)`);
56
+ sections.push(`## ${sheetName}\n\n(empty sheet)`);
72
57
  continue;
73
58
  }
74
59
  // Each cell as one line: a sheet's cell can hold line breaks and runs of spaces nobody reads as meaningful.
75
- sections.push(`## ${sheet.name}\n\n${markdownTable(kept.map((row) => row.map((cell) => oneLine(cell))))}`);
60
+ sections.push(`## ${sheetName}\n\n${markdownTable(kept.map((row) => row.map((cell) => oneLine(cell))))}`);
76
61
  }
77
62
  return { markdown: sections.join("\n\n"), notes };
78
63
  },
@@ -0,0 +1,52 @@
1
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { mediaDeriver } from "./lib/derivers/media.js";
5
+ import { flacBytes, mp4Bytes, wavBytes } from "./testing.js";
6
+
7
+ let root: string;
8
+ beforeEach(() => {
9
+ root = mkdtempSync(join(tmpdir(), "fileq-media-"));
10
+ });
11
+ afterEach(() => rmSync(root, { recursive: true, force: true }));
12
+
13
+ test("PCM format details survive the metadata parser upgrade", async () => {
14
+ const path = join(root, "silence.wav");
15
+ writeFileSync(path, wavBytes());
16
+ const doc = await mediaDeriver.derive(path);
17
+ expect(doc.markdown).toContain("Container: WAVE (PCM)");
18
+ expect(doc.markdown).toContain("Sample rate: 8000 Hz, 1ch");
19
+ expect(doc.markdown).toContain("Bitrate: 64 kbit/s");
20
+ });
21
+
22
+ test("compressed audio retains its duration and descriptive tags", async () => {
23
+ const path = join(root, "tagged.flac");
24
+ writeFileSync(path, flacBytes());
25
+ const doc = await mediaDeriver.derive(path);
26
+ expect(doc.title).toBe("Fixture audio");
27
+ expect(doc.markdown).toContain("Duration: 1s");
28
+ expect(doc.markdown).toContain("Artist: Fixture artist");
29
+ });
30
+
31
+ test("a video container retains its duration and title", async () => {
32
+ const path = join(root, "tagged.mp4");
33
+ writeFileSync(path, mp4Bytes());
34
+ const doc = await mediaDeriver.derive(path);
35
+ expect(doc.title).toBe("Fixture video");
36
+ expect(doc.markdown).toContain("Duration: 1s");
37
+ });
38
+
39
+ test("a truncated WAVE identifies the container without inventing a duration", async () => {
40
+ const path = join(root, "truncated.wav");
41
+ writeFileSync(path, wavBytes().subarray(0, 20));
42
+ const doc = await mediaDeriver.derive(path);
43
+ expect(doc.markdown).toBe("- Container: WAVE");
44
+ });
45
+
46
+ test("an audio extension alone does not produce fabricated metadata", async () => {
47
+ const path = join(root, "unrecognized.wav");
48
+ writeFileSync(path, "this is not an audio container");
49
+ const doc = await mediaDeriver.derive(path);
50
+ expect(doc.markdown).toBe("");
51
+ expect(doc.title).toBe(undefined);
52
+ });