ag-psd 22.0.1 → 23.0.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/CHANGELOG.md +3 -0
- package/dist/additionalInfo.js +161 -120
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +180 -144
- package/dist/descriptor.d.ts +6 -0
- package/dist/descriptor.js +19 -17
- package/dist/descriptor.js.map +1 -1
- package/dist/psd.d.ts +9 -2
- package/dist/psd.js.map +1 -1
- package/dist/psdWriter.js +0 -7
- package/dist/psdWriter.js.map +1 -1
- package/dist-es/additionalInfo.js +161 -120
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/descriptor.d.ts +6 -0
- package/dist-es/descriptor.js +19 -17
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/psd.d.ts +9 -2
- package/dist-es/psd.js.map +1 -1
- package/dist-es/psdWriter.js +0 -7
- package/dist-es/psdWriter.js.map +1 -1
- package/package.json +1 -1
- package/src/additionalInfo.ts +165 -111
- package/src/descriptor.ts +21 -12
- package/src/psd.ts +10 -1
- package/src/psdWriter.ts +0 -7
|
@@ -388,12 +388,13 @@ addHandler('lmfx', function (target) { return target.effects !== undefined && ha
|
|
|
388
388
|
if (version !== 0)
|
|
389
389
|
throw new Error('Invalid lmfx version');
|
|
390
390
|
var desc = readVersionAndDescriptor(reader);
|
|
391
|
-
// console.log(require('util').inspect(
|
|
391
|
+
// console.log('READ', require('util').inspect(desc, false, 99, true));
|
|
392
392
|
// discard if read in 'lrFX' or 'lfx2' section
|
|
393
393
|
target.effects = parseEffects(desc, !!reader.logMissingFeatures);
|
|
394
394
|
skipBytes(reader, left());
|
|
395
395
|
}, function (writer, target, _, options) {
|
|
396
396
|
var desc = serializeEffects(target.effects, !!options.logMissingFeatures, true);
|
|
397
|
+
// console.log('WRITE', require('util').inspect(desc, false, 99, true));
|
|
397
398
|
writeUint32(writer, 0); // version
|
|
398
399
|
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
399
400
|
});
|
|
@@ -2125,130 +2126,170 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
|
|
|
2125
2126
|
writer.view.setUint32(dataOffset - 4, writer.offset - dataOffset, false);
|
|
2126
2127
|
}
|
|
2127
2128
|
});
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
var sizeOffset = writer.offset;
|
|
2208
|
-
writeSignature(writer, file.data ? 'liFD' : 'liFA');
|
|
2209
|
-
writeInt32(writer, version);
|
|
2210
|
-
if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
|
|
2211
|
-
throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
|
|
2212
|
-
}
|
|
2213
|
-
writePascalString(writer, file.id, 1);
|
|
2214
|
-
writeUnicodeStringWithPadding(writer, file.name || '');
|
|
2215
|
-
writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
|
|
2216
|
-
writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
|
|
2217
|
-
writeLength64(writer, file.data ? file.data.byteLength : 0);
|
|
2218
|
-
if (file.descriptor && file.descriptor.compInfo) {
|
|
2219
|
-
var desc = {
|
|
2220
|
-
compInfo: {
|
|
2221
|
-
compID: file.descriptor.compInfo.compID,
|
|
2222
|
-
originalCompID: file.descriptor.compInfo.originalCompID,
|
|
2223
|
-
}
|
|
2224
|
-
};
|
|
2225
|
-
writeUint8(writer, 1);
|
|
2226
|
-
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
2227
|
-
}
|
|
2228
|
-
else {
|
|
2229
|
-
writeUint8(writer, 0);
|
|
2129
|
+
function createLnkHandler(tag) {
|
|
2130
|
+
addHandler(tag, function (target) {
|
|
2131
|
+
var psd = target;
|
|
2132
|
+
if (!psd.linkedFiles || !psd.linkedFiles.length)
|
|
2133
|
+
return false;
|
|
2134
|
+
if (tag === 'lnkE' && !psd.linkedFiles.some(function (f) { return f.linkedFile; }))
|
|
2135
|
+
return false;
|
|
2136
|
+
return true;
|
|
2137
|
+
}, function (reader, target, left, _psd) {
|
|
2138
|
+
var psd = target;
|
|
2139
|
+
psd.linkedFiles = psd.linkedFiles || [];
|
|
2140
|
+
while (left() > 8) {
|
|
2141
|
+
var size = readLength64(reader);
|
|
2142
|
+
var startOffset = reader.offset;
|
|
2143
|
+
var type = readSignature(reader);
|
|
2144
|
+
// liFD - linked file data
|
|
2145
|
+
// liFE - linked file external
|
|
2146
|
+
// liFA - linked file alias
|
|
2147
|
+
var version = readInt32(reader);
|
|
2148
|
+
var id = readPascalString(reader, 1);
|
|
2149
|
+
var name_3 = readUnicodeString(reader);
|
|
2150
|
+
var fileType = readSignature(reader).trim(); // ' ' if empty
|
|
2151
|
+
var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
|
|
2152
|
+
var dataSize = readLength64(reader);
|
|
2153
|
+
var hasFileOpenDescriptor = readUint8(reader);
|
|
2154
|
+
var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
|
|
2155
|
+
var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
|
|
2156
|
+
var file = { id: id, name: name_3 };
|
|
2157
|
+
if (fileType)
|
|
2158
|
+
file.type = fileType;
|
|
2159
|
+
if (fileCreator)
|
|
2160
|
+
file.creator = fileCreator;
|
|
2161
|
+
if (fileOpenDescriptor) {
|
|
2162
|
+
file.descriptor = {
|
|
2163
|
+
compInfo: {
|
|
2164
|
+
compID: fileOpenDescriptor.compInfo.compID,
|
|
2165
|
+
originalCompID: fileOpenDescriptor.compInfo.originalCompID,
|
|
2166
|
+
}
|
|
2167
|
+
};
|
|
2168
|
+
}
|
|
2169
|
+
if (type === 'liFE' && version > 3) {
|
|
2170
|
+
var year = readInt32(reader);
|
|
2171
|
+
var month = readUint8(reader);
|
|
2172
|
+
var day = readUint8(reader);
|
|
2173
|
+
var hour = readUint8(reader);
|
|
2174
|
+
var minute = readUint8(reader);
|
|
2175
|
+
var seconds = readFloat64(reader);
|
|
2176
|
+
var wholeSeconds = Math.floor(seconds);
|
|
2177
|
+
var ms = (seconds - wholeSeconds) * 1000;
|
|
2178
|
+
file.time = (new Date(Date.UTC(year, month, day, hour, minute, wholeSeconds, ms))).toISOString();
|
|
2179
|
+
}
|
|
2180
|
+
var fileSize = type === 'liFE' ? readLength64(reader) : 0;
|
|
2181
|
+
if (type === 'liFA')
|
|
2182
|
+
skipBytes(reader, 8);
|
|
2183
|
+
if (type === 'liFD')
|
|
2184
|
+
file.data = readBytes(reader, dataSize); // seems to be a typo in docs
|
|
2185
|
+
if (version >= 5)
|
|
2186
|
+
file.childDocumentID = readUnicodeString(reader);
|
|
2187
|
+
if (version >= 6)
|
|
2188
|
+
file.assetModTime = readFloat64(reader);
|
|
2189
|
+
if (version >= 7)
|
|
2190
|
+
file.assetLockedState = readUint8(reader);
|
|
2191
|
+
if (type === 'liFE' && version === 2)
|
|
2192
|
+
file.data = readBytes(reader, fileSize);
|
|
2193
|
+
if (reader.skipLinkedFilesData)
|
|
2194
|
+
file.data = undefined;
|
|
2195
|
+
if (tag === 'lnkE') {
|
|
2196
|
+
file.linkedFile = {
|
|
2197
|
+
fileSize: fileSize,
|
|
2198
|
+
name: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor['Nm ']) || '',
|
|
2199
|
+
fullPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.fullPath) || '',
|
|
2200
|
+
originalPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.originalPath) || '',
|
|
2201
|
+
relativePath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.relPath) || '',
|
|
2202
|
+
};
|
|
2203
|
+
}
|
|
2204
|
+
psd.linkedFiles.push(file);
|
|
2205
|
+
while (size % 4)
|
|
2206
|
+
size++;
|
|
2207
|
+
reader.offset = startOffset + size;
|
|
2230
2208
|
}
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2209
|
+
skipBytes(reader, left()); // ?
|
|
2210
|
+
}, function (writer, target) {
|
|
2211
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
2212
|
+
var psd = target;
|
|
2213
|
+
for (var _i = 0, _k = psd.linkedFiles; _i < _k.length; _i++) {
|
|
2214
|
+
var file = _k[_i];
|
|
2215
|
+
if ((tag === 'lnkE') !== !!file.linkedFile)
|
|
2216
|
+
continue;
|
|
2217
|
+
var version = 2;
|
|
2218
|
+
if (file.assetLockedState != null)
|
|
2219
|
+
version = 7;
|
|
2220
|
+
else if (file.assetModTime != null)
|
|
2221
|
+
version = 6;
|
|
2222
|
+
else if (file.childDocumentID != null)
|
|
2223
|
+
version = 5;
|
|
2224
|
+
else if (tag == 'lnkE')
|
|
2225
|
+
version = 3;
|
|
2234
2226
|
writeLength64(writer, 0);
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2227
|
+
var sizeOffset = writer.offset;
|
|
2228
|
+
writeSignature(writer, (tag === 'lnkE') ? 'liFE' : (file.data ? 'liFD' : 'liFA'));
|
|
2229
|
+
writeInt32(writer, version);
|
|
2230
|
+
if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
|
|
2231
|
+
throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
|
|
2232
|
+
}
|
|
2233
|
+
writePascalString(writer, file.id, 1);
|
|
2234
|
+
writeUnicodeStringWithPadding(writer, file.name || '');
|
|
2235
|
+
writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
|
|
2236
|
+
writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
|
|
2237
|
+
writeLength64(writer, file.data ? file.data.byteLength : 0);
|
|
2238
|
+
if (file.descriptor && file.descriptor.compInfo) {
|
|
2239
|
+
var desc = {
|
|
2240
|
+
compInfo: {
|
|
2241
|
+
compID: file.descriptor.compInfo.compID,
|
|
2242
|
+
originalCompID: file.descriptor.compInfo.originalCompID,
|
|
2243
|
+
},
|
|
2244
|
+
};
|
|
2245
|
+
writeUint8(writer, 1);
|
|
2246
|
+
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
2247
|
+
}
|
|
2248
|
+
else {
|
|
2249
|
+
writeUint8(writer, 0);
|
|
2250
|
+
}
|
|
2251
|
+
if (tag === 'lnkE') {
|
|
2252
|
+
var desc = {
|
|
2253
|
+
descVersion: 2,
|
|
2254
|
+
'Nm ': (_b = (_a = file.linkedFile) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
|
|
2255
|
+
fullPath: (_d = (_c = file.linkedFile) === null || _c === void 0 ? void 0 : _c.fullPath) !== null && _d !== void 0 ? _d : '',
|
|
2256
|
+
originalPath: (_f = (_e = file.linkedFile) === null || _e === void 0 ? void 0 : _e.originalPath) !== null && _f !== void 0 ? _f : '',
|
|
2257
|
+
relPath: (_h = (_g = file.linkedFile) === null || _g === void 0 ? void 0 : _g.relativePath) !== null && _h !== void 0 ? _h : '',
|
|
2258
|
+
};
|
|
2259
|
+
writeVersionAndDescriptor(writer, '', 'ExternalFileLink', desc);
|
|
2260
|
+
var time = file.time ? new Date(file.time) : new Date();
|
|
2261
|
+
writeInt32(writer, time.getUTCFullYear());
|
|
2262
|
+
writeUint8(writer, time.getUTCMonth());
|
|
2263
|
+
writeUint8(writer, time.getUTCDate());
|
|
2264
|
+
writeUint8(writer, time.getUTCHours());
|
|
2265
|
+
writeUint8(writer, time.getUTCMinutes());
|
|
2266
|
+
writeFloat64(writer, time.getUTCSeconds() + time.getUTCMilliseconds() / 1000);
|
|
2267
|
+
}
|
|
2268
|
+
if (file.data) {
|
|
2269
|
+
writeBytes(writer, file.data);
|
|
2270
|
+
}
|
|
2271
|
+
else {
|
|
2272
|
+
writeLength64(writer, ((_j = file.linkedFile) === null || _j === void 0 ? void 0 : _j.fileSize) || 0);
|
|
2273
|
+
}
|
|
2274
|
+
if (version >= 5)
|
|
2275
|
+
writeUnicodeStringWithPadding(writer, file.childDocumentID || '');
|
|
2276
|
+
if (version >= 6)
|
|
2277
|
+
writeFloat64(writer, file.assetModTime || 0);
|
|
2278
|
+
if (version >= 7)
|
|
2279
|
+
writeUint8(writer, file.assetLockedState || 0);
|
|
2280
|
+
var size = writer.offset - sizeOffset;
|
|
2281
|
+
writer.view.setUint32(sizeOffset - 4, size, false); // write size
|
|
2282
|
+
while (size % 4) {
|
|
2283
|
+
size++;
|
|
2284
|
+
writeUint8(writer, 0);
|
|
2285
|
+
}
|
|
2246
2286
|
}
|
|
2247
|
-
}
|
|
2248
|
-
}
|
|
2287
|
+
});
|
|
2288
|
+
}
|
|
2289
|
+
createLnkHandler('lnk2');
|
|
2290
|
+
createLnkHandler('lnkE');
|
|
2249
2291
|
addHandlerAlias('lnkD', 'lnk2');
|
|
2250
2292
|
addHandlerAlias('lnk3', 'lnk2');
|
|
2251
|
-
addHandlerAlias('lnkE', 'lnk2');
|
|
2252
2293
|
addHandler('pths', hasKey('pathList'), function (reader, target) {
|
|
2253
2294
|
var desc = readVersionAndDescriptor(reader, true);
|
|
2254
2295
|
// console.log(require('util').inspect(desc, false, 99, true));
|