@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,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure PSD/PSB byte primitives: header parse/serialize, the four length-prefixed
|
|
3
|
+
* sections, image-resource (8BIM) walking, the embedded thumbnail, and the
|
|
4
|
+
* composite codec (raw / RLE-PackBits / ZIP). No wasm, no I/O — everything here
|
|
5
|
+
* is plain byte arithmetic, safe in the browser root export and unit-testable.
|
|
6
|
+
*
|
|
7
|
+
* A "repaired PSD" here means the FLATTENED composite is recovered — never the
|
|
8
|
+
* layer stack. See docs/engineering/engine-psd.md. All fields are big-endian.
|
|
9
|
+
*/
|
|
10
|
+
/** "8BPS" */
|
|
11
|
+
export const PSD_SIGNATURE = Uint8Array.of(0x38, 0x42, 0x50, 0x53);
|
|
12
|
+
/** PSB tops out at 300000²; cap pixels/bytes well below a memory bomb. */
|
|
13
|
+
export const DEFAULT_PSD_CAPS = {
|
|
14
|
+
maxWidth: 300_000,
|
|
15
|
+
maxHeight: 300_000,
|
|
16
|
+
maxPixels: 500_000_000,
|
|
17
|
+
maxCompositeBytes: 2 * 1024 * 1024 * 1024,
|
|
18
|
+
};
|
|
19
|
+
// ---- readers / writers -------------------------------------------------------
|
|
20
|
+
export const u16be = (b, o) => ((b[o] << 8) | b[o + 1]) >>> 0;
|
|
21
|
+
export const u32be = (b, o) => ((b[o] << 24) | (b[o + 1] << 16) | (b[o + 2] << 8) | b[o + 3]) >>> 0;
|
|
22
|
+
/** 64-bit big-endian as a JS number (safe for our bounded offsets). */
|
|
23
|
+
export const u64be = (b, o) => u32be(b, o) * 0x1_0000_0000 + u32be(b, o + 4);
|
|
24
|
+
export function writeU16be(b, o, v) {
|
|
25
|
+
b[o] = (v >>> 8) & 0xff;
|
|
26
|
+
b[o + 1] = v & 0xff;
|
|
27
|
+
}
|
|
28
|
+
export function writeU32be(b, o, v) {
|
|
29
|
+
b[o] = (v >>> 24) & 0xff;
|
|
30
|
+
b[o + 1] = (v >>> 16) & 0xff;
|
|
31
|
+
b[o + 2] = (v >>> 8) & 0xff;
|
|
32
|
+
b[o + 3] = v & 0xff;
|
|
33
|
+
}
|
|
34
|
+
export function hasSignatureAt(b, off) {
|
|
35
|
+
return b[off] === 0x38 && b[off + 1] === 0x42 && b[off + 2] === 0x50 && b[off + 3] === 0x53;
|
|
36
|
+
}
|
|
37
|
+
/** The "8B" fingerprint is present but the full "8BPS" magic is not exact. */
|
|
38
|
+
export function looksLikePsdAt(b, off) {
|
|
39
|
+
return b[off] === 0x38 && b[off + 1] === 0x42 && !hasSignatureAt(b, off);
|
|
40
|
+
}
|
|
41
|
+
/** First offset of a valid 8BPS signature within `window`, or -1. */
|
|
42
|
+
export function findSignature(b, window) {
|
|
43
|
+
const limit = Math.min(b.length - 4, window);
|
|
44
|
+
for (let i = 0; i <= limit; i++) {
|
|
45
|
+
if (b[i] === 0x38 && hasSignatureAt(b, i))
|
|
46
|
+
return i;
|
|
47
|
+
}
|
|
48
|
+
return -1;
|
|
49
|
+
}
|
|
50
|
+
const VALID_DEPTHS = new Set([1, 8, 16, 32]);
|
|
51
|
+
const VALID_MODES = new Set([0, 1, 2, 3, 4, 7, 8, 9]);
|
|
52
|
+
/** Parse and validate the 26-byte header at `off`. Returns null if implausible. */
|
|
53
|
+
export function parseHeader(b, off = 0) {
|
|
54
|
+
if (off + 26 > b.length)
|
|
55
|
+
return null;
|
|
56
|
+
if (!hasSignatureAt(b, off))
|
|
57
|
+
return null;
|
|
58
|
+
const version = u16be(b, off + 4);
|
|
59
|
+
if (version !== 1 && version !== 2)
|
|
60
|
+
return null;
|
|
61
|
+
const channels = u16be(b, off + 12);
|
|
62
|
+
const height = u32be(b, off + 14);
|
|
63
|
+
const width = u32be(b, off + 18);
|
|
64
|
+
const depth = u16be(b, off + 22);
|
|
65
|
+
const colorMode = u16be(b, off + 24);
|
|
66
|
+
if (channels < 1 || channels > 56)
|
|
67
|
+
return null;
|
|
68
|
+
if (!VALID_DEPTHS.has(depth))
|
|
69
|
+
return null;
|
|
70
|
+
if (!VALID_MODES.has(colorMode))
|
|
71
|
+
return null;
|
|
72
|
+
const maxDim = version === 2 ? 300_000 : 30_000;
|
|
73
|
+
if (width < 1 || height < 1 || width > maxDim || height > maxDim)
|
|
74
|
+
return null;
|
|
75
|
+
return { version: version, channels, height, width, depth, colorMode };
|
|
76
|
+
}
|
|
77
|
+
export function serializeHeader(h) {
|
|
78
|
+
const b = new Uint8Array(26);
|
|
79
|
+
b.set(PSD_SIGNATURE, 0);
|
|
80
|
+
writeU16be(b, 4, h.version);
|
|
81
|
+
// bytes 6..11 reserved zero (already zero)
|
|
82
|
+
writeU16be(b, 12, h.channels);
|
|
83
|
+
writeU32be(b, 14, h.height);
|
|
84
|
+
writeU32be(b, 18, h.width);
|
|
85
|
+
writeU16be(b, 22, h.depth);
|
|
86
|
+
writeU16be(b, 24, h.colorMode);
|
|
87
|
+
return b;
|
|
88
|
+
}
|
|
89
|
+
/** Bytes per scanline for one channel at this width/depth. */
|
|
90
|
+
export const rowBytes = (width, depth) => Math.ceil((width * depth) / 8);
|
|
91
|
+
/** Length of the color-mode data section forced by color mode (0 unless Indexed/Duotone). */
|
|
92
|
+
export function expectedColorModeLen(actualLen, colorMode) {
|
|
93
|
+
// Indexed (2) = 768-byte palette; Duotone (8) carries opaque data we preserve as-is.
|
|
94
|
+
if (colorMode === 2)
|
|
95
|
+
return 768;
|
|
96
|
+
if (colorMode === 8)
|
|
97
|
+
return actualLen; // preserve whatever is declared
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Walk the section chain from offset 26, trusting declared lengths. Records
|
|
102
|
+
* sections that dangle past EOF (the truncation / bad-length signal). Never
|
|
103
|
+
* decodes pixels.
|
|
104
|
+
*/
|
|
105
|
+
export function mapSections(b, header) {
|
|
106
|
+
const dangling = [];
|
|
107
|
+
const span = (name, offset, lenBytes) => {
|
|
108
|
+
const length = lenBytes === 8 ? u64be(b, offset) : u32be(b, offset);
|
|
109
|
+
const dataOffset = offset + lenBytes;
|
|
110
|
+
const end = dataOffset + length;
|
|
111
|
+
if (end > b.length)
|
|
112
|
+
dangling.push(name);
|
|
113
|
+
return { offset, dataOffset, length, end };
|
|
114
|
+
};
|
|
115
|
+
const colorMode = span('colorMode', 26, 4);
|
|
116
|
+
const cmEnd = Math.min(colorMode.end, b.length);
|
|
117
|
+
const imageResources = span('imageResources', cmEnd, 4);
|
|
118
|
+
const irEnd = Math.min(imageResources.end, b.length);
|
|
119
|
+
const layerAndMask = span('layerAndMask', irEnd, header.version === 2 ? 8 : 4);
|
|
120
|
+
const lmEnd = Math.min(layerAndMask.end, b.length);
|
|
121
|
+
const imageDataOffset = lmEnd;
|
|
122
|
+
return { header, colorMode, imageResources, layerAndMask, imageDataOffset, danglingSections: dangling };
|
|
123
|
+
}
|
|
124
|
+
const even = (n) => (n & 1 ? n + 1 : n);
|
|
125
|
+
/** Re-walk the self-delimiting 8BIM resource blocks; recompute the true length. */
|
|
126
|
+
export function walkImageResources(b, start, declaredLen) {
|
|
127
|
+
const blocks = [];
|
|
128
|
+
const hardEnd = Math.min(start + declaredLen, b.length);
|
|
129
|
+
let p = start;
|
|
130
|
+
let thumbnail;
|
|
131
|
+
while (p + 8 <= b.length) {
|
|
132
|
+
// Stop if we've clearly left the section (no more 8BIM) — self-delimiting walk.
|
|
133
|
+
if (!(b[p] === 0x38 && b[p + 1] === 0x42 && b[p + 2] === 0x49 && b[p + 3] === 0x4d))
|
|
134
|
+
break; // "8BIM"
|
|
135
|
+
const id = u16be(b, p + 4);
|
|
136
|
+
// Pascal name follows the 2-byte ID: 1-byte length + bytes, whole field padded to even.
|
|
137
|
+
let q = p + 6;
|
|
138
|
+
const nameLen = b[q];
|
|
139
|
+
q += 1 + nameLen;
|
|
140
|
+
if ((1 + nameLen) & 1)
|
|
141
|
+
q += 1; // pad to even
|
|
142
|
+
if (q + 4 > b.length)
|
|
143
|
+
break;
|
|
144
|
+
const dataLength = u32be(b, q);
|
|
145
|
+
const dataOffset = q + 4;
|
|
146
|
+
const paddedData = even(dataLength);
|
|
147
|
+
const blockEnd = dataOffset + paddedData;
|
|
148
|
+
if (dataOffset + dataLength > b.length)
|
|
149
|
+
break; // dangling block
|
|
150
|
+
if ((id === 1036 || id === 1033) && !thumbnail) {
|
|
151
|
+
const t = findJpeg(b, dataOffset, dataOffset + dataLength);
|
|
152
|
+
if (t)
|
|
153
|
+
thumbnail = { ...t, resourceId: id };
|
|
154
|
+
}
|
|
155
|
+
blocks.push({ id, offset: p, dataOffset, dataLength, totalLength: blockEnd - p });
|
|
156
|
+
p = blockEnd;
|
|
157
|
+
if (p > hardEnd && blocks.length > 0)
|
|
158
|
+
break; // walked past the declared section
|
|
159
|
+
}
|
|
160
|
+
return { blocks, trueLength: p - start, thumbnail };
|
|
161
|
+
}
|
|
162
|
+
/** Largest complete FFD8..FFD9 JPEG within [from,to). */
|
|
163
|
+
export function findJpeg(b, from, to) {
|
|
164
|
+
const hi = Math.min(to, b.length) - 1;
|
|
165
|
+
for (let i = from; i < hi; i++) {
|
|
166
|
+
if (b[i] === 0xff && b[i + 1] === 0xd8 && b[i + 2] === 0xff) {
|
|
167
|
+
for (let j = i + 2; j < hi; j++) {
|
|
168
|
+
if (b[j] === 0xff && b[j + 1] === 0xd9)
|
|
169
|
+
return { offset: i, length: j + 2 - i };
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
// ---- PackBits (RLE) ----------------------------------------------------------
|
|
177
|
+
/**
|
|
178
|
+
* Decode one PackBits scanline from b[pos..end) into up to `outLen` bytes.
|
|
179
|
+
* Returns the row and how many output bytes were produced (short if damaged).
|
|
180
|
+
*/
|
|
181
|
+
export function unpackBitsRow(b, pos, end, outLen) {
|
|
182
|
+
const row = new Uint8Array(outLen);
|
|
183
|
+
let o = 0;
|
|
184
|
+
let p = pos;
|
|
185
|
+
while (p < end && o < outLen) {
|
|
186
|
+
let n = b[p++];
|
|
187
|
+
if (n >= 128)
|
|
188
|
+
n -= 256;
|
|
189
|
+
if (n >= 0) {
|
|
190
|
+
const count = n + 1;
|
|
191
|
+
for (let i = 0; i < count && p < end && o < outLen; i++)
|
|
192
|
+
row[o++] = b[p++];
|
|
193
|
+
}
|
|
194
|
+
else if (n !== -128) {
|
|
195
|
+
const count = 1 - n;
|
|
196
|
+
if (p >= end)
|
|
197
|
+
break;
|
|
198
|
+
const val = b[p++];
|
|
199
|
+
for (let i = 0; i < count && o < outLen; i++)
|
|
200
|
+
row[o++] = val;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return { row, produced: o };
|
|
204
|
+
}
|
|
205
|
+
/** Encode one scanline with PackBits (Adobe/TIFF variant). */
|
|
206
|
+
export function packBitsRow(row) {
|
|
207
|
+
const out = [];
|
|
208
|
+
const n = row.length;
|
|
209
|
+
let i = 0;
|
|
210
|
+
while (i < n) {
|
|
211
|
+
// count a run of equal bytes
|
|
212
|
+
let runEnd = i + 1;
|
|
213
|
+
while (runEnd < n && row[runEnd] === row[i] && runEnd - i < 128)
|
|
214
|
+
runEnd++;
|
|
215
|
+
const runLen = runEnd - i;
|
|
216
|
+
if (runLen >= 2) {
|
|
217
|
+
out.push(257 - runLen); // (1 - runLen) as unsigned byte
|
|
218
|
+
out.push(row[i]);
|
|
219
|
+
i = runEnd;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// literal run until the next 2-byte repeat (or 128 max)
|
|
223
|
+
let litEnd = i + 1;
|
|
224
|
+
while (litEnd < n &&
|
|
225
|
+
litEnd - i < 128 &&
|
|
226
|
+
!(litEnd + 1 < n && row[litEnd] === row[litEnd + 1])) {
|
|
227
|
+
litEnd++;
|
|
228
|
+
}
|
|
229
|
+
const litLen = litEnd - i;
|
|
230
|
+
out.push(litLen - 1);
|
|
231
|
+
for (let k = i; k < litEnd; k++)
|
|
232
|
+
out.push(row[k]);
|
|
233
|
+
i = litEnd;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return Uint8Array.from(out);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/psd/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const repairPsd: (src: import("../byte-source.js").ByteSource, opts?: import("./repair.js").PsdRepairOptions | undefined) => Promise<import("./repair.js").PsdRepairResult>;
|
|
2
|
+
export { repairPsdBytes } from "./repair.js";
|
|
3
|
+
export type { PsdRepairOutcome, PsdRepairReport, PsdRepairOptions, PsdRepairResult, } from "./repair.js";
|
|
4
|
+
export { diagnosePsd, diagnosePsdBytes } from "./diagnose.js";
|
|
5
|
+
export type { PsdDiagnosis, PsdDamageClass } from "./diagnose.js";
|
|
6
|
+
export { PSD_SIGNATURE, DEFAULT_PSD_CAPS, parseHeader, serializeHeader, mapSections, walkImageResources, rowBytes, } from "./format.js";
|
|
7
|
+
export type { PsdHeader, PsdSafetyCaps, PsdCompression, PsdSections, ResourceWalk } from "./format.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/psd/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS,4JAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PSD/PSB engine subpath export (`@intactfile/engines/psd`). Pure TypeScript —
|
|
3
|
+
* pako (MIT) + fast-png (MIT), no wasm — so it is browser-safe. Recovers the
|
|
4
|
+
* FLATTENED composite (never the layer stack). diagnosePsd is pure and also
|
|
5
|
+
* promoted to the root barrel; repairPsd stays behind this subpath and is gated.
|
|
6
|
+
*/
|
|
7
|
+
import { gate } from "../license.js";
|
|
8
|
+
import { repairPsd as _repairPsd } from "./repair.js";
|
|
9
|
+
export const repairPsd = gate(_repairPsd);
|
|
10
|
+
export { repairPsdBytes } from "./repair.js";
|
|
11
|
+
export { diagnosePsd, diagnosePsdBytes } from "./diagnose.js";
|
|
12
|
+
export { PSD_SIGNATURE, DEFAULT_PSD_CAPS, parseHeader, serializeHeader, mapSections, walkImageResources, rowBytes, } from "./format.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/psd/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,QAAQ,GACT,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ByteSource } from "../byte-source.js";
|
|
2
|
+
import { type PsdDamageClass } from "./diagnose.js";
|
|
3
|
+
import { type PsdSafetyCaps } from "./format.js";
|
|
4
|
+
export type PsdRepairOutcome = "success" | "partial" | "failed";
|
|
5
|
+
export interface PsdRepairReport {
|
|
6
|
+
outcome: PsdRepairOutcome;
|
|
7
|
+
damageClass: PsdDamageClass;
|
|
8
|
+
actions: string[];
|
|
9
|
+
notes: string[];
|
|
10
|
+
bytesIn: number;
|
|
11
|
+
bytesOut: number;
|
|
12
|
+
width: number | null;
|
|
13
|
+
height: number | null;
|
|
14
|
+
channels: number | null;
|
|
15
|
+
depth: number | null;
|
|
16
|
+
colorMode: number | null;
|
|
17
|
+
/** False whenever the input carried layers that were dropped when flattening. */
|
|
18
|
+
layersRecovered: boolean;
|
|
19
|
+
rowsRecovered: number | null;
|
|
20
|
+
rowsExpected: number | null;
|
|
21
|
+
previewSource: "composite-png" | "thumbnail-jpeg" | null;
|
|
22
|
+
/** What the returned primary bytes are (psd file, png preview, or jpeg thumbnail). */
|
|
23
|
+
output: "psd" | "png" | "jpeg" | null;
|
|
24
|
+
verified: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface PsdRepairOptions {
|
|
27
|
+
caps?: PsdSafetyCaps;
|
|
28
|
+
}
|
|
29
|
+
export interface PsdRepairResult {
|
|
30
|
+
psd?: Uint8Array;
|
|
31
|
+
preview?: Uint8Array;
|
|
32
|
+
report: PsdRepairReport;
|
|
33
|
+
}
|
|
34
|
+
export declare function repairPsdBytes(input: Uint8Array, opts?: PsdRepairOptions): PsdRepairResult;
|
|
35
|
+
export declare function repairPsd(src: ByteSource, opts?: PsdRepairOptions): Promise<PsdRepairResult>;
|
|
36
|
+
//# sourceMappingURL=repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../src/psd/repair.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAGL,KAAK,aAAa,EAenB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iFAAiF;IACjF,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACzD,sFAAsF;IACtF,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AA8RD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,eAAe,CAiJ9F;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAEtG"}
|