@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.
- package/LICENSE +21 -0
- package/README.md +46 -0
- package/dist/app.d.ts +2 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +43 -0
- package/dist/app.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/derive.command.d.ts +5 -0
- package/dist/commands/derive.command.d.ts.map +1 -0
- package/dist/commands/derive.command.js +53 -0
- package/dist/commands/derive.command.js.map +1 -0
- package/dist/commands/git-attributes.command.d.ts +3 -0
- package/dist/commands/git-attributes.command.d.ts.map +1 -0
- package/dist/commands/git-attributes.command.js +12 -0
- package/dist/commands/git-attributes.command.js.map +1 -0
- package/dist/commands/read.command.d.ts +3 -0
- package/dist/commands/read.command.d.ts.map +1 -0
- package/dist/commands/read.command.js +126 -0
- package/dist/commands/read.command.js.map +1 -0
- package/dist/commands/sweep.command.d.ts +3 -0
- package/dist/commands/sweep.command.d.ts.map +1 -0
- package/dist/commands/sweep.command.js +41 -0
- package/dist/commands/sweep.command.js.map +1 -0
- package/dist/lib/archives.d.ts +18 -0
- package/dist/lib/archives.d.ts.map +1 -0
- package/dist/lib/archives.js +133 -0
- package/dist/lib/archives.js.map +1 -0
- package/dist/lib/derive.d.ts +32 -0
- package/dist/lib/derive.d.ts.map +1 -0
- package/dist/lib/derive.js +99 -0
- package/dist/lib/derive.js.map +1 -0
- package/dist/lib/derivers/archive.d.ts +3 -0
- package/dist/lib/derivers/archive.d.ts.map +1 -0
- package/dist/lib/derivers/archive.js +132 -0
- package/dist/lib/derivers/archive.js.map +1 -0
- package/dist/lib/derivers/deriver.d.ts +13 -0
- package/dist/lib/derivers/deriver.d.ts.map +1 -0
- package/dist/lib/derivers/deriver.js +8 -0
- package/dist/lib/derivers/deriver.js.map +1 -0
- package/dist/lib/derivers/docx.d.ts +6 -0
- package/dist/lib/derivers/docx.d.ts.map +1 -0
- package/dist/lib/derivers/docx.js +29 -0
- package/dist/lib/derivers/docx.js.map +1 -0
- package/dist/lib/derivers/epub.d.ts +3 -0
- package/dist/lib/derivers/epub.d.ts.map +1 -0
- package/dist/lib/derivers/epub.js +102 -0
- package/dist/lib/derivers/epub.js.map +1 -0
- package/dist/lib/derivers/html.d.ts +3 -0
- package/dist/lib/derivers/html.d.ts.map +1 -0
- package/dist/lib/derivers/html.js +18 -0
- package/dist/lib/derivers/html.js.map +1 -0
- package/dist/lib/derivers/image.d.ts +3 -0
- package/dist/lib/derivers/image.d.ts.map +1 -0
- package/dist/lib/derivers/image.js +42 -0
- package/dist/lib/derivers/image.js.map +1 -0
- package/dist/lib/derivers/ipynb.d.ts +3 -0
- package/dist/lib/derivers/ipynb.d.ts.map +1 -0
- package/dist/lib/derivers/ipynb.js +75 -0
- package/dist/lib/derivers/ipynb.js.map +1 -0
- package/dist/lib/derivers/media.d.ts +3 -0
- package/dist/lib/derivers/media.d.ts.map +1 -0
- package/dist/lib/derivers/media.js +45 -0
- package/dist/lib/derivers/media.js.map +1 -0
- package/dist/lib/derivers/odp.d.ts +3 -0
- package/dist/lib/derivers/odp.d.ts.map +1 -0
- package/dist/lib/derivers/odp.js +41 -0
- package/dist/lib/derivers/odp.js.map +1 -0
- package/dist/lib/derivers/ods.d.ts +3 -0
- package/dist/lib/derivers/ods.d.ts.map +1 -0
- package/dist/lib/derivers/ods.js +86 -0
- package/dist/lib/derivers/ods.js.map +1 -0
- package/dist/lib/derivers/odt.d.ts +4 -0
- package/dist/lib/derivers/odt.d.ts.map +1 -0
- package/dist/lib/derivers/odt.js +77 -0
- package/dist/lib/derivers/odt.js.map +1 -0
- package/dist/lib/derivers/pdf-furniture.d.ts +7 -0
- package/dist/lib/derivers/pdf-furniture.d.ts.map +1 -0
- package/dist/lib/derivers/pdf-furniture.js +76 -0
- package/dist/lib/derivers/pdf-furniture.js.map +1 -0
- package/dist/lib/derivers/pdf.d.ts +4 -0
- package/dist/lib/derivers/pdf.d.ts.map +1 -0
- package/dist/lib/derivers/pdf.js +79 -0
- package/dist/lib/derivers/pdf.js.map +1 -0
- package/dist/lib/derivers/pptx.d.ts +4 -0
- package/dist/lib/derivers/pptx.d.ts.map +1 -0
- package/dist/lib/derivers/pptx.js +51 -0
- package/dist/lib/derivers/pptx.js.map +1 -0
- package/dist/lib/derivers/profile.d.ts +3 -0
- package/dist/lib/derivers/profile.d.ts.map +1 -0
- package/dist/lib/derivers/profile.js +115 -0
- package/dist/lib/derivers/profile.js.map +1 -0
- package/dist/lib/derivers/rtf.d.ts +4 -0
- package/dist/lib/derivers/rtf.d.ts.map +1 -0
- package/dist/lib/derivers/rtf.js +187 -0
- package/dist/lib/derivers/rtf.js.map +1 -0
- package/dist/lib/derivers/xlsx.d.ts +3 -0
- package/dist/lib/derivers/xlsx.d.ts.map +1 -0
- package/dist/lib/derivers/xlsx.js +68 -0
- package/dist/lib/derivers/xlsx.js.map +1 -0
- package/dist/lib/env.d.ts +2 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +5 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/flags.d.ts +2 -0
- package/dist/lib/flags.d.ts.map +1 -0
- package/dist/lib/flags.js +8 -0
- package/dist/lib/flags.js.map +1 -0
- package/dist/lib/formats.d.ts +6 -0
- package/dist/lib/formats.d.ts.map +1 -0
- package/dist/lib/formats.js +110 -0
- package/dist/lib/formats.js.map +1 -0
- package/dist/lib/sidecar.d.ts +30 -0
- package/dist/lib/sidecar.d.ts.map +1 -0
- package/dist/lib/sidecar.js +108 -0
- package/dist/lib/sidecar.js.map +1 -0
- package/dist/lib/sweep.d.ts +7 -0
- package/dist/lib/sweep.d.ts.map +1 -0
- package/dist/lib/sweep.js +56 -0
- package/dist/lib/sweep.js.map +1 -0
- package/dist/lib/tools.d.ts +2 -0
- package/dist/lib/tools.d.ts.map +1 -0
- package/dist/lib/tools.js +15 -0
- package/dist/lib/tools.js.map +1 -0
- package/dist/lib/xml.d.ts +3 -0
- package/dist/lib/xml.d.ts.map +1 -0
- package/dist/lib/xml.js +16 -0
- package/dist/lib/xml.js.map +1 -0
- package/dist/skill.d.ts +5 -0
- package/dist/skill.d.ts.map +1 -0
- package/dist/skill.js +75 -0
- package/dist/skill.js.map +1 -0
- package/dist/testing.d.ts +25 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +220 -0
- package/dist/testing.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +89 -0
- package/src/app.ts +48 -0
- package/src/cli.integration.test.ts +200 -0
- package/src/cli.ts +6 -0
- package/src/commands/derive.command.ts +59 -0
- package/src/commands/git-attributes.command.ts +13 -0
- package/src/commands/read.command.ts +158 -0
- package/src/commands/sweep.command.ts +48 -0
- package/src/derivers.integration.test.ts +415 -0
- package/src/lib/archives.test.ts +72 -0
- package/src/lib/archives.ts +209 -0
- package/src/lib/derive.ts +132 -0
- package/src/lib/derivers/archive.ts +168 -0
- package/src/lib/derivers/deriver.ts +33 -0
- package/src/lib/derivers/docx.test.ts +38 -0
- package/src/lib/derivers/docx.ts +44 -0
- package/src/lib/derivers/epub.ts +130 -0
- package/src/lib/derivers/html.ts +21 -0
- package/src/lib/derivers/image.ts +54 -0
- package/src/lib/derivers/ipynb.ts +113 -0
- package/src/lib/derivers/load-cost.test.ts +44 -0
- package/src/lib/derivers/media.ts +51 -0
- package/src/lib/derivers/odp.ts +52 -0
- package/src/lib/derivers/ods.ts +104 -0
- package/src/lib/derivers/odt.ts +101 -0
- package/src/lib/derivers/pdf-furniture.test.ts +60 -0
- package/src/lib/derivers/pdf-furniture.ts +121 -0
- package/src/lib/derivers/pdf.ts +102 -0
- package/src/lib/derivers/pptx.ts +61 -0
- package/src/lib/derivers/profile.ts +172 -0
- package/src/lib/derivers/rtf.ts +233 -0
- package/src/lib/derivers/xlsx.ts +82 -0
- package/src/lib/env.ts +7 -0
- package/src/lib/formats.test.ts +50 -0
- package/src/lib/formats.ts +141 -0
- package/src/lib/sidecar.test.ts +60 -0
- package/src/lib/sidecar.ts +156 -0
- package/src/lib/sweep.ts +72 -0
- package/src/lib/tools.ts +16 -0
- package/src/lib/xml.ts +20 -0
- package/src/skill.ts +90 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/lib/env.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,SAGzC,CAAC"}
|
package/dist/lib/env.js
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|