@intactfile/engines 0.1.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/archive/index.d.ts +5 -13
- package/dist/archive/index.d.ts.map +1 -1
- package/dist/archive/index.js +4 -1
- package/dist/archive/index.js.map +1 -1
- package/dist/audio/index.d.ts +11 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +11 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/audio/mp3.d.ts +22 -0
- package/dist/audio/mp3.d.ts.map +1 -0
- package/dist/audio/mp3.js +141 -0
- package/dist/audio/mp3.js.map +1 -0
- package/dist/audio/wav.d.ts +23 -0
- package/dist/audio/wav.d.ts.map +1 -0
- package/dist/audio/wav.js +86 -0
- package/dist/audio/wav.js.map +1 -0
- package/dist/bytes-util.d.ts +17 -0
- package/dist/bytes-util.d.ts.map +1 -0
- package/dist/bytes-util.js +46 -0
- package/dist/bytes-util.js.map +1 -0
- 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 +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/jpeg/index.d.ts +2 -8
- package/dist/jpeg/index.d.ts.map +1 -1
- package/dist/jpeg/index.js +4 -1
- package/dist/jpeg/index.js.map +1 -1
- package/dist/license.d.ts +63 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +167 -0
- package/dist/license.js.map +1 -0
- 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/pdf/index.d.ts +5 -6
- package/dist/pdf/index.d.ts.map +1 -1
- package/dist/pdf/index.js +4 -1
- package/dist/pdf/index.js.map +1 -1
- package/dist/png/index.d.ts +1 -7
- package/dist/png/index.d.ts.map +1 -1
- package/dist/png/index.js +3 -1
- package/dist/png/index.js.map +1 -1
- 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/dist/sqlite/index.d.ts +8 -1
- package/dist/sqlite/index.d.ts.map +1 -1
- package/dist/sqlite/index.js +4 -1
- package/dist/sqlite/index.js.map +1 -1
- package/dist/video/avi.d.ts +23 -0
- package/dist/video/avi.d.ts.map +1 -0
- package/dist/video/avi.js +122 -0
- package/dist/video/avi.js.map +1 -0
- package/dist/video/index.d.ts +15 -2
- package/dist/video/index.d.ts.map +1 -1
- package/dist/video/index.js +10 -2
- package/dist/video/index.js.map +1 -1
- package/package.json +18 -2
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { indexOfAscii, matchAscii, readAll, u32le, writeAscii, writeU32le } from "../bytes-util.js";
|
|
2
|
+
const isHexDigit = (c) => (c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
|
|
3
|
+
/** A 'NNdc' / 'NNwb' style stream data chunk id. */
|
|
4
|
+
function isStreamCk(b, o) {
|
|
5
|
+
if (o + 4 > b.length)
|
|
6
|
+
return false;
|
|
7
|
+
if (!isHexDigit(b[o]) || !isHexDigit(b[o + 1]))
|
|
8
|
+
return false;
|
|
9
|
+
const t = String.fromCharCode(b[o + 2], b[o + 3]);
|
|
10
|
+
return t === "dc" || t === "db" || t === "wb" || t === "pc" || t === "tx";
|
|
11
|
+
}
|
|
12
|
+
export async function repairAvi(src) {
|
|
13
|
+
const buf = await readAll(src);
|
|
14
|
+
const notes = [];
|
|
15
|
+
const fail = (damageClass) => ({
|
|
16
|
+
video: new Uint8Array(0),
|
|
17
|
+
report: {
|
|
18
|
+
outcome: "failed",
|
|
19
|
+
damageClass,
|
|
20
|
+
notes,
|
|
21
|
+
bytesIn: buf.length,
|
|
22
|
+
bytesOut: 0,
|
|
23
|
+
streamsFound: 0,
|
|
24
|
+
indexEntriesRebuilt: 0,
|
|
25
|
+
truncated: false,
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
if (buf.length < 32)
|
|
29
|
+
return fail("too-small");
|
|
30
|
+
const moviPos = indexOfAscii(buf, "movi", 8);
|
|
31
|
+
if (moviPos < 0)
|
|
32
|
+
return fail("no-movi");
|
|
33
|
+
const moviDataStart = moviPos + 4;
|
|
34
|
+
const entries = [];
|
|
35
|
+
const streams = new Set();
|
|
36
|
+
let truncated = false;
|
|
37
|
+
let anyCompressed = false;
|
|
38
|
+
let lastGoodEnd = moviDataStart;
|
|
39
|
+
let p = moviDataStart;
|
|
40
|
+
while (p + 8 <= buf.length) {
|
|
41
|
+
if (matchAscii(buf, p, "idx1"))
|
|
42
|
+
break;
|
|
43
|
+
if (matchAscii(buf, p, "LIST")) {
|
|
44
|
+
// 'rec ' groups wrap chunks; descend one level, otherwise stop.
|
|
45
|
+
const type = String.fromCharCode(buf[p + 8], buf[p + 9], buf[p + 10], buf[p + 11]);
|
|
46
|
+
if (type === "rec ") {
|
|
47
|
+
p += 12;
|
|
48
|
+
lastGoodEnd = p;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
if (!isStreamCk(buf, p))
|
|
54
|
+
break;
|
|
55
|
+
const size = u32le(buf, p + 4);
|
|
56
|
+
const dataEnd = p + 8 + size;
|
|
57
|
+
if (dataEnd > buf.length) {
|
|
58
|
+
truncated = true; // last chunk cut off
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
const ckid = buf.subarray(p, p + 4);
|
|
62
|
+
const t = String.fromCharCode(ckid[2], ckid[3]);
|
|
63
|
+
if (t === "dc")
|
|
64
|
+
anyCompressed = true;
|
|
65
|
+
// Don't claim keyframes for compressed video (we can't know without
|
|
66
|
+
// decoding); uncompressed frames and audio are safe to flag.
|
|
67
|
+
const flags = t === "db" || t === "wb" ? 0x10 : 0;
|
|
68
|
+
entries.push({ ckid, flags, offset: p - moviPos, size });
|
|
69
|
+
streams.add(String.fromCharCode(ckid[0], ckid[1]));
|
|
70
|
+
lastGoodEnd = dataEnd + (size & 1); // chunks are word-aligned
|
|
71
|
+
p = lastGoodEnd;
|
|
72
|
+
}
|
|
73
|
+
if (entries.length === 0)
|
|
74
|
+
return fail("no-chunks");
|
|
75
|
+
const idx = new Uint8Array(8 + entries.length * 16);
|
|
76
|
+
writeAscii(idx, 0, "idx1");
|
|
77
|
+
writeU32le(idx, 4, entries.length * 16);
|
|
78
|
+
let o = 8;
|
|
79
|
+
for (const e of entries) {
|
|
80
|
+
idx.set(e.ckid, o);
|
|
81
|
+
writeU32le(idx, o + 4, e.flags);
|
|
82
|
+
writeU32le(idx, o + 8, e.offset);
|
|
83
|
+
writeU32le(idx, o + 12, e.size);
|
|
84
|
+
o += 16;
|
|
85
|
+
}
|
|
86
|
+
const head = buf.subarray(0, lastGoodEnd);
|
|
87
|
+
const out = new Uint8Array(head.length + idx.length);
|
|
88
|
+
out.set(head, 0);
|
|
89
|
+
out.set(idx, head.length);
|
|
90
|
+
// Fix sizes + signatures.
|
|
91
|
+
writeU32le(out, 4, out.length - 8);
|
|
92
|
+
if (moviPos >= 8 && matchAscii(out, moviPos - 8, "LIST")) {
|
|
93
|
+
writeU32le(out, moviPos - 4, 4 + (lastGoodEnd - moviDataStart));
|
|
94
|
+
}
|
|
95
|
+
if (!matchAscii(out, 0, "RIFF")) {
|
|
96
|
+
writeAscii(out, 0, "RIFF");
|
|
97
|
+
notes.push("rebuilt RIFF signature");
|
|
98
|
+
}
|
|
99
|
+
if (!matchAscii(out, 8, "AVI ")) {
|
|
100
|
+
writeAscii(out, 8, "AVI ");
|
|
101
|
+
notes.push("rebuilt AVI signature");
|
|
102
|
+
}
|
|
103
|
+
notes.unshift(`rebuilt idx1 with ${entries.length} index entries across ${streams.size} stream(s)`);
|
|
104
|
+
if (truncated)
|
|
105
|
+
notes.push("file was truncated mid-chunk — recovered up to the last complete frame");
|
|
106
|
+
if (anyCompressed)
|
|
107
|
+
notes.push("seek points not reconstructed for compressed video (playback restored)");
|
|
108
|
+
return {
|
|
109
|
+
video: out,
|
|
110
|
+
report: {
|
|
111
|
+
outcome: truncated ? "partial" : "success",
|
|
112
|
+
damageClass: truncated ? "truncated" : "index",
|
|
113
|
+
notes,
|
|
114
|
+
bytesIn: buf.length,
|
|
115
|
+
bytesOut: out.length,
|
|
116
|
+
streamsFound: streams.size,
|
|
117
|
+
indexEntriesRebuilt: entries.length,
|
|
118
|
+
truncated,
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=avi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avi.js","sourceRoot":"","sources":["../../src/video/avi.ts"],"names":[],"mappings":"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"}
|
package/dist/video/index.d.ts
CHANGED
|
@@ -7,15 +7,28 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { diagnoseVideo } from './diagnose.js';
|
|
9
9
|
export type { VideoDiagnosis, VideoDamageClass, VideoContainer, VideoBoxInfo } from './diagnose.js';
|
|
10
|
-
export
|
|
10
|
+
export declare const remuxVideo: (src: import("../byte-source.js").ByteSource, opts?: import("./remux.js").RemuxOptions | undefined) => Promise<{
|
|
11
|
+
video: Uint8Array;
|
|
12
|
+
report: import("./remux.js").VideoRepairReport;
|
|
13
|
+
}>;
|
|
14
|
+
export { planRemux, outputContainerFor, REMUX_STRATEGIES, AVFMT_FLAG_GENPTS, AVFMT_FLAG_IGNIDX, } from './remux.js';
|
|
11
15
|
export type { RemuxPlan, RemuxOptions, RemuxStrategy, RemuxStrategyId, RemuxAttempt, OutputContainer, VideoRepairOutcome, VideoRepairReport, } from './remux.js';
|
|
12
16
|
export { setLibAVLoader, resetLibAVHost, getLibAV } from './libav-host.js';
|
|
13
17
|
export type { LibAVLoader, LibAVWrapper, LibAVInstance } from './libav-host.js';
|
|
14
18
|
export { scanMp4Boxes, scanMkv, scanAvi, checkMoovIntegrity } from './format.js';
|
|
15
19
|
export type { Mp4Scan, Mp4Box, MkvScan, AviScan } from './format.js';
|
|
16
|
-
export
|
|
20
|
+
export declare const reconstructMoov: (broken: import("../byte-source.js").ByteSource, reference: import("../byte-source.js").ByteSource, opts?: import("./reconstruct.js").ReconstructOptions | undefined) => Promise<{
|
|
21
|
+
video: Uint8Array;
|
|
22
|
+
report: import("./reconstruct.js").VideoReconstructReport;
|
|
23
|
+
}>;
|
|
24
|
+
export { chooseSampleSizes } from './reconstruct.js';
|
|
17
25
|
export type { VideoReconstructReport, VideoReconstructOutcome, ReconstructOptions, ReconstructStrategy, } from './reconstruct.js';
|
|
18
26
|
export { setMp4BoxLoader, resetMp4BoxHost, getMp4Box, parseReferenceMoov, ReferenceParseError, } from './mp4box-host.js';
|
|
19
27
|
export type { Mp4BoxLoader, Mp4BoxModule } from './mp4box-host.js';
|
|
20
28
|
export type { MoovTemplate, MoovTemplateTrack } from './mp4-rebuild.js';
|
|
29
|
+
export declare const repairAvi: (src: import("../byte-source.js").ByteSource) => Promise<{
|
|
30
|
+
video: Uint8Array;
|
|
31
|
+
report: import("./avi.js").AviRepairReport;
|
|
32
|
+
}>;
|
|
33
|
+
export type { AviRepairReport, AviOutcome } from './avi.js';
|
|
21
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/video/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/video/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMpG,eAAO,MAAM,UAAU;;;EAAoB,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAKrE,eAAO,MAAM,eAAe;;;EAAyB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGxE,eAAO,MAAM,SAAS;;;EAAmB,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/video/index.js
CHANGED
|
@@ -6,12 +6,20 @@
|
|
|
6
6
|
* the package root.
|
|
7
7
|
*/
|
|
8
8
|
export { diagnoseVideo } from './diagnose.js';
|
|
9
|
-
|
|
9
|
+
import { gate } from '../license.js';
|
|
10
|
+
import { remuxVideo as _remuxVideo } from './remux.js';
|
|
11
|
+
import { reconstructMoov as _reconstructMoov } from './reconstruct.js';
|
|
12
|
+
import { repairAvi as _repairAvi } from './avi.js';
|
|
13
|
+
export const remuxVideo = gate(_remuxVideo);
|
|
14
|
+
export { planRemux, outputContainerFor, REMUX_STRATEGIES, AVFMT_FLAG_GENPTS, AVFMT_FLAG_IGNIDX, } from './remux.js';
|
|
10
15
|
export { setLibAVLoader, resetLibAVHost, getLibAV } from './libav-host.js';
|
|
11
16
|
export { scanMp4Boxes, scanMkv, scanAvi, checkMoovIntegrity } from './format.js';
|
|
12
17
|
// Untrunc-class moov reconstruction (reference-file, clean-room TS). Kept out
|
|
13
18
|
// of the pure root diagnose path; it only pulls in mp4box.js (a parser) on the
|
|
14
19
|
// first reconstructMoov call, via the injectable mp4box host.
|
|
15
|
-
export
|
|
20
|
+
export const reconstructMoov = gate(_reconstructMoov);
|
|
21
|
+
export { chooseSampleSizes } from './reconstruct.js';
|
|
16
22
|
export { setMp4BoxLoader, resetMp4BoxHost, getMp4Box, parseReferenceMoov, ReferenceParseError, } from './mp4box-host.js';
|
|
23
|
+
// AVI container repair (rebuild idx1 + fix sizes; pure TS, no libav).
|
|
24
|
+
export const repairAvi = gate(_repairAvi);
|
|
17
25
|
//# sourceMappingURL=index.js.map
|
package/dist/video/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/video/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/video/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAWpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGjF,8EAA8E;AAC9E,+EAA+E;AAC/E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAI1B,sEAAsE;AACtE,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intactfile/engines",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "IntactFile repair engines (SDK): repair corrupted video, ZIP/Office, PDF, JPEG, PNG, SQLite and RAR/7z entirely in-process. Runs in the browser and in Node — files never leave the machine.",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "IntactFile repair engines (SDK): repair corrupted video, ZIP/Office, PDF, JPEG, PNG, RAW photo, PSD, audio (WAV/MP3), SQLite and RAR/7z entirely in-process. Runs in the browser and in Node — files never leave the machine.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "UNLICENSED",
|
|
@@ -38,6 +38,22 @@
|
|
|
38
38
|
"./png": {
|
|
39
39
|
"types": "./dist/png/index.d.ts",
|
|
40
40
|
"default": "./dist/png/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./audio": {
|
|
43
|
+
"types": "./dist/audio/index.d.ts",
|
|
44
|
+
"default": "./dist/audio/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./raw": {
|
|
47
|
+
"types": "./dist/raw/index.d.ts",
|
|
48
|
+
"default": "./dist/raw/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./psd": {
|
|
51
|
+
"types": "./dist/psd/index.d.ts",
|
|
52
|
+
"default": "./dist/psd/index.js"
|
|
53
|
+
},
|
|
54
|
+
"./office-legacy": {
|
|
55
|
+
"types": "./dist/office-legacy/index.d.ts",
|
|
56
|
+
"default": "./dist/office-legacy/index.js"
|
|
41
57
|
}
|
|
42
58
|
},
|
|
43
59
|
"files": [
|