@intactfile/engines 0.2.0 → 0.3.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/dist/detect/index.d.ts +1 -1
- package/dist/detect/index.d.ts.map +1 -1
- package/dist/detect/index.js +77 -0
- package/dist/detect/index.js.map +1 -1
- package/dist/heic/format.d.ts +87 -0
- package/dist/heic/format.d.ts.map +1 -0
- package/dist/heic/format.js +241 -0
- package/dist/heic/format.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/office-legacy/diagnose.d.ts +24 -0
- package/dist/office-legacy/diagnose.d.ts.map +1 -0
- package/dist/office-legacy/diagnose.js +111 -0
- package/dist/office-legacy/diagnose.js.map +1 -0
- package/dist/office-legacy/format.d.ts +89 -0
- package/dist/office-legacy/format.d.ts.map +1 -0
- package/dist/office-legacy/format.js +281 -0
- package/dist/office-legacy/format.js.map +1 -0
- package/dist/office-legacy/index.d.ts +9 -0
- package/dist/office-legacy/index.d.ts.map +1 -0
- package/dist/office-legacy/index.js +18 -0
- package/dist/office-legacy/index.js.map +1 -0
- package/dist/office-legacy/rebuild.d.ts +8 -0
- package/dist/office-legacy/rebuild.d.ts.map +1 -0
- package/dist/office-legacy/rebuild.js +234 -0
- package/dist/office-legacy/rebuild.js.map +1 -0
- package/dist/office-legacy/repair.d.ts +40 -0
- package/dist/office-legacy/repair.d.ts.map +1 -0
- package/dist/office-legacy/repair.js +161 -0
- package/dist/office-legacy/repair.js.map +1 -0
- package/dist/psd/diagnose.d.ts +33 -0
- package/dist/psd/diagnose.d.ts.map +1 -0
- package/dist/psd/diagnose.js +176 -0
- package/dist/psd/diagnose.js.map +1 -0
- package/dist/psd/format.d.ts +106 -0
- package/dist/psd/format.d.ts.map +1 -0
- package/dist/psd/format.js +238 -0
- package/dist/psd/format.js.map +1 -0
- package/dist/psd/index.d.ts +8 -0
- package/dist/psd/index.d.ts.map +1 -0
- package/dist/psd/index.js +13 -0
- package/dist/psd/index.js.map +1 -0
- package/dist/psd/repair.d.ts +36 -0
- package/dist/psd/repair.d.ts.map +1 -0
- package/dist/psd/repair.js +451 -0
- package/dist/psd/repair.js.map +1 -0
- package/dist/raw/diagnose.d.ts +29 -0
- package/dist/raw/diagnose.d.ts.map +1 -0
- package/dist/raw/diagnose.js +95 -0
- package/dist/raw/diagnose.js.map +1 -0
- package/dist/raw/format.d.ts +47 -0
- package/dist/raw/format.d.ts.map +1 -0
- package/dist/raw/format.js +213 -0
- package/dist/raw/format.js.map +1 -0
- package/dist/raw/index.d.ts +7 -0
- package/dist/raw/index.d.ts.map +1 -0
- package/dist/raw/index.js +13 -0
- package/dist/raw/index.js.map +1 -0
- package/dist/raw/repair.d.ts +46 -0
- package/dist/raw/repair.d.ts.map +1 -0
- package/dist/raw/repair.js +94 -0
- package/dist/raw/repair.js.map +1 -0
- package/package.json +14 -2
package/dist/detect/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ByteSource } from '../byte-source.js';
|
|
2
2
|
import type { Confidence } from '../types.js';
|
|
3
|
-
export type FileFormat = 'zip' | 'pdf' | 'mp4' | 'mov' | 'jpeg' | 'png' | 'wav' | 'avi' | 'riff' | 'mkv' | 'webm' | 'mp3' | 'unknown';
|
|
3
|
+
export type FileFormat = 'zip' | 'pdf' | 'mp4' | 'mov' | 'jpeg' | 'png' | 'wav' | 'avi' | 'riff' | 'mkv' | 'webm' | 'mp3' | 'raw' | 'psd' | 'cfbf' | 'unknown';
|
|
4
4
|
export interface FormatDetection {
|
|
5
5
|
format: FileFormat;
|
|
6
6
|
/** Sub-container when known: docx/xlsx/pptx/ooxml/zip for zips, ftyp brand for mp4/mov, riff type for riff. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9C,MAAM,MAAM,UAAU,GAClB,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,+GAA+G;IAC/G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAoDD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CA4K5E"}
|
package/dist/detect/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { findRawStart, rawIdAt } from '../raw/format.js';
|
|
2
|
+
import { findSignature as findPsdSignature } from '../psd/format.js';
|
|
1
3
|
import { FLAG_DATA_DESCRIPTOR, LFH_FIXED_SIZE, SIG_EOCD, SIG_LFH, U32_MAX, parseLocalHeader, readU32, } from '../zip/format.js';
|
|
2
4
|
const SCAN_WINDOW = 64 * 1024;
|
|
3
5
|
function ascii(b, from, to) {
|
|
@@ -72,6 +74,25 @@ export async function detectFormat(src) {
|
|
|
72
74
|
if (head[0] === 0xff && head[1] === 0xd8 && head[2] === 0xff) {
|
|
73
75
|
return { format: 'jpeg', confidence: 'high', notes };
|
|
74
76
|
}
|
|
77
|
+
// RAW photo containers: TIFF-family (CR2/NEF/ARW/DNG/generic TIFF) + Fujifilm
|
|
78
|
+
// RAF at offset 0. CR3 (ISO-BMFF, ftyp "crx ") is handled in the ftyp branch.
|
|
79
|
+
{
|
|
80
|
+
const rawId = rawIdAt(head, 0);
|
|
81
|
+
if (rawId && rawId.container !== 'cr3') {
|
|
82
|
+
return { format: 'raw', container: rawId.container, confidence: 'high', notes };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// PSD / PSB (Photoshop) — "8BPS"; version (2 bytes) distinguishes psd vs psb.
|
|
86
|
+
if (head[0] === 0x38 && head[1] === 0x42 && head[2] === 0x50 && head[3] === 0x53) {
|
|
87
|
+
const version = (head[4] << 8) | head[5];
|
|
88
|
+
return { format: 'psd', container: version === 2 ? 'psb' : 'psd', confidence: 'high', notes };
|
|
89
|
+
}
|
|
90
|
+
// CFBF / OLE2 (legacy Office .doc/.xls/.ppt/.msg) — D0 CF 11 E0 A1 B1 1A E1.
|
|
91
|
+
if (head[0] === 0xd0 && head[1] === 0xcf && head[2] === 0x11 && head[3] === 0xe0 &&
|
|
92
|
+
head[4] === 0xa1 && head[5] === 0xb1 && head[6] === 0x1a && head[7] === 0xe1) {
|
|
93
|
+
const win = src.size <= head.length ? head : await src.read(0, Math.min(src.size, SCAN_WINDOW));
|
|
94
|
+
return { format: 'cfbf', container: sniffCfbfContainer(win), confidence: 'high', notes };
|
|
95
|
+
}
|
|
75
96
|
// RIFF (WAV / AVI)
|
|
76
97
|
if (ascii(head, 0, 4) === 'RIFF' && head.length >= 12) {
|
|
77
98
|
const kind = ascii(head, 8, 12);
|
|
@@ -107,6 +128,10 @@ export async function detectFormat(src) {
|
|
|
107
128
|
// MP4 / MOV: ftyp box at start
|
|
108
129
|
if (head.length >= 12 && ascii(head, 4, 8) === 'ftyp') {
|
|
109
130
|
const brand = ascii(head, 8, 12);
|
|
131
|
+
// Canon CR3 RAW is ISO-BMFF with the "crx " major brand.
|
|
132
|
+
if (brand === 'crx ') {
|
|
133
|
+
return { format: 'raw', container: 'cr3', confidence: 'high', notes };
|
|
134
|
+
}
|
|
110
135
|
const boxSize = readU32be(head, 0);
|
|
111
136
|
if (boxSize < 8 || boxSize > src.size)
|
|
112
137
|
notes.push('implausible ftyp box size');
|
|
@@ -129,6 +154,40 @@ export async function detectFormat(src) {
|
|
|
129
154
|
notes.push(`PDF header found at offset ${pdfAt} (garbage prefix)`);
|
|
130
155
|
return { format: 'pdf', confidence: pdfAt <= 1024 ? 'high' : 'medium', notes };
|
|
131
156
|
}
|
|
157
|
+
// RAW header after a garbage prefix (TIFF/RAF at any offset, or ftyp "crx ").
|
|
158
|
+
const rawStart = findRawStart(window);
|
|
159
|
+
if (rawStart && rawStart.offset > 0) {
|
|
160
|
+
notes.push(`RAW header found at offset ${rawStart.offset} (garbage prefix)`);
|
|
161
|
+
return {
|
|
162
|
+
format: 'raw',
|
|
163
|
+
container: rawStart.container,
|
|
164
|
+
confidence: rawStart.offset <= 1024 ? 'high' : 'medium',
|
|
165
|
+
notes,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// PSD/PSB header after a garbage prefix.
|
|
169
|
+
const psdAt = findPsdSignature(window, SCAN_WINDOW);
|
|
170
|
+
if (psdAt > 0) {
|
|
171
|
+
const version = (window[psdAt + 4] << 8) | window[psdAt + 5];
|
|
172
|
+
notes.push(`8BPS signature found at offset ${psdAt} (garbage prefix)`);
|
|
173
|
+
return {
|
|
174
|
+
format: 'psd',
|
|
175
|
+
container: version === 2 ? 'psb' : 'psd',
|
|
176
|
+
confidence: psdAt <= 1024 ? 'high' : 'medium',
|
|
177
|
+
notes,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
// CFBF header after a garbage prefix.
|
|
181
|
+
const cfbfAt = indexOfBytes(window, [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);
|
|
182
|
+
if (cfbfAt > 0) {
|
|
183
|
+
notes.push(`CFBF signature found at offset ${cfbfAt} (garbage prefix)`);
|
|
184
|
+
return {
|
|
185
|
+
format: 'cfbf',
|
|
186
|
+
container: sniffCfbfContainer(window),
|
|
187
|
+
confidence: cfbfAt <= 1024 ? 'high' : 'medium',
|
|
188
|
+
notes,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
132
191
|
const ftypAt = indexOfBytes(window, [0x66, 0x74, 0x79, 0x70]); // 'ftyp'
|
|
133
192
|
if (ftypAt >= 4) {
|
|
134
193
|
const brand = ascii(window, ftypAt + 4, ftypAt + 8);
|
|
@@ -156,4 +215,22 @@ export async function detectFormat(src) {
|
|
|
156
215
|
function readU32be(b, o) {
|
|
157
216
|
return ((b[o] << 24) | (b[o + 1] << 16) | (b[o + 2] << 8) | b[o + 3]) >>> 0;
|
|
158
217
|
}
|
|
218
|
+
/** Find an ASCII string encoded as UTF-16LE (how CFBF stores directory names). */
|
|
219
|
+
function utf16leIndexOf(b, s) {
|
|
220
|
+
const needle = [];
|
|
221
|
+
for (let i = 0; i < s.length; i++) {
|
|
222
|
+
needle.push(s.charCodeAt(i) & 0xff, 0);
|
|
223
|
+
}
|
|
224
|
+
return indexOfBytes(b, needle);
|
|
225
|
+
}
|
|
226
|
+
/** Sniff the legacy-Office document type from the UTF-16 stream names in the bytes. */
|
|
227
|
+
function sniffCfbfContainer(b) {
|
|
228
|
+
if (utf16leIndexOf(b, 'WordDocument') !== -1)
|
|
229
|
+
return 'doc';
|
|
230
|
+
if (utf16leIndexOf(b, 'Workbook') !== -1 || utf16leIndexOf(b, 'Book') !== -1)
|
|
231
|
+
return 'xls';
|
|
232
|
+
if (utf16leIndexOf(b, 'PowerPoint Document') !== -1)
|
|
233
|
+
return 'ppt';
|
|
234
|
+
return 'ole';
|
|
235
|
+
}
|
|
159
236
|
//# sourceMappingURL=index.js.map
|
package/dist/detect/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure ISOBMFF / HEIF primitives for the HEIC engine: FullBox-aware box walk,
|
|
3
|
+
* ftyp brands, the `meta` item model (iinf/infe, iloc, pitm, iref), and the
|
|
4
|
+
* `iloc` extent index with the byte positions needed to REWRITE offsets in
|
|
5
|
+
* place. No wasm, no HEVC decode — this engine repairs the container only.
|
|
6
|
+
*
|
|
7
|
+
* The decisive HEIC fact: Apple's `iloc` uses construction_method 0 = ABSOLUTE
|
|
8
|
+
* file offsets, so any byte shift ahead of `mdat` (a garbage prefix, a resized
|
|
9
|
+
* `meta`) invalidates every extent even though the pixel bytes are intact — and
|
|
10
|
+
* that is deterministically fixable by re-anchoring the offsets. Ref: ISO/IEC
|
|
11
|
+
* 14496-12 (ISOBMFF), 23008-12 (HEIF). See docs/engineering/engine-heic.md.
|
|
12
|
+
*/
|
|
13
|
+
export declare const u32be: (b: Uint8Array, o: number) => number;
|
|
14
|
+
export declare const u16be: (b: Uint8Array, o: number) => number;
|
|
15
|
+
/** 64-bit big-endian as a JS number (safe for our bounded file offsets). */
|
|
16
|
+
export declare const u64be: (b: Uint8Array, o: number) => number;
|
|
17
|
+
/** Read a big-endian unsigned of `size` bytes (0/4/8). */
|
|
18
|
+
export declare function readUint(b: Uint8Array, pos: number, size: number): number;
|
|
19
|
+
/** Write a big-endian unsigned of `size` bytes (0/4/8). */
|
|
20
|
+
export declare function writeUint(b: Uint8Array, pos: number, size: number, val: number): void;
|
|
21
|
+
export declare const fourcc: (b: Uint8Array, o: number) => string;
|
|
22
|
+
export interface Box {
|
|
23
|
+
type: string;
|
|
24
|
+
start: number;
|
|
25
|
+
headerSize: number;
|
|
26
|
+
payloadStart: number;
|
|
27
|
+
end: number;
|
|
28
|
+
size: number;
|
|
29
|
+
sizeIsToEof: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** Parse a box header at `off`. Returns null if it can't be a valid header. */
|
|
32
|
+
export declare function parseBox(b: Uint8Array, off: number): Box | null;
|
|
33
|
+
/** Walk boxes in [start,end); tolerant — stops on the first implausible header. */
|
|
34
|
+
export declare function walkBoxes(b: Uint8Array, start: number, end: number): Box[];
|
|
35
|
+
export declare function findNextBox(b: Uint8Array, from: number, limit: number): number;
|
|
36
|
+
export interface FtypInfo {
|
|
37
|
+
majorBrand: string;
|
|
38
|
+
compatible: string[];
|
|
39
|
+
}
|
|
40
|
+
export declare function parseFtyp(b: Uint8Array, box: Box): FtypInfo;
|
|
41
|
+
export type HeicKind = "heic" | "heif" | "avif" | null;
|
|
42
|
+
/** Classify an ISOBMFF image by its ftyp brands. */
|
|
43
|
+
export declare function classifyBrand(info: FtypInfo): HeicKind;
|
|
44
|
+
export interface ItemInfo {
|
|
45
|
+
id: number;
|
|
46
|
+
type: string;
|
|
47
|
+
}
|
|
48
|
+
export interface Extent {
|
|
49
|
+
/** file byte position of the extent_offset field (for rewrite). */
|
|
50
|
+
offsetPos: number;
|
|
51
|
+
offsetSize: number;
|
|
52
|
+
offset: number;
|
|
53
|
+
length: number;
|
|
54
|
+
}
|
|
55
|
+
export interface IlocItem {
|
|
56
|
+
id: number;
|
|
57
|
+
constructionMethod: number;
|
|
58
|
+
baseOffset: number;
|
|
59
|
+
baseOffsetPos: number;
|
|
60
|
+
baseOffsetSize: number;
|
|
61
|
+
extents: Extent[];
|
|
62
|
+
}
|
|
63
|
+
export interface HeicMeta {
|
|
64
|
+
metaBox: Box;
|
|
65
|
+
items: ItemInfo[];
|
|
66
|
+
iloc: IlocItem[];
|
|
67
|
+
primaryItemId: number | null;
|
|
68
|
+
/** iref graph: type → [{from, to[]}] (thmb/dimg/cdsc/auxl). */
|
|
69
|
+
refs: {
|
|
70
|
+
type: string;
|
|
71
|
+
from: number;
|
|
72
|
+
to: number[];
|
|
73
|
+
}[];
|
|
74
|
+
}
|
|
75
|
+
/** Locate the top-level meta box (a FullBox). */
|
|
76
|
+
export declare function findMeta(boxes: Box[]): Box | null;
|
|
77
|
+
/** Parse the children of a `meta` FullBox (4-byte version/flags precede them). */
|
|
78
|
+
export declare function parseMeta(b: Uint8Array, metaBox: Box): HeicMeta;
|
|
79
|
+
/** Parse the iloc index, capturing rewritable field positions per extent. */
|
|
80
|
+
export declare function parseIloc(b: Uint8Array, box: Box): IlocItem[];
|
|
81
|
+
/** Absolute file position + length of a method-0 extent. */
|
|
82
|
+
export declare const extentAbs: (item: IlocItem, ext: Extent) => {
|
|
83
|
+
pos: number;
|
|
84
|
+
end: number;
|
|
85
|
+
};
|
|
86
|
+
export declare const itemType: (meta: HeicMeta, id: number) => string;
|
|
87
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/heic/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure ISOBMFF / HEIF primitives for the HEIC engine: FullBox-aware box walk,
|
|
3
|
+
* ftyp brands, the `meta` item model (iinf/infe, iloc, pitm, iref), and the
|
|
4
|
+
* `iloc` extent index with the byte positions needed to REWRITE offsets in
|
|
5
|
+
* place. No wasm, no HEVC decode — this engine repairs the container only.
|
|
6
|
+
*
|
|
7
|
+
* The decisive HEIC fact: Apple's `iloc` uses construction_method 0 = ABSOLUTE
|
|
8
|
+
* file offsets, so any byte shift ahead of `mdat` (a garbage prefix, a resized
|
|
9
|
+
* `meta`) invalidates every extent even though the pixel bytes are intact — and
|
|
10
|
+
* that is deterministically fixable by re-anchoring the offsets. Ref: ISO/IEC
|
|
11
|
+
* 14496-12 (ISOBMFF), 23008-12 (HEIF). See docs/engineering/engine-heic.md.
|
|
12
|
+
*/
|
|
13
|
+
export const u32be = (b, o) => ((b[o] << 24) | (b[o + 1] << 16) | (b[o + 2] << 8) | b[o + 3]) >>> 0;
|
|
14
|
+
export const u16be = (b, o) => ((b[o] << 8) | b[o + 1]) >>> 0;
|
|
15
|
+
/** 64-bit big-endian as a JS number (safe for our bounded file offsets). */
|
|
16
|
+
export const u64be = (b, o) => u32be(b, o) * 0x1_0000_0000 + u32be(b, o + 4);
|
|
17
|
+
/** Read a big-endian unsigned of `size` bytes (0/4/8). */
|
|
18
|
+
export function readUint(b, pos, size) {
|
|
19
|
+
if (size === 0)
|
|
20
|
+
return 0;
|
|
21
|
+
if (size === 4)
|
|
22
|
+
return u32be(b, pos);
|
|
23
|
+
if (size === 8)
|
|
24
|
+
return u64be(b, pos);
|
|
25
|
+
let v = 0;
|
|
26
|
+
for (let i = 0; i < size; i++)
|
|
27
|
+
v = v * 256 + b[pos + i];
|
|
28
|
+
return v;
|
|
29
|
+
}
|
|
30
|
+
/** Write a big-endian unsigned of `size` bytes (0/4/8). */
|
|
31
|
+
export function writeUint(b, pos, size, val) {
|
|
32
|
+
for (let i = size - 1; i >= 0; i--) {
|
|
33
|
+
b[pos + i] = val & 0xff;
|
|
34
|
+
val = Math.floor(val / 256);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export const fourcc = (b, o) => String.fromCharCode(b[o], b[o + 1], b[o + 2], b[o + 3]);
|
|
38
|
+
/** Parse a box header at `off`. Returns null if it can't be a valid header. */
|
|
39
|
+
export function parseBox(b, off) {
|
|
40
|
+
if (off + 8 > b.length)
|
|
41
|
+
return null;
|
|
42
|
+
let size = u32be(b, off);
|
|
43
|
+
let headerSize = 8;
|
|
44
|
+
let sizeIsToEof = false;
|
|
45
|
+
if (size === 1) {
|
|
46
|
+
if (off + 16 > b.length)
|
|
47
|
+
return null;
|
|
48
|
+
size = u64be(b, off + 8);
|
|
49
|
+
headerSize = 16;
|
|
50
|
+
}
|
|
51
|
+
else if (size === 0) {
|
|
52
|
+
sizeIsToEof = true;
|
|
53
|
+
size = b.length - off;
|
|
54
|
+
}
|
|
55
|
+
const type = fourcc(b, off + 4);
|
|
56
|
+
const end = sizeIsToEof ? b.length : off + size;
|
|
57
|
+
return { type, start: off, headerSize, payloadStart: off + headerSize, end, size, sizeIsToEof };
|
|
58
|
+
}
|
|
59
|
+
const TYPE_RE = /^[A-Za-z0-9 ._-]{4}$/;
|
|
60
|
+
const isPrintableType = (b, o) => TYPE_RE.test(fourcc(b, o));
|
|
61
|
+
/** Walk boxes in [start,end); tolerant — stops on the first implausible header. */
|
|
62
|
+
export function walkBoxes(b, start, end) {
|
|
63
|
+
const out = [];
|
|
64
|
+
let pos = start;
|
|
65
|
+
while (pos + 8 <= end) {
|
|
66
|
+
const box = parseBox(b, pos);
|
|
67
|
+
if (!box || box.size < 8 || box.end > end || !isPrintableType(b, pos + 4))
|
|
68
|
+
break;
|
|
69
|
+
out.push(box);
|
|
70
|
+
if (box.sizeIsToEof)
|
|
71
|
+
break;
|
|
72
|
+
pos = box.end;
|
|
73
|
+
}
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/** Scan forward for the next known top-level 4CC (resync after a bad size). */
|
|
77
|
+
const KNOWN_TOP = new Set(["ftyp", "meta", "mdat", "free", "skip", "moov", "moof", "idat"]);
|
|
78
|
+
export function findNextBox(b, from, limit) {
|
|
79
|
+
const hi = Math.min(limit, b.length - 8);
|
|
80
|
+
for (let i = from; i <= hi; i++) {
|
|
81
|
+
if (isPrintableType(b, i + 4) && KNOWN_TOP.has(fourcc(b, i + 4)) && u32be(b, i) >= 8)
|
|
82
|
+
return i;
|
|
83
|
+
}
|
|
84
|
+
return -1;
|
|
85
|
+
}
|
|
86
|
+
export function parseFtyp(b, box) {
|
|
87
|
+
const majorBrand = fourcc(b, box.payloadStart);
|
|
88
|
+
const compatible = [];
|
|
89
|
+
for (let o = box.payloadStart + 8; o + 4 <= box.end; o += 4)
|
|
90
|
+
compatible.push(fourcc(b, o));
|
|
91
|
+
return { majorBrand, compatible };
|
|
92
|
+
}
|
|
93
|
+
const HEIF_BRANDS = new Set(["heic", "heix", "heim", "heis", "hevc", "hevx", "mif1", "msf1", "miaf", "heif"]);
|
|
94
|
+
const AVIF_BRANDS = new Set(["avif", "avis", "av01"]);
|
|
95
|
+
/** Classify an ISOBMFF image by its ftyp brands. */
|
|
96
|
+
export function classifyBrand(info) {
|
|
97
|
+
const all = [info.majorBrand, ...info.compatible];
|
|
98
|
+
if (all.some((x) => AVIF_BRANDS.has(x)))
|
|
99
|
+
return "avif";
|
|
100
|
+
if (info.majorBrand === "heic" || info.majorBrand === "heix")
|
|
101
|
+
return "heic";
|
|
102
|
+
if (all.some((x) => HEIF_BRANDS.has(x)))
|
|
103
|
+
return "heif";
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
/** Locate the top-level meta box (a FullBox). */
|
|
107
|
+
export function findMeta(boxes) {
|
|
108
|
+
return boxes.find((x) => x.type === "meta") ?? null;
|
|
109
|
+
}
|
|
110
|
+
/** Parse the children of a `meta` FullBox (4-byte version/flags precede them). */
|
|
111
|
+
export function parseMeta(b, metaBox) {
|
|
112
|
+
const childrenStart = metaBox.payloadStart + 4; // skip FullBox version+flags
|
|
113
|
+
const children = walkBoxes(b, childrenStart, metaBox.end);
|
|
114
|
+
const meta = { metaBox, items: [], iloc: [], primaryItemId: null, refs: [] };
|
|
115
|
+
for (const c of children) {
|
|
116
|
+
if (c.type === "pitm") {
|
|
117
|
+
const version = b[c.payloadStart];
|
|
118
|
+
meta.primaryItemId = version === 0 ? u16be(b, c.payloadStart + 4) : u32be(b, c.payloadStart + 4);
|
|
119
|
+
}
|
|
120
|
+
else if (c.type === "iinf") {
|
|
121
|
+
meta.items = parseIinf(b, c);
|
|
122
|
+
}
|
|
123
|
+
else if (c.type === "iloc") {
|
|
124
|
+
meta.iloc = parseIloc(b, c);
|
|
125
|
+
}
|
|
126
|
+
else if (c.type === "iref") {
|
|
127
|
+
meta.refs = parseIref(b, c);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return meta;
|
|
131
|
+
}
|
|
132
|
+
function parseIinf(b, box) {
|
|
133
|
+
const version = b[box.payloadStart];
|
|
134
|
+
let p = box.payloadStart + 4;
|
|
135
|
+
let count;
|
|
136
|
+
if (version === 0) {
|
|
137
|
+
count = u16be(b, p);
|
|
138
|
+
p += 2;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
count = u32be(b, p);
|
|
142
|
+
p += 4;
|
|
143
|
+
}
|
|
144
|
+
const items = [];
|
|
145
|
+
const infes = walkBoxes(b, p, box.end).filter((x) => x.type === "infe");
|
|
146
|
+
for (const infe of infes) {
|
|
147
|
+
const v = b[infe.payloadStart];
|
|
148
|
+
let ip = infe.payloadStart + 4;
|
|
149
|
+
let id;
|
|
150
|
+
if (v >= 2) {
|
|
151
|
+
id = v === 2 ? u16be(b, ip) : u32be(b, ip);
|
|
152
|
+
ip += v === 2 ? 2 : 4;
|
|
153
|
+
ip += 2; // protection_index
|
|
154
|
+
const type = fourcc(b, ip);
|
|
155
|
+
items.push({ id, type });
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// v0/v1: item_ID(16) then item_protection_index(16) then name/content-type
|
|
159
|
+
id = u16be(b, ip);
|
|
160
|
+
items.push({ id, type: "" });
|
|
161
|
+
}
|
|
162
|
+
if (items.length >= count && count > 0)
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
return items;
|
|
166
|
+
}
|
|
167
|
+
function parseIref(b, box) {
|
|
168
|
+
const version = b[box.payloadStart];
|
|
169
|
+
const idSize = version === 0 ? 2 : 4;
|
|
170
|
+
const refs = [];
|
|
171
|
+
for (const r of walkBoxes(b, box.payloadStart + 4, box.end)) {
|
|
172
|
+
let p = r.payloadStart;
|
|
173
|
+
const from = readUint(b, p, idSize);
|
|
174
|
+
p += idSize;
|
|
175
|
+
const n = u16be(b, p);
|
|
176
|
+
p += 2;
|
|
177
|
+
const to = [];
|
|
178
|
+
for (let i = 0; i < n && p + idSize <= r.end; i++) {
|
|
179
|
+
to.push(readUint(b, p, idSize));
|
|
180
|
+
p += idSize;
|
|
181
|
+
}
|
|
182
|
+
refs.push({ type: r.type, from, to });
|
|
183
|
+
}
|
|
184
|
+
return refs;
|
|
185
|
+
}
|
|
186
|
+
/** Parse the iloc index, capturing rewritable field positions per extent. */
|
|
187
|
+
export function parseIloc(b, box) {
|
|
188
|
+
const version = b[box.payloadStart];
|
|
189
|
+
let p = box.payloadStart + 4;
|
|
190
|
+
const offsetSize = (b[p] >> 4) & 0xf;
|
|
191
|
+
const lengthSize = b[p] & 0xf;
|
|
192
|
+
p += 1;
|
|
193
|
+
const baseOffsetSize = (b[p] >> 4) & 0xf;
|
|
194
|
+
const indexSize = version === 1 || version === 2 ? (b[p] & 0xf) : 0;
|
|
195
|
+
p += 1;
|
|
196
|
+
let itemCount;
|
|
197
|
+
if (version < 2) {
|
|
198
|
+
itemCount = u16be(b, p);
|
|
199
|
+
p += 2;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
itemCount = u32be(b, p);
|
|
203
|
+
p += 4;
|
|
204
|
+
}
|
|
205
|
+
const items = [];
|
|
206
|
+
for (let i = 0; i < itemCount && p < box.end; i++) {
|
|
207
|
+
const id = version < 2 ? u16be(b, p) : u32be(b, p);
|
|
208
|
+
p += version < 2 ? 2 : 4;
|
|
209
|
+
let constructionMethod = 0;
|
|
210
|
+
if (version === 1 || version === 2) {
|
|
211
|
+
constructionMethod = u16be(b, p) & 0xf;
|
|
212
|
+
p += 2;
|
|
213
|
+
}
|
|
214
|
+
p += 2; // data_reference_index
|
|
215
|
+
const baseOffsetPos = p;
|
|
216
|
+
const baseOffset = readUint(b, p, baseOffsetSize);
|
|
217
|
+
p += baseOffsetSize;
|
|
218
|
+
const extentCount = u16be(b, p);
|
|
219
|
+
p += 2;
|
|
220
|
+
const extents = [];
|
|
221
|
+
for (let e = 0; e < extentCount; e++) {
|
|
222
|
+
if (indexSize > 0)
|
|
223
|
+
p += indexSize; // extent_index (ignored)
|
|
224
|
+
const offsetPos = p;
|
|
225
|
+
const offset = readUint(b, p, offsetSize);
|
|
226
|
+
p += offsetSize;
|
|
227
|
+
const length = readUint(b, p, lengthSize);
|
|
228
|
+
p += lengthSize;
|
|
229
|
+
extents.push({ offsetPos, offsetSize, offset, length });
|
|
230
|
+
}
|
|
231
|
+
items.push({ id, constructionMethod, baseOffset, baseOffsetPos, baseOffsetSize, extents });
|
|
232
|
+
}
|
|
233
|
+
return items;
|
|
234
|
+
}
|
|
235
|
+
/** Absolute file position + length of a method-0 extent. */
|
|
236
|
+
export const extentAbs = (item, ext) => ({
|
|
237
|
+
pos: item.baseOffset + ext.offset,
|
|
238
|
+
end: item.baseOffset + ext.offset + ext.length,
|
|
239
|
+
});
|
|
240
|
+
export const itemType = (meta, id) => meta.items.find((x) => x.id === id)?.type ?? "";
|
|
241
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/heic/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,4 +26,12 @@ export { diagnosePdf } from './pdf/diagnose.js';
|
|
|
26
26
|
export type { PdfDiagnosis, PdfDamageClass } from './pdf/diagnose.js';
|
|
27
27
|
export { diagnoseVideo } from './video/diagnose.js';
|
|
28
28
|
export type { VideoDiagnosis, VideoDamageClass, VideoContainer, VideoBoxInfo } from './video/diagnose.js';
|
|
29
|
+
export { diagnoseRaw } from './raw/diagnose.js';
|
|
30
|
+
export type { RawDiagnosis, RawDamageClass, RawPreview } from './raw/diagnose.js';
|
|
31
|
+
export type { RawContainer, ByteOrder } from './raw/format.js';
|
|
32
|
+
export { diagnosePsd } from './psd/diagnose.js';
|
|
33
|
+
export type { PsdDiagnosis, PsdDamageClass } from './psd/diagnose.js';
|
|
34
|
+
export type { PsdHeader } from './psd/format.js';
|
|
35
|
+
export { diagnoseOffice } from './office-legacy/diagnose.js';
|
|
36
|
+
export type { OfficeDiagnosis, OfficeDamageClass } from './office-legacy/diagnose.js';
|
|
29
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEnF,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChF,eAAO,MAAM,SAAS;;;EAAmB,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAItE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEnF,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChF,eAAO,MAAM,SAAS;;;EAAmB,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIrE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAItE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAI1G,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,13 @@ export { diagnosePdf } from './pdf/diagnose.js';
|
|
|
18
18
|
// Video diagnosis is likewise pure own parsing (no libav.js in its import
|
|
19
19
|
// chain); remuxVideo stays behind './video'.
|
|
20
20
|
export { diagnoseVideo } from './video/diagnose.js';
|
|
21
|
+
// RAW diagnosis is pure byte-scanning (no codec in its import chain); repairRaw
|
|
22
|
+
// stays behind './raw'.
|
|
23
|
+
export { diagnoseRaw } from './raw/diagnose.js';
|
|
24
|
+
// PSD/PSB diagnosis is pure byte-scanning (no pixel decode in its chain);
|
|
25
|
+
// repairPsd stays behind './psd'.
|
|
26
|
+
export { diagnosePsd } from './psd/diagnose.js';
|
|
27
|
+
// Legacy Office (CFBF/OLE2) diagnosis is pure byte-scanning; repairOffice stays
|
|
28
|
+
// behind './office-legacy'.
|
|
29
|
+
export { diagnoseOffice } from './office-legacy/diagnose.js';
|
|
21
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE1D,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,gFAAgF;AAChF,6EAA6E;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,0EAA0E;AAC1E,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE1D,0EAA0E;AAC1E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,gFAAgF;AAChF,6EAA6E;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,0EAA0E;AAC1E,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,gFAAgF;AAChF,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,0EAA0E;AAC1E,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,gFAAgF;AAChF,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only CFBF diagnosis: classify container damage without opening the
|
|
3
|
+
* document with a real Office parser. Pure byte scanning, browser-safe.
|
|
4
|
+
*
|
|
5
|
+
* Honesty rule: repairing the container recovers the STREAMS; whether Word/
|
|
6
|
+
* Excel/PowerPoint fully opens the file depends on the content inside those
|
|
7
|
+
* streams, which this engine never inspects or repairs (v1 scope).
|
|
8
|
+
*/
|
|
9
|
+
import type { ByteSource } from "../byte-source.js";
|
|
10
|
+
import type { Confidence } from "../types.js";
|
|
11
|
+
export type OfficeDamageClass = "none" | "header-damage" | "fat-damage" | "directory-damage" | "truncated" | "content-damage" | "encrypted" | "not-cfbf" | "unknown";
|
|
12
|
+
export interface OfficeDiagnosis {
|
|
13
|
+
damageClass: OfficeDamageClass;
|
|
14
|
+
confidence: Confidence;
|
|
15
|
+
notes: string[];
|
|
16
|
+
majorVersion: number | null;
|
|
17
|
+
sectorSize: number | null;
|
|
18
|
+
container: "doc" | "xls" | "ppt" | "msg" | "ole" | null;
|
|
19
|
+
streamsFound: number;
|
|
20
|
+
prefixBytes: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function diagnoseOfficeBytes(input: Uint8Array): OfficeDiagnosis;
|
|
23
|
+
export declare function diagnoseOffice(src: ByteSource): Promise<OfficeDiagnosis>;
|
|
24
|
+
//# sourceMappingURL=diagnose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../src/office-legacy/diagnose.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB9C,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAiHtE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAE9E"}
|