@intentic/fileq 1.317.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.
Files changed (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +46 -0
  3. package/dist/app.d.ts +2 -0
  4. package/dist/app.d.ts.map +1 -0
  5. package/dist/app.js +43 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +4 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/derive.command.d.ts +5 -0
  12. package/dist/commands/derive.command.d.ts.map +1 -0
  13. package/dist/commands/derive.command.js +53 -0
  14. package/dist/commands/derive.command.js.map +1 -0
  15. package/dist/commands/git-attributes.command.d.ts +3 -0
  16. package/dist/commands/git-attributes.command.d.ts.map +1 -0
  17. package/dist/commands/git-attributes.command.js +12 -0
  18. package/dist/commands/git-attributes.command.js.map +1 -0
  19. package/dist/commands/read.command.d.ts +3 -0
  20. package/dist/commands/read.command.d.ts.map +1 -0
  21. package/dist/commands/read.command.js +126 -0
  22. package/dist/commands/read.command.js.map +1 -0
  23. package/dist/commands/sweep.command.d.ts +3 -0
  24. package/dist/commands/sweep.command.d.ts.map +1 -0
  25. package/dist/commands/sweep.command.js +41 -0
  26. package/dist/commands/sweep.command.js.map +1 -0
  27. package/dist/lib/archives.d.ts +18 -0
  28. package/dist/lib/archives.d.ts.map +1 -0
  29. package/dist/lib/archives.js +133 -0
  30. package/dist/lib/archives.js.map +1 -0
  31. package/dist/lib/derive.d.ts +32 -0
  32. package/dist/lib/derive.d.ts.map +1 -0
  33. package/dist/lib/derive.js +99 -0
  34. package/dist/lib/derive.js.map +1 -0
  35. package/dist/lib/derivers/archive.d.ts +3 -0
  36. package/dist/lib/derivers/archive.d.ts.map +1 -0
  37. package/dist/lib/derivers/archive.js +132 -0
  38. package/dist/lib/derivers/archive.js.map +1 -0
  39. package/dist/lib/derivers/deriver.d.ts +13 -0
  40. package/dist/lib/derivers/deriver.d.ts.map +1 -0
  41. package/dist/lib/derivers/deriver.js +8 -0
  42. package/dist/lib/derivers/deriver.js.map +1 -0
  43. package/dist/lib/derivers/docx.d.ts +6 -0
  44. package/dist/lib/derivers/docx.d.ts.map +1 -0
  45. package/dist/lib/derivers/docx.js +29 -0
  46. package/dist/lib/derivers/docx.js.map +1 -0
  47. package/dist/lib/derivers/epub.d.ts +3 -0
  48. package/dist/lib/derivers/epub.d.ts.map +1 -0
  49. package/dist/lib/derivers/epub.js +102 -0
  50. package/dist/lib/derivers/epub.js.map +1 -0
  51. package/dist/lib/derivers/html.d.ts +3 -0
  52. package/dist/lib/derivers/html.d.ts.map +1 -0
  53. package/dist/lib/derivers/html.js +18 -0
  54. package/dist/lib/derivers/html.js.map +1 -0
  55. package/dist/lib/derivers/image.d.ts +3 -0
  56. package/dist/lib/derivers/image.d.ts.map +1 -0
  57. package/dist/lib/derivers/image.js +42 -0
  58. package/dist/lib/derivers/image.js.map +1 -0
  59. package/dist/lib/derivers/ipynb.d.ts +3 -0
  60. package/dist/lib/derivers/ipynb.d.ts.map +1 -0
  61. package/dist/lib/derivers/ipynb.js +75 -0
  62. package/dist/lib/derivers/ipynb.js.map +1 -0
  63. package/dist/lib/derivers/media.d.ts +3 -0
  64. package/dist/lib/derivers/media.d.ts.map +1 -0
  65. package/dist/lib/derivers/media.js +45 -0
  66. package/dist/lib/derivers/media.js.map +1 -0
  67. package/dist/lib/derivers/odp.d.ts +3 -0
  68. package/dist/lib/derivers/odp.d.ts.map +1 -0
  69. package/dist/lib/derivers/odp.js +41 -0
  70. package/dist/lib/derivers/odp.js.map +1 -0
  71. package/dist/lib/derivers/ods.d.ts +3 -0
  72. package/dist/lib/derivers/ods.d.ts.map +1 -0
  73. package/dist/lib/derivers/ods.js +86 -0
  74. package/dist/lib/derivers/ods.js.map +1 -0
  75. package/dist/lib/derivers/odt.d.ts +4 -0
  76. package/dist/lib/derivers/odt.d.ts.map +1 -0
  77. package/dist/lib/derivers/odt.js +77 -0
  78. package/dist/lib/derivers/odt.js.map +1 -0
  79. package/dist/lib/derivers/pdf-furniture.d.ts +7 -0
  80. package/dist/lib/derivers/pdf-furniture.d.ts.map +1 -0
  81. package/dist/lib/derivers/pdf-furniture.js +76 -0
  82. package/dist/lib/derivers/pdf-furniture.js.map +1 -0
  83. package/dist/lib/derivers/pdf.d.ts +4 -0
  84. package/dist/lib/derivers/pdf.d.ts.map +1 -0
  85. package/dist/lib/derivers/pdf.js +79 -0
  86. package/dist/lib/derivers/pdf.js.map +1 -0
  87. package/dist/lib/derivers/pptx.d.ts +4 -0
  88. package/dist/lib/derivers/pptx.d.ts.map +1 -0
  89. package/dist/lib/derivers/pptx.js +51 -0
  90. package/dist/lib/derivers/pptx.js.map +1 -0
  91. package/dist/lib/derivers/profile.d.ts +3 -0
  92. package/dist/lib/derivers/profile.d.ts.map +1 -0
  93. package/dist/lib/derivers/profile.js +115 -0
  94. package/dist/lib/derivers/profile.js.map +1 -0
  95. package/dist/lib/derivers/rtf.d.ts +4 -0
  96. package/dist/lib/derivers/rtf.d.ts.map +1 -0
  97. package/dist/lib/derivers/rtf.js +187 -0
  98. package/dist/lib/derivers/rtf.js.map +1 -0
  99. package/dist/lib/derivers/xlsx.d.ts +3 -0
  100. package/dist/lib/derivers/xlsx.d.ts.map +1 -0
  101. package/dist/lib/derivers/xlsx.js +68 -0
  102. package/dist/lib/derivers/xlsx.js.map +1 -0
  103. package/dist/lib/env.d.ts +2 -0
  104. package/dist/lib/env.d.ts.map +1 -0
  105. package/dist/lib/env.js +5 -0
  106. package/dist/lib/env.js.map +1 -0
  107. package/dist/lib/flags.d.ts +2 -0
  108. package/dist/lib/flags.d.ts.map +1 -0
  109. package/dist/lib/flags.js +8 -0
  110. package/dist/lib/flags.js.map +1 -0
  111. package/dist/lib/formats.d.ts +6 -0
  112. package/dist/lib/formats.d.ts.map +1 -0
  113. package/dist/lib/formats.js +110 -0
  114. package/dist/lib/formats.js.map +1 -0
  115. package/dist/lib/sidecar.d.ts +30 -0
  116. package/dist/lib/sidecar.d.ts.map +1 -0
  117. package/dist/lib/sidecar.js +108 -0
  118. package/dist/lib/sidecar.js.map +1 -0
  119. package/dist/lib/sweep.d.ts +7 -0
  120. package/dist/lib/sweep.d.ts.map +1 -0
  121. package/dist/lib/sweep.js +56 -0
  122. package/dist/lib/sweep.js.map +1 -0
  123. package/dist/lib/tools.d.ts +2 -0
  124. package/dist/lib/tools.d.ts.map +1 -0
  125. package/dist/lib/tools.js +15 -0
  126. package/dist/lib/tools.js.map +1 -0
  127. package/dist/lib/xml.d.ts +3 -0
  128. package/dist/lib/xml.d.ts.map +1 -0
  129. package/dist/lib/xml.js +16 -0
  130. package/dist/lib/xml.js.map +1 -0
  131. package/dist/skill.d.ts +5 -0
  132. package/dist/skill.d.ts.map +1 -0
  133. package/dist/skill.js +75 -0
  134. package/dist/skill.js.map +1 -0
  135. package/dist/testing.d.ts +25 -0
  136. package/dist/testing.d.ts.map +1 -0
  137. package/dist/testing.js +220 -0
  138. package/dist/testing.js.map +1 -0
  139. package/dist/version.d.ts +2 -0
  140. package/dist/version.d.ts.map +1 -0
  141. package/dist/version.js +3 -0
  142. package/dist/version.js.map +1 -0
  143. package/package.json +89 -0
  144. package/src/app.ts +48 -0
  145. package/src/cli.integration.test.ts +200 -0
  146. package/src/cli.ts +6 -0
  147. package/src/commands/derive.command.ts +59 -0
  148. package/src/commands/git-attributes.command.ts +13 -0
  149. package/src/commands/read.command.ts +158 -0
  150. package/src/commands/sweep.command.ts +48 -0
  151. package/src/derivers.integration.test.ts +415 -0
  152. package/src/lib/archives.test.ts +72 -0
  153. package/src/lib/archives.ts +209 -0
  154. package/src/lib/derive.ts +132 -0
  155. package/src/lib/derivers/archive.ts +168 -0
  156. package/src/lib/derivers/deriver.ts +33 -0
  157. package/src/lib/derivers/docx.test.ts +38 -0
  158. package/src/lib/derivers/docx.ts +44 -0
  159. package/src/lib/derivers/epub.ts +130 -0
  160. package/src/lib/derivers/html.ts +21 -0
  161. package/src/lib/derivers/image.ts +54 -0
  162. package/src/lib/derivers/ipynb.ts +113 -0
  163. package/src/lib/derivers/load-cost.test.ts +44 -0
  164. package/src/lib/derivers/media.ts +51 -0
  165. package/src/lib/derivers/odp.ts +52 -0
  166. package/src/lib/derivers/ods.ts +104 -0
  167. package/src/lib/derivers/odt.ts +101 -0
  168. package/src/lib/derivers/pdf-furniture.test.ts +60 -0
  169. package/src/lib/derivers/pdf-furniture.ts +121 -0
  170. package/src/lib/derivers/pdf.ts +102 -0
  171. package/src/lib/derivers/pptx.ts +61 -0
  172. package/src/lib/derivers/profile.ts +172 -0
  173. package/src/lib/derivers/rtf.ts +233 -0
  174. package/src/lib/derivers/xlsx.ts +82 -0
  175. package/src/lib/env.ts +7 -0
  176. package/src/lib/formats.test.ts +50 -0
  177. package/src/lib/formats.ts +141 -0
  178. package/src/lib/sidecar.test.ts +60 -0
  179. package/src/lib/sidecar.ts +156 -0
  180. package/src/lib/sweep.ts +72 -0
  181. package/src/lib/tools.ts +16 -0
  182. package/src/lib/xml.ts +20 -0
  183. package/src/skill.ts +90 -0
  184. package/src/testing.ts +333 -0
@@ -0,0 +1,51 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { unzipSync } from "fflate";
3
+ import { decodeEntities } from "../xml.js";
4
+ const SLIDE_PART = /^ppt\/slides\/slide(\d+)\.xml$/;
5
+ const NOTES_PART = /^ppt\/notesSlides\/notesSlide(\d+)\.xml$/;
6
+ export const slideParagraphs = (xml) => [...xml.matchAll(/<a:p\b[\s\S]*?<\/a:p>/g)]
7
+ .map((paragraph) => [...paragraph[0].matchAll(/<a:t[^>]*>([\s\S]*?)<\/a:t>/g)]
8
+ .map((run) => decodeEntities(run[1] ?? ""))
9
+ .join("")
10
+ .trim())
11
+ .filter((text) => text !== "");
12
+ const partsByNumber = (names, pattern) => {
13
+ const map = new Map();
14
+ for (const name of names) {
15
+ const match = pattern.exec(name);
16
+ if (match !== null) {
17
+ map.set(Number(match[1]), name);
18
+ }
19
+ }
20
+ return map;
21
+ };
22
+ export const pptxDeriver = {
23
+ name: "pptx",
24
+ version: 1,
25
+ derive: async (absPath) => {
26
+ const zip = unzipSync(new Uint8Array(await readFile(absPath)));
27
+ const names = Object.keys(zip);
28
+ const decoder = new TextDecoder();
29
+ const xmlOf = (name) => decoder.decode(zip[name]);
30
+ const slides = partsByNumber(names, SLIDE_PART);
31
+ const notes = partsByNumber(names, NOTES_PART);
32
+ const sections = [];
33
+ for (const number of [...slides.keys()].toSorted((a, b) => a - b)) {
34
+ const lines = slideParagraphs(xmlOf(slides.get(number) ?? ""));
35
+ const section = [`## Slide ${number}`, ...lines];
36
+ const notesPart = notes.get(number);
37
+ if (notesPart !== undefined) {
38
+ const noteLines = slideParagraphs(xmlOf(notesPart)).filter((line) => !/^\d+$/.test(line));
39
+ if (noteLines.length > 0) {
40
+ section.push("", "Notes:", ...noteLines.map((line) => `> ${line}`));
41
+ }
42
+ }
43
+ sections.push(section.join("\n"));
44
+ }
45
+ return {
46
+ markdown: sections.join("\n\n"),
47
+ notes: slides.size === 0 ? ["no slide parts found in this presentation"] : [],
48
+ };
49
+ },
50
+ };
51
+ //# sourceMappingURL=pptx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../../src/lib/derivers/pptx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Deriver } from "./deriver.js";
2
+ export declare const profileDeriver: Deriver;
3
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/lib/derivers/profile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AA4JxD,eAAO,MAAM,cAAc,EAAE,OAa5B,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { plural } from "@intentic/base/format";
3
+ const TOP_ROWS = 25;
4
+ const keyOf = (frame) => {
5
+ const name = frame.functionName === undefined || frame.functionName === "" ? "(anonymous)" : frame.functionName;
6
+ if (frame.url === undefined || frame.url === "") {
7
+ return name;
8
+ }
9
+ const file = frame.url.replace(/^file:\/\//u, "");
10
+ return `${name} ${file}:${String((frame.lineNumber ?? 0) + 1)}`;
11
+ };
12
+ const rowOf = (rows, key) => {
13
+ const existing = rows.get(key);
14
+ if (existing !== undefined) {
15
+ return existing;
16
+ }
17
+ const row = { key, self: 0, total: 0 };
18
+ rows.set(key, row);
19
+ return row;
20
+ };
21
+ const percent = (part, whole) => (whole === 0 ? "0.0%" : `${((part / whole) * 100).toFixed(1)}%`);
22
+ const table = (heading, unit, rows, whole) => [
23
+ `## ${heading}`,
24
+ "",
25
+ "| self | self % | total | total % | function |",
26
+ "| ---: | ---: | ---: | ---: | --- |",
27
+ ...rows.map((row) => `| ${unit(row.self)} | ${percent(row.self, whole)} | ${unit(row.total)} | ${percent(row.total, whole)} | \`${row.key.replaceAll("|", "\\|")}\` |`),
28
+ ].join("\n");
29
+ const ranked = (rows, by) => [...rows.values()].toSorted((left, right) => right[by] - left[by]).slice(0, TOP_ROWS);
30
+ const milliseconds = (microseconds) => `${(microseconds / 1_000).toFixed(1)} ms`;
31
+ const kilobytes = (bytes) => `${(bytes / 1_024).toFixed(1)} KB`;
32
+ const cpuDoc = (profile) => {
33
+ const samples = profile.samples ?? [];
34
+ const deltas = profile.timeDeltas ?? [];
35
+ const parent = new Map();
36
+ const byId = new Map();
37
+ for (const node of profile.nodes) {
38
+ byId.set(node.id, node);
39
+ for (const child of node.children ?? []) {
40
+ parent.set(child, node.id);
41
+ }
42
+ }
43
+ const span = profile.endTime - profile.startTime;
44
+ const meanGap = samples.length === 0 ? 0 : span / samples.length;
45
+ const rows = new Map();
46
+ for (const [index, id] of samples.entries()) {
47
+ const duration = deltas[index + 1] ?? meanGap;
48
+ const top = byId.get(id);
49
+ if (top === undefined) {
50
+ continue;
51
+ }
52
+ rowOf(rows, keyOf(top.callFrame)).self += duration;
53
+ const onStack = new Set();
54
+ for (let node = id; node !== undefined; node = parent.get(node)) {
55
+ const frame = byId.get(node)?.callFrame;
56
+ if (frame !== undefined && frame.functionName !== "(root)") {
57
+ onStack.add(keyOf(frame));
58
+ }
59
+ }
60
+ for (const key of onStack) {
61
+ rowOf(rows, key).total += duration;
62
+ }
63
+ }
64
+ const notes = samples.length === 0 ? ["no samples in this profile: it recorded nothing, or ran shorter than one sampling interval"] : [];
65
+ if (rows.size > TOP_ROWS) {
66
+ notes.push(`${plural(rows.size, "function")} sampled; each table shows the top ${String(TOP_ROWS)}`);
67
+ }
68
+ return {
69
+ title: `CPU profile: ${milliseconds(span)} over ${plural(samples.length, "sample")}`,
70
+ markdown: [table("By self time", milliseconds, ranked(rows, "self"), span), table("By total time", milliseconds, ranked(rows, "total"), span)].join("\n\n"),
71
+ notes,
72
+ };
73
+ };
74
+ const heapDoc = (profile) => {
75
+ const rows = new Map();
76
+ const walk = (node, ancestors) => {
77
+ const key = keyOf(node.callFrame);
78
+ const isRoot = node.callFrame.functionName === "(root)";
79
+ const inside = isRoot || ancestors.has(key) ? ancestors : new Set([...ancestors, key]);
80
+ const below = (node.children ?? []).reduce((sum, child) => sum + walk(child, inside), 0);
81
+ if (!isRoot) {
82
+ const row = rowOf(rows, key);
83
+ row.self += node.selfSize;
84
+ if (!ancestors.has(key)) {
85
+ row.total += node.selfSize + below;
86
+ }
87
+ }
88
+ return node.selfSize + below;
89
+ };
90
+ const whole = walk(profile.head, new Set());
91
+ const notes = whole === 0 ? ["no allocations sampled in this profile"] : [];
92
+ if (rows.size > TOP_ROWS) {
93
+ notes.push(`${plural(rows.size, "allocation site")} sampled; each table shows the top ${String(TOP_ROWS)}`);
94
+ }
95
+ return {
96
+ title: `Heap profile: ${kilobytes(whole)} sampled as allocated`,
97
+ markdown: [table("By bytes allocated here", kilobytes, ranked(rows, "self"), whole), table("By bytes allocated here and below", kilobytes, ranked(rows, "total"), whole)].join("\n\n"),
98
+ notes,
99
+ };
100
+ };
101
+ export const profileDeriver = {
102
+ name: "profile",
103
+ version: 1,
104
+ derive: async (absPath) => {
105
+ const profile = JSON.parse(await readFile(absPath, "utf8"));
106
+ if (Array.isArray(profile.nodes) && typeof profile.startTime === "number" && typeof profile.endTime === "number") {
107
+ return cpuDoc(profile);
108
+ }
109
+ if (profile.head !== undefined) {
110
+ return heapDoc(profile);
111
+ }
112
+ return { markdown: "", notes: ["not a V8 CPU or heap profile: neither `nodes` with start and end times, nor a `head` node"] };
113
+ },
114
+ };
115
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/lib/derivers/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Deriver } from "./deriver.js";
2
+ export declare const rtfParagraphs: (source: string) => string[];
3
+ export declare const rtfDeriver: Deriver;
4
+ //# sourceMappingURL=rtf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtf.d.ts","sourceRoot":"","sources":["../../../src/lib/derivers/rtf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAoMxD,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,EAyBpD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OAQxB,CAAC"}
@@ -0,0 +1,187 @@
1
+ import { readFile } from "node:fs/promises";
2
+ const SKIPPED = new Set([
3
+ "fonttbl",
4
+ "colortbl",
5
+ "stylesheet",
6
+ "info",
7
+ "pict",
8
+ "listtable",
9
+ "listoverridetable",
10
+ "rsidtbl",
11
+ "generator",
12
+ "filetbl",
13
+ "themedata",
14
+ "colorschememapping",
15
+ "datastore",
16
+ "latentstyles",
17
+ "xmlnstbl",
18
+ "pgdsctbl",
19
+ "revtbl",
20
+ "header",
21
+ "headerl",
22
+ "headerr",
23
+ "headerf",
24
+ "footer",
25
+ "footerl",
26
+ "footerr",
27
+ "footerf",
28
+ "object",
29
+ "objdata",
30
+ "do",
31
+ "shp",
32
+ "nonshppict",
33
+ "bkmkstart",
34
+ "bkmkend",
35
+ "fldinst",
36
+ "xe",
37
+ "tc",
38
+ "upr",
39
+ ]);
40
+ const BREAKS = new Set(["par", "line", "sect", "page", "row", "nestrow"]);
41
+ const LITERALS = { "\\": "\\", "{": "{", "}": "}", "~": " ", "_": "-" };
42
+ const decoder = new TextDecoder("windows-1252");
43
+ const flushBytes = (reader) => {
44
+ if (reader.bytes.length > 0) {
45
+ reader.line += decoder.decode(new Uint8Array(reader.bytes));
46
+ reader.bytes = [];
47
+ }
48
+ };
49
+ const endLine = (reader) => {
50
+ flushBytes(reader);
51
+ const text = reader.line.replaceAll(/[ \t]+/g, " ").trim();
52
+ reader.line = "";
53
+ if (text !== "") {
54
+ reader.out.push(text);
55
+ }
56
+ };
57
+ const enterSkip = (word, frame) => {
58
+ if (frame.skip) {
59
+ return true;
60
+ }
61
+ if (word === "*") {
62
+ frame.ignorable = true;
63
+ return true;
64
+ }
65
+ if (frame.ignorable || SKIPPED.has(word)) {
66
+ frame.skip = true;
67
+ frame.ignorable = false;
68
+ return true;
69
+ }
70
+ return false;
71
+ };
72
+ const appendCodePoint = (reader, value) => {
73
+ const code = value === undefined ? 0 : value < 0 ? value + 0x10000 : value;
74
+ reader.line += code > 0 && code <= 0x10ffff ? String.fromCodePoint(code) : "";
75
+ reader.drop = 1;
76
+ };
77
+ const CHARACTERS = {
78
+ emdash: "—",
79
+ endash: "–",
80
+ lquote: "‘",
81
+ rquote: "’",
82
+ ldblquote: "“",
83
+ rdblquote: "”",
84
+ bullet: "•",
85
+ emspace: " ",
86
+ enspace: " ",
87
+ qmspace: " ",
88
+ };
89
+ const WORDS = {
90
+ cell: (reader) => void (reader.line += " | "),
91
+ nestcell: (reader) => void (reader.line += " | "),
92
+ tab: (reader) => void (reader.line += "\t"),
93
+ u: (reader, value) => appendCodePoint(reader, value),
94
+ ...Object.fromEntries(Object.entries(CHARACTERS).map(([word, text]) => [word, (reader) => void (reader.line += text)])),
95
+ };
96
+ const applyWord = (word, value, reader, frame) => {
97
+ if (enterSkip(word, frame)) {
98
+ return;
99
+ }
100
+ flushBytes(reader);
101
+ if (BREAKS.has(word)) {
102
+ endLine(reader);
103
+ return;
104
+ }
105
+ WORDS[word]?.(reader, value);
106
+ };
107
+ const dropOne = (reader) => {
108
+ if (reader.drop <= 0) {
109
+ return false;
110
+ }
111
+ reader.drop -= 1;
112
+ return true;
113
+ };
114
+ const write = (reader, frame, text) => {
115
+ if (frame.skip || dropOne(reader)) {
116
+ return;
117
+ }
118
+ flushBytes(reader);
119
+ reader.line += text;
120
+ };
121
+ const appendChar = (char, reader, frame) => {
122
+ if (char === "\r" || char === "\n") {
123
+ return;
124
+ }
125
+ write(reader, frame, char);
126
+ };
127
+ const CONTROL = /([a-zA-Z]+)(-?\d+)? ?/y;
128
+ const HEX = 16;
129
+ const readEscape = (source, position, reader, frame) => {
130
+ const next = source[position + 1] ?? "";
131
+ const literal = LITERALS[next];
132
+ if (literal !== undefined) {
133
+ write(reader, frame, literal);
134
+ return position + 2;
135
+ }
136
+ if (next === "'") {
137
+ const byte = Number.parseInt(source.slice(position + 2, position + 4), HEX);
138
+ if (!frame.skip && !dropOne(reader) && Number.isFinite(byte)) {
139
+ reader.bytes.push(byte);
140
+ }
141
+ return position + 4;
142
+ }
143
+ CONTROL.lastIndex = position + 1;
144
+ const match = CONTROL.exec(source);
145
+ if (match === null) {
146
+ return position + 2;
147
+ }
148
+ applyWord(match[1] ?? "", match[2] === undefined ? undefined : Number(match[2]), reader, frame);
149
+ return position + 1 + match[0].length;
150
+ };
151
+ const ROOT = { skip: false, ignorable: false };
152
+ export const rtfParagraphs = (source) => {
153
+ const reader = { out: [], line: "", bytes: [], drop: 0 };
154
+ const stack = [{ ...ROOT }];
155
+ let position = 0;
156
+ while (position < source.length) {
157
+ const frame = stack.at(-1) ?? ROOT;
158
+ const char = source[position] ?? "";
159
+ if (char === "\\") {
160
+ position = readEscape(source, position, reader, frame);
161
+ continue;
162
+ }
163
+ position += 1;
164
+ if (char === "{") {
165
+ stack.push({ skip: frame.skip, ignorable: false });
166
+ continue;
167
+ }
168
+ if (char === "}") {
169
+ flushBytes(reader);
170
+ stack.pop();
171
+ continue;
172
+ }
173
+ appendChar(char, reader, frame);
174
+ }
175
+ endLine(reader);
176
+ return reader.out;
177
+ };
178
+ export const rtfDeriver = {
179
+ name: "rtf",
180
+ version: 1,
181
+ derive: async (absPath) => {
182
+ const source = (await readFile(absPath)).toString("latin1");
183
+ const paragraphs = rtfParagraphs(source);
184
+ return { markdown: paragraphs.join("\n\n"), notes: paragraphs.length === 0 ? ["no text in this document"] : [] };
185
+ },
186
+ };
187
+ //# sourceMappingURL=rtf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtf.js","sourceRoot":"","sources":["../../../src/lib/derivers/rtf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Deriver } from "./deriver.js";
2
+ export declare const xlsxDeriver: Deriver;
3
+ //# sourceMappingURL=xlsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,OAAO,EAAE,MAAM,cAAc,CAAC;AAwCxD,eAAO,MAAM,WAAW,EAAE,OAwCzB,CAAC"}
@@ -0,0 +1,68 @@
1
+ const MAX_ROWS_PER_SHEET = 200;
2
+ const MAX_COLUMNS = 30;
3
+ const cellText = (value) => {
4
+ if (value === null || value === undefined) {
5
+ return "";
6
+ }
7
+ if (value instanceof Date) {
8
+ return value.toISOString();
9
+ }
10
+ if (typeof value === "object") {
11
+ if ("richText" in value) {
12
+ return value.richText.map((run) => run.text).join("");
13
+ }
14
+ if ("text" in value) {
15
+ return String(value.text);
16
+ }
17
+ if ("result" in value && value.result !== undefined) {
18
+ return cellText(value.result);
19
+ }
20
+ if ("error" in value) {
21
+ return String(value.error);
22
+ }
23
+ return "";
24
+ }
25
+ return String(value);
26
+ };
27
+ const tableRow = (cells) => `| ${cells.map((cell) => cell.replaceAll("|", "\\|").replaceAll(/\s+/g, " ").trim()).join(" | ")} |`;
28
+ export const xlsxDeriver = {
29
+ name: "xlsx",
30
+ version: 1,
31
+ derive: async (absPath) => {
32
+ const { default: excel } = await import("exceljs");
33
+ const workbook = new excel.Workbook();
34
+ await workbook.xlsx.readFile(absPath);
35
+ const notes = [];
36
+ const sections = [];
37
+ for (const sheet of workbook.worksheets) {
38
+ const rows = [];
39
+ let columnCap = 0;
40
+ sheet.eachRow({ includeEmpty: false }, (row) => {
41
+ if (rows.length > MAX_ROWS_PER_SHEET) {
42
+ return;
43
+ }
44
+ const values = row.values.slice(1, MAX_COLUMNS + 1).map(cellText);
45
+ columnCap = Math.max(columnCap, row.cellCount);
46
+ rows.push(values);
47
+ });
48
+ const kept = rows.slice(0, MAX_ROWS_PER_SHEET);
49
+ if (sheet.rowCount > MAX_ROWS_PER_SHEET) {
50
+ notes.push(`sheet "${sheet.name}": showing ${MAX_ROWS_PER_SHEET} of ${sheet.rowCount} rows`);
51
+ }
52
+ if (columnCap > MAX_COLUMNS) {
53
+ notes.push(`sheet "${sheet.name}": showing ${MAX_COLUMNS} of ${columnCap} columns`);
54
+ }
55
+ if (kept.length === 0) {
56
+ sections.push(`## ${sheet.name}\n\n(empty sheet)`);
57
+ continue;
58
+ }
59
+ const width = Math.max(...kept.map((row) => row.length));
60
+ const pad = (row) => [...row, ...Array.from({ length: width - row.length }, () => "")];
61
+ const [header, ...body] = kept.map(pad);
62
+ const table = [tableRow(header), tableRow(header.map(() => "---")), ...body.map(tableRow)].join("\n");
63
+ sections.push(`## ${sheet.name}\n\n${table}`);
64
+ }
65
+ return { markdown: sections.join("\n\n"), notes };
66
+ },
67
+ };
68
+ //# sourceMappingURL=xlsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx.js","sourceRoot":"","sources":["../../../src/lib/derivers/xlsx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const workspaceRoot: () => string | undefined;
2
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,SAGzC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const workspaceRoot = () => {
2
+ const root = process.env["WORKSPACE_ROOT"];
3
+ return root === undefined || root === "" ? undefined : root;
4
+ };
5
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,aAAa,GAAG,GAAuB,EAAE;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const numberParser: (raw: string) => number;
2
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/lib/flags.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,MAM1C,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const numberParser = (raw) => {
2
+ const value = Number(raw);
3
+ if (!Number.isFinite(value) || value < 0) {
4
+ throw new Error(`expected a non-negative number, got "${raw}"`);
5
+ }
6
+ return value;
7
+ };
8
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/lib/flags.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,GAAG,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type Format = "docx" | "xlsx" | "pptx" | "pdf" | "image" | "media" | "html" | "ipynb" | "odt" | "ods" | "odp" | "rtf" | "epub" | "archive" | "profile";
2
+ export declare const EXTENSION_FORMAT: Record<string, Format>;
3
+ export declare const isCandidatePath: (path: string) => boolean;
4
+ export declare const detectFormat: (absPath: string) => Promise<Format | undefined>;
5
+ export declare const gitAttributeLines: () => string[];
6
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/lib/formats.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AA6C9J,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqDnD,CAAC;AAGF,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,OAA0D,CAAC;AAM1G,eAAO,MAAM,YAAY,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAS9E,CAAC;AAUF,eAAO,MAAM,iBAAiB,QAAO,MAAM,EAIxB,CAAC"}