@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.
Files changed (113) hide show
  1. package/dist/archive/index.d.ts +5 -13
  2. package/dist/archive/index.d.ts.map +1 -1
  3. package/dist/archive/index.js +4 -1
  4. package/dist/archive/index.js.map +1 -1
  5. package/dist/audio/index.d.ts +11 -0
  6. package/dist/audio/index.d.ts.map +1 -0
  7. package/dist/audio/index.js +11 -0
  8. package/dist/audio/index.js.map +1 -0
  9. package/dist/audio/mp3.d.ts +22 -0
  10. package/dist/audio/mp3.d.ts.map +1 -0
  11. package/dist/audio/mp3.js +141 -0
  12. package/dist/audio/mp3.js.map +1 -0
  13. package/dist/audio/wav.d.ts +23 -0
  14. package/dist/audio/wav.d.ts.map +1 -0
  15. package/dist/audio/wav.js +86 -0
  16. package/dist/audio/wav.js.map +1 -0
  17. package/dist/bytes-util.d.ts +17 -0
  18. package/dist/bytes-util.d.ts.map +1 -0
  19. package/dist/bytes-util.js +46 -0
  20. package/dist/bytes-util.js.map +1 -0
  21. package/dist/detect/index.d.ts +1 -1
  22. package/dist/detect/index.d.ts.map +1 -1
  23. package/dist/detect/index.js +77 -0
  24. package/dist/detect/index.js.map +1 -1
  25. package/dist/heic/format.d.ts +87 -0
  26. package/dist/heic/format.d.ts.map +1 -0
  27. package/dist/heic/format.js +241 -0
  28. package/dist/heic/format.js.map +1 -0
  29. package/dist/index.d.ts +14 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +14 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/jpeg/index.d.ts +2 -8
  34. package/dist/jpeg/index.d.ts.map +1 -1
  35. package/dist/jpeg/index.js +4 -1
  36. package/dist/jpeg/index.js.map +1 -1
  37. package/dist/license.d.ts +63 -0
  38. package/dist/license.d.ts.map +1 -0
  39. package/dist/license.js +167 -0
  40. package/dist/license.js.map +1 -0
  41. package/dist/office-legacy/diagnose.d.ts +24 -0
  42. package/dist/office-legacy/diagnose.d.ts.map +1 -0
  43. package/dist/office-legacy/diagnose.js +111 -0
  44. package/dist/office-legacy/diagnose.js.map +1 -0
  45. package/dist/office-legacy/format.d.ts +89 -0
  46. package/dist/office-legacy/format.d.ts.map +1 -0
  47. package/dist/office-legacy/format.js +281 -0
  48. package/dist/office-legacy/format.js.map +1 -0
  49. package/dist/office-legacy/index.d.ts +9 -0
  50. package/dist/office-legacy/index.d.ts.map +1 -0
  51. package/dist/office-legacy/index.js +18 -0
  52. package/dist/office-legacy/index.js.map +1 -0
  53. package/dist/office-legacy/rebuild.d.ts +8 -0
  54. package/dist/office-legacy/rebuild.d.ts.map +1 -0
  55. package/dist/office-legacy/rebuild.js +234 -0
  56. package/dist/office-legacy/rebuild.js.map +1 -0
  57. package/dist/office-legacy/repair.d.ts +40 -0
  58. package/dist/office-legacy/repair.d.ts.map +1 -0
  59. package/dist/office-legacy/repair.js +161 -0
  60. package/dist/office-legacy/repair.js.map +1 -0
  61. package/dist/pdf/index.d.ts +5 -6
  62. package/dist/pdf/index.d.ts.map +1 -1
  63. package/dist/pdf/index.js +4 -1
  64. package/dist/pdf/index.js.map +1 -1
  65. package/dist/png/index.d.ts +1 -7
  66. package/dist/png/index.d.ts.map +1 -1
  67. package/dist/png/index.js +3 -1
  68. package/dist/png/index.js.map +1 -1
  69. package/dist/psd/diagnose.d.ts +33 -0
  70. package/dist/psd/diagnose.d.ts.map +1 -0
  71. package/dist/psd/diagnose.js +176 -0
  72. package/dist/psd/diagnose.js.map +1 -0
  73. package/dist/psd/format.d.ts +106 -0
  74. package/dist/psd/format.d.ts.map +1 -0
  75. package/dist/psd/format.js +238 -0
  76. package/dist/psd/format.js.map +1 -0
  77. package/dist/psd/index.d.ts +8 -0
  78. package/dist/psd/index.d.ts.map +1 -0
  79. package/dist/psd/index.js +13 -0
  80. package/dist/psd/index.js.map +1 -0
  81. package/dist/psd/repair.d.ts +36 -0
  82. package/dist/psd/repair.d.ts.map +1 -0
  83. package/dist/psd/repair.js +451 -0
  84. package/dist/psd/repair.js.map +1 -0
  85. package/dist/raw/diagnose.d.ts +29 -0
  86. package/dist/raw/diagnose.d.ts.map +1 -0
  87. package/dist/raw/diagnose.js +95 -0
  88. package/dist/raw/diagnose.js.map +1 -0
  89. package/dist/raw/format.d.ts +47 -0
  90. package/dist/raw/format.d.ts.map +1 -0
  91. package/dist/raw/format.js +213 -0
  92. package/dist/raw/format.js.map +1 -0
  93. package/dist/raw/index.d.ts +7 -0
  94. package/dist/raw/index.d.ts.map +1 -0
  95. package/dist/raw/index.js +13 -0
  96. package/dist/raw/index.js.map +1 -0
  97. package/dist/raw/repair.d.ts +46 -0
  98. package/dist/raw/repair.d.ts.map +1 -0
  99. package/dist/raw/repair.js +94 -0
  100. package/dist/raw/repair.js.map +1 -0
  101. package/dist/sqlite/index.d.ts +8 -1
  102. package/dist/sqlite/index.d.ts.map +1 -1
  103. package/dist/sqlite/index.js +4 -1
  104. package/dist/sqlite/index.js.map +1 -1
  105. package/dist/video/avi.d.ts +23 -0
  106. package/dist/video/avi.d.ts.map +1 -0
  107. package/dist/video/avi.js +122 -0
  108. package/dist/video/avi.js.map +1 -0
  109. package/dist/video/index.d.ts +15 -2
  110. package/dist/video/index.d.ts.map +1 -1
  111. package/dist/video/index.js +10 -2
  112. package/dist/video/index.js.map +1 -1
  113. 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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"}
@@ -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 { remuxVideo, planRemux, outputContainerFor, REMUX_STRATEGIES, AVFMT_FLAG_GENPTS, AVFMT_FLAG_IGNIDX, } from './remux.js';
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 { reconstructMoov, chooseSampleSizes } from './reconstruct.js';
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;AACpG,OAAO,EACL,UAAU,EACV,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,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACtE,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"}
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"}
@@ -6,12 +6,20 @@
6
6
  * the package root.
7
7
  */
8
8
  export { diagnoseVideo } from './diagnose.js';
9
- export { remuxVideo, planRemux, outputContainerFor, REMUX_STRATEGIES, AVFMT_FLAG_GENPTS, AVFMT_FLAG_IGNIDX, } from './remux.js';
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 { reconstructMoov, chooseSampleSizes } from './reconstruct.js';
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
@@ -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,EACL,UAAU,EACV,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,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOtE,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
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.1.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": [