ag-psd 22.0.2 → 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.
@@ -2126,130 +2126,170 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
2126
2126
  writer.view.setUint32(dataOffset - 4, writer.offset - dataOffset, false);
2127
2127
  }
2128
2128
  });
2129
- addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left) {
2130
- var psd = target;
2131
- psd.linkedFiles = psd.linkedFiles || [];
2132
- while (left() > 8) {
2133
- var size = readLength64(reader); // size
2134
- var startOffset = reader.offset;
2135
- var type = readSignature(reader);
2136
- // liFD - linked file data
2137
- // liFE - linked file external
2138
- // liFA - linked file alias
2139
- var version = readInt32(reader);
2140
- var id = readPascalString(reader, 1);
2141
- var name_3 = readUnicodeString(reader);
2142
- var fileType = readSignature(reader).trim(); // ' ' if empty
2143
- var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
2144
- var dataSize = readLength64(reader);
2145
- var hasFileOpenDescriptor = readUint8(reader);
2146
- var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
2147
- var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
2148
- var file = { id: id, name: name_3 };
2149
- if (fileType)
2150
- file.type = fileType;
2151
- if (fileCreator)
2152
- file.creator = fileCreator;
2153
- if (fileOpenDescriptor) {
2154
- file.descriptor = {
2155
- compInfo: {
2156
- compID: fileOpenDescriptor.compInfo.compID,
2157
- originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2158
- }
2159
- };
2160
- }
2161
- if (type === 'liFE' && version > 3) {
2162
- var year = readInt32(reader);
2163
- var month = readUint8(reader);
2164
- var day = readUint8(reader);
2165
- var hour = readUint8(reader);
2166
- var minute = readUint8(reader);
2167
- var seconds = readFloat64(reader);
2168
- var wholeSeconds = Math.floor(seconds);
2169
- var ms = (seconds - wholeSeconds) * 1000;
2170
- file.time = (new Date(year, month, day, hour, minute, wholeSeconds, ms)).toISOString();
2171
- }
2172
- var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2173
- if (type === 'liFA')
2174
- skipBytes(reader, 8);
2175
- if (type === 'liFD')
2176
- file.data = readBytes(reader, dataSize); // seems to be a typo in docs
2177
- if (version >= 5)
2178
- file.childDocumentID = readUnicodeString(reader);
2179
- if (version >= 6)
2180
- file.assetModTime = readFloat64(reader);
2181
- if (version >= 7)
2182
- file.assetLockedState = readUint8(reader);
2183
- if (type === 'liFE' && version === 2)
2184
- file.data = readBytes(reader, fileSize);
2185
- if (reader.skipLinkedFilesData)
2186
- file.data = undefined;
2187
- psd.linkedFiles.push(file);
2188
- linkedFileDescriptor;
2189
- while (size % 4)
2190
- size++;
2191
- reader.offset = startOffset + size;
2192
- }
2193
- skipBytes(reader, left()); // ?
2194
- }, function (writer, target) {
2195
- var psd = target;
2196
- for (var _i = 0, _a = psd.linkedFiles; _i < _a.length; _i++) {
2197
- var file = _a[_i];
2198
- var version = 2;
2199
- if (file.assetLockedState != null)
2200
- version = 7;
2201
- else if (file.assetModTime != null)
2202
- version = 6;
2203
- else if (file.childDocumentID != null)
2204
- version = 5;
2205
- // TODO: else if (file.time != null) version = 3; (only for liFE)
2206
- writeUint32(writer, 0);
2207
- writeUint32(writer, 0); // size
2208
- var sizeOffset = writer.offset;
2209
- writeSignature(writer, file.data ? 'liFD' : 'liFA');
2210
- writeInt32(writer, version);
2211
- if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2212
- throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2213
- }
2214
- writePascalString(writer, file.id, 1);
2215
- writeUnicodeStringWithPadding(writer, file.name || '');
2216
- writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2217
- writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
2218
- writeLength64(writer, file.data ? file.data.byteLength : 0);
2219
- if (file.descriptor && file.descriptor.compInfo) {
2220
- var desc = {
2221
- compInfo: {
2222
- compID: file.descriptor.compInfo.compID,
2223
- originalCompID: file.descriptor.compInfo.originalCompID,
2224
- }
2225
- };
2226
- writeUint8(writer, 1);
2227
- writeVersionAndDescriptor(writer, '', 'null', desc);
2228
- }
2229
- else {
2230
- 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;
2231
2208
  }
2232
- if (file.data)
2233
- writeBytes(writer, file.data);
2234
- else
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;
2235
2226
  writeLength64(writer, 0);
2236
- if (version >= 5)
2237
- writeUnicodeStringWithPadding(writer, file.childDocumentID || '');
2238
- if (version >= 6)
2239
- writeFloat64(writer, file.assetModTime || 0);
2240
- if (version >= 7)
2241
- writeUint8(writer, file.assetLockedState || 0);
2242
- var size = writer.offset - sizeOffset;
2243
- writer.view.setUint32(sizeOffset - 4, size, false); // write size
2244
- while (size % 4) {
2245
- size++;
2246
- writeUint8(writer, 0);
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
+ }
2247
2286
  }
2248
- }
2249
- });
2287
+ });
2288
+ }
2289
+ createLnkHandler('lnk2');
2290
+ createLnkHandler('lnkE');
2250
2291
  addHandlerAlias('lnkD', 'lnk2');
2251
2292
  addHandlerAlias('lnk3', 'lnk2');
2252
- addHandlerAlias('lnkE', 'lnk2');
2253
2293
  addHandler('pths', hasKey('pathList'), function (reader, target) {
2254
2294
  var desc = readVersionAndDescriptor(reader, true);
2255
2295
  // console.log(require('util').inspect(desc, false, 99, true));