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.
@@ -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(info, false, 99, true));
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
- addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left) {
2129
- var psd = target;
2130
- psd.linkedFiles = psd.linkedFiles || [];
2131
- while (left() > 8) {
2132
- var size = readLength64(reader); // size
2133
- var startOffset = reader.offset;
2134
- var type = readSignature(reader);
2135
- // liFD - linked file data
2136
- // liFE - linked file external
2137
- // liFA - linked file alias
2138
- var version = readInt32(reader);
2139
- var id = readPascalString(reader, 1);
2140
- var name_3 = readUnicodeString(reader);
2141
- var fileType = readSignature(reader).trim(); // ' ' if empty
2142
- var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
2143
- var dataSize = readLength64(reader);
2144
- var hasFileOpenDescriptor = readUint8(reader);
2145
- var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
2146
- var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
2147
- var file = { id: id, name: name_3 };
2148
- if (fileType)
2149
- file.type = fileType;
2150
- if (fileCreator)
2151
- file.creator = fileCreator;
2152
- if (fileOpenDescriptor) {
2153
- file.descriptor = {
2154
- compInfo: {
2155
- compID: fileOpenDescriptor.compInfo.compID,
2156
- originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2157
- }
2158
- };
2159
- }
2160
- if (type === 'liFE' && version > 3) {
2161
- var year = readInt32(reader);
2162
- var month = readUint8(reader);
2163
- var day = readUint8(reader);
2164
- var hour = readUint8(reader);
2165
- var minute = readUint8(reader);
2166
- var seconds = readFloat64(reader);
2167
- var wholeSeconds = Math.floor(seconds);
2168
- var ms = (seconds - wholeSeconds) * 1000;
2169
- file.time = (new Date(year, month, day, hour, minute, wholeSeconds, ms)).toISOString();
2170
- }
2171
- var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2172
- if (type === 'liFA')
2173
- skipBytes(reader, 8);
2174
- if (type === 'liFD')
2175
- file.data = readBytes(reader, dataSize); // seems to be a typo in docs
2176
- if (version >= 5)
2177
- file.childDocumentID = readUnicodeString(reader);
2178
- if (version >= 6)
2179
- file.assetModTime = readFloat64(reader);
2180
- if (version >= 7)
2181
- file.assetLockedState = readUint8(reader);
2182
- if (type === 'liFE' && version === 2)
2183
- file.data = readBytes(reader, fileSize);
2184
- if (reader.skipLinkedFilesData)
2185
- file.data = undefined;
2186
- psd.linkedFiles.push(file);
2187
- linkedFileDescriptor;
2188
- while (size % 4)
2189
- size++;
2190
- reader.offset = startOffset + size;
2191
- }
2192
- skipBytes(reader, left()); // ?
2193
- }, function (writer, target) {
2194
- var psd = target;
2195
- for (var _i = 0, _a = psd.linkedFiles; _i < _a.length; _i++) {
2196
- var file = _a[_i];
2197
- var version = 2;
2198
- if (file.assetLockedState != null)
2199
- version = 7;
2200
- else if (file.assetModTime != null)
2201
- version = 6;
2202
- else if (file.childDocumentID != null)
2203
- version = 5;
2204
- // TODO: else if (file.time != null) version = 3; (only for liFE)
2205
- writeUint32(writer, 0);
2206
- writeUint32(writer, 0); // size
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
- if (file.data)
2232
- writeBytes(writer, file.data);
2233
- 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;
2234
2226
  writeLength64(writer, 0);
2235
- if (version >= 5)
2236
- writeUnicodeStringWithPadding(writer, file.childDocumentID || '');
2237
- if (version >= 6)
2238
- writeFloat64(writer, file.assetModTime || 0);
2239
- if (version >= 7)
2240
- writeUint8(writer, file.assetLockedState || 0);
2241
- var size = writer.offset - sizeOffset;
2242
- writer.view.setUint32(sizeOffset - 4, size, false); // write size
2243
- while (size % 4) {
2244
- size++;
2245
- 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
+ }
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));