@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.
Files changed (65) hide show
  1. package/dist/detect/index.d.ts +1 -1
  2. package/dist/detect/index.d.ts.map +1 -1
  3. package/dist/detect/index.js +77 -0
  4. package/dist/detect/index.js.map +1 -1
  5. package/dist/heic/format.d.ts +87 -0
  6. package/dist/heic/format.d.ts.map +1 -0
  7. package/dist/heic/format.js +241 -0
  8. package/dist/heic/format.js.map +1 -0
  9. package/dist/index.d.ts +8 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +9 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/office-legacy/diagnose.d.ts +24 -0
  14. package/dist/office-legacy/diagnose.d.ts.map +1 -0
  15. package/dist/office-legacy/diagnose.js +111 -0
  16. package/dist/office-legacy/diagnose.js.map +1 -0
  17. package/dist/office-legacy/format.d.ts +89 -0
  18. package/dist/office-legacy/format.d.ts.map +1 -0
  19. package/dist/office-legacy/format.js +281 -0
  20. package/dist/office-legacy/format.js.map +1 -0
  21. package/dist/office-legacy/index.d.ts +9 -0
  22. package/dist/office-legacy/index.d.ts.map +1 -0
  23. package/dist/office-legacy/index.js +18 -0
  24. package/dist/office-legacy/index.js.map +1 -0
  25. package/dist/office-legacy/rebuild.d.ts +8 -0
  26. package/dist/office-legacy/rebuild.d.ts.map +1 -0
  27. package/dist/office-legacy/rebuild.js +234 -0
  28. package/dist/office-legacy/rebuild.js.map +1 -0
  29. package/dist/office-legacy/repair.d.ts +40 -0
  30. package/dist/office-legacy/repair.d.ts.map +1 -0
  31. package/dist/office-legacy/repair.js +161 -0
  32. package/dist/office-legacy/repair.js.map +1 -0
  33. package/dist/psd/diagnose.d.ts +33 -0
  34. package/dist/psd/diagnose.d.ts.map +1 -0
  35. package/dist/psd/diagnose.js +176 -0
  36. package/dist/psd/diagnose.js.map +1 -0
  37. package/dist/psd/format.d.ts +106 -0
  38. package/dist/psd/format.d.ts.map +1 -0
  39. package/dist/psd/format.js +238 -0
  40. package/dist/psd/format.js.map +1 -0
  41. package/dist/psd/index.d.ts +8 -0
  42. package/dist/psd/index.d.ts.map +1 -0
  43. package/dist/psd/index.js +13 -0
  44. package/dist/psd/index.js.map +1 -0
  45. package/dist/psd/repair.d.ts +36 -0
  46. package/dist/psd/repair.d.ts.map +1 -0
  47. package/dist/psd/repair.js +451 -0
  48. package/dist/psd/repair.js.map +1 -0
  49. package/dist/raw/diagnose.d.ts +29 -0
  50. package/dist/raw/diagnose.d.ts.map +1 -0
  51. package/dist/raw/diagnose.js +95 -0
  52. package/dist/raw/diagnose.js.map +1 -0
  53. package/dist/raw/format.d.ts +47 -0
  54. package/dist/raw/format.d.ts.map +1 -0
  55. package/dist/raw/format.js +213 -0
  56. package/dist/raw/format.js.map +1 -0
  57. package/dist/raw/index.d.ts +7 -0
  58. package/dist/raw/index.d.ts.map +1 -0
  59. package/dist/raw/index.js +13 -0
  60. package/dist/raw/index.js.map +1 -0
  61. package/dist/raw/repair.d.ts +46 -0
  62. package/dist/raw/repair.d.ts.map +1 -0
  63. package/dist/raw/repair.js +94 -0
  64. package/dist/raw/repair.js.map +1 -0
  65. package/package.json +14 -2
@@ -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;AAW9C,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,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,CA2G5E"}
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"}
@@ -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
@@ -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
@@ -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"}