ag-psd 17.0.2 → 17.0.4

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/bundle.js CHANGED
@@ -1124,6 +1124,9 @@ addHandler('PlLd', hasKey('placedLayer'), function (reader, target, left) {
1124
1124
  var placed = target.placedLayer;
1125
1125
  (0, psdWriter_1.writeSignature)(writer, 'plcL');
1126
1126
  (0, psdWriter_1.writeInt32)(writer, 3); // version
1127
+ if (!placed.id || typeof placed.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(placed.id)) {
1128
+ throw new Error('Placed layer ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
1129
+ }
1127
1130
  (0, psdWriter_1.writePascalString)(writer, placed.id, 1);
1128
1131
  (0, psdWriter_1.writeInt32)(writer, 1); // pageNumber
1129
1132
  (0, psdWriter_1.writeInt32)(writer, 1); // totalPages
@@ -1134,9 +1137,10 @@ addHandler('PlLd', hasKey('placedLayer'), function (reader, target, left) {
1134
1137
  for (var i = 0; i < 8; i++)
1135
1138
  (0, psdWriter_1.writeFloat64)(writer, placed.transform[i]);
1136
1139
  (0, psdWriter_1.writeInt32)(writer, 0); // warp version
1137
- var isQuilt = placed.warp && isQuiltWarp(placed.warp);
1140
+ var warp = getWarpFromPlacedLayer(placed);
1141
+ var isQuilt = isQuiltWarp(warp);
1138
1142
  var type = isQuilt ? 'quiltWarp' : 'warp';
1139
- (0, descriptor_1.writeVersionAndDescriptor)(writer, '', type, encodeWarp(placed.warp || {}), type);
1143
+ (0, descriptor_1.writeVersionAndDescriptor)(writer, '', type, encodeWarp(warp), type);
1140
1144
  });
1141
1145
  function uint8ToFloat32(array) {
1142
1146
  return new Float32Array(array.buffer.slice(array.byteOffset), 0, array.byteLength / 4);
@@ -1960,6 +1964,39 @@ function serializeFilterFXItem(f) {
1960
1964
  }
1961
1965
  }
1962
1966
  // let t: any;
1967
+ function getWarpFromPlacedLayer(placed) {
1968
+ if (placed.warp)
1969
+ return placed.warp;
1970
+ if (!placed.width || !placed.height)
1971
+ throw new Error('You must provide width and height of the linked image in placedLayer');
1972
+ var w = placed.width;
1973
+ var h = placed.height;
1974
+ var x0 = 0, x1 = w / 3, x2 = w * 2 / 3, x3 = w;
1975
+ var y0 = 0, y1 = h / 3, y2 = h * 2 / 3, y3 = h;
1976
+ return {
1977
+ style: 'custom',
1978
+ value: 0,
1979
+ perspective: 0,
1980
+ perspectiveOther: 0,
1981
+ rotate: 'horizontal',
1982
+ bounds: {
1983
+ top: { value: 0, units: 'Pixels' },
1984
+ left: { value: 0, units: 'Pixels' },
1985
+ bottom: { value: h, units: 'Pixels' },
1986
+ right: { value: w, units: 'Pixels' },
1987
+ },
1988
+ uOrder: 4,
1989
+ vOrder: 4,
1990
+ customEnvelopeWarp: {
1991
+ meshPoints: [
1992
+ { x: x0, y: y0 }, { x: x1, y: y0 }, { x: x2, y: y0 }, { x: x3, y: y0 },
1993
+ { x: x0, y: y1 }, { x: x1, y: y1 }, { x: x2, y: y1 }, { x: x3, y: y1 },
1994
+ { x: x0, y: y2 }, { x: x1, y: y2 }, { x: x2, y: y2 }, { x: x3, y: y2 },
1995
+ { x: x0, y: y3 }, { x: x1, y: y3 }, { x: x2, y: y3 }, { x: x3, y: y3 },
1996
+ ],
1997
+ },
1998
+ };
1999
+ }
1963
2000
  addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
1964
2001
  if ((0, psdReader_1.readSignature)(reader) !== 'soLD')
1965
2002
  throw new Error("Invalid SoLd type");
@@ -2011,9 +2048,12 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
2011
2048
  (0, psdWriter_1.writeSignature)(writer, 'soLD');
2012
2049
  (0, psdWriter_1.writeInt32)(writer, 4); // version
2013
2050
  var placed = target.placedLayer;
2051
+ if (!placed.id || typeof placed.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(placed.id)) {
2052
+ throw new Error('Placed layer ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2053
+ }
2014
2054
  var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
2015
2055
  // quiltWarp: {} as any,
2016
- warp: encodeWarp(placed.warp || {}), 'Sz ': {
2056
+ warp: encodeWarp(getWarpFromPlacedLayer(placed)), 'Sz ': {
2017
2057
  _name: '',
2018
2058
  _classID: 'Pnt ',
2019
2059
  Wdth: placed.width || 0,
@@ -2281,7 +2321,10 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
2281
2321
  var sizeOffset = writer.offset;
2282
2322
  (0, psdWriter_1.writeSignature)(writer, file.data ? 'liFD' : 'liFA');
2283
2323
  (0, psdWriter_1.writeInt32)(writer, version);
2284
- (0, psdWriter_1.writePascalString)(writer, file.id || '', 1);
2324
+ if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2325
+ throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2326
+ }
2327
+ (0, psdWriter_1.writePascalString)(writer, file.id, 1);
2285
2328
  (0, psdWriter_1.writeUnicodeStringWithPadding)(writer, file.name || '');
2286
2329
  (0, psdWriter_1.writeSignature)(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2287
2330
  (0, psdWriter_1.writeSignature)(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
@@ -847,6 +847,9 @@ addHandler('PlLd', hasKey('placedLayer'), function (reader, target, left) {
847
847
  var placed = target.placedLayer;
848
848
  writeSignature(writer, 'plcL');
849
849
  writeInt32(writer, 3); // version
850
+ if (!placed.id || typeof placed.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(placed.id)) {
851
+ throw new Error('Placed layer ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
852
+ }
850
853
  writePascalString(writer, placed.id, 1);
851
854
  writeInt32(writer, 1); // pageNumber
852
855
  writeInt32(writer, 1); // totalPages
@@ -857,9 +860,10 @@ addHandler('PlLd', hasKey('placedLayer'), function (reader, target, left) {
857
860
  for (var i = 0; i < 8; i++)
858
861
  writeFloat64(writer, placed.transform[i]);
859
862
  writeInt32(writer, 0); // warp version
860
- var isQuilt = placed.warp && isQuiltWarp(placed.warp);
863
+ var warp = getWarpFromPlacedLayer(placed);
864
+ var isQuilt = isQuiltWarp(warp);
861
865
  var type = isQuilt ? 'quiltWarp' : 'warp';
862
- writeVersionAndDescriptor(writer, '', type, encodeWarp(placed.warp || {}), type);
866
+ writeVersionAndDescriptor(writer, '', type, encodeWarp(warp), type);
863
867
  });
864
868
  function uint8ToFloat32(array) {
865
869
  return new Float32Array(array.buffer.slice(array.byteOffset), 0, array.byteLength / 4);
@@ -1683,6 +1687,39 @@ function serializeFilterFXItem(f) {
1683
1687
  }
1684
1688
  }
1685
1689
  // let t: any;
1690
+ function getWarpFromPlacedLayer(placed) {
1691
+ if (placed.warp)
1692
+ return placed.warp;
1693
+ if (!placed.width || !placed.height)
1694
+ throw new Error('You must provide width and height of the linked image in placedLayer');
1695
+ var w = placed.width;
1696
+ var h = placed.height;
1697
+ var x0 = 0, x1 = w / 3, x2 = w * 2 / 3, x3 = w;
1698
+ var y0 = 0, y1 = h / 3, y2 = h * 2 / 3, y3 = h;
1699
+ return {
1700
+ style: 'custom',
1701
+ value: 0,
1702
+ perspective: 0,
1703
+ perspectiveOther: 0,
1704
+ rotate: 'horizontal',
1705
+ bounds: {
1706
+ top: { value: 0, units: 'Pixels' },
1707
+ left: { value: 0, units: 'Pixels' },
1708
+ bottom: { value: h, units: 'Pixels' },
1709
+ right: { value: w, units: 'Pixels' },
1710
+ },
1711
+ uOrder: 4,
1712
+ vOrder: 4,
1713
+ customEnvelopeWarp: {
1714
+ meshPoints: [
1715
+ { x: x0, y: y0 }, { x: x1, y: y0 }, { x: x2, y: y0 }, { x: x3, y: y0 },
1716
+ { x: x0, y: y1 }, { x: x1, y: y1 }, { x: x2, y: y1 }, { x: x3, y: y1 },
1717
+ { x: x0, y: y2 }, { x: x1, y: y2 }, { x: x2, y: y2 }, { x: x3, y: y2 },
1718
+ { x: x0, y: y3 }, { x: x1, y: y3 }, { x: x2, y: y3 }, { x: x3, y: y3 },
1719
+ ],
1720
+ },
1721
+ };
1722
+ }
1686
1723
  addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
1687
1724
  if (readSignature(reader) !== 'soLD')
1688
1725
  throw new Error("Invalid SoLd type");
@@ -1734,9 +1771,12 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
1734
1771
  writeSignature(writer, 'soLD');
1735
1772
  writeInt32(writer, 4); // version
1736
1773
  var placed = target.placedLayer;
1774
+ if (!placed.id || typeof placed.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(placed.id)) {
1775
+ throw new Error('Placed layer ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
1776
+ }
1737
1777
  var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
1738
1778
  // quiltWarp: {} as any,
1739
- warp: encodeWarp(placed.warp || {}), 'Sz ': {
1779
+ warp: encodeWarp(getWarpFromPlacedLayer(placed)), 'Sz ': {
1740
1780
  _name: '',
1741
1781
  _classID: 'Pnt ',
1742
1782
  Wdth: placed.width || 0,
@@ -2004,7 +2044,10 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
2004
2044
  var sizeOffset = writer.offset;
2005
2045
  writeSignature(writer, file.data ? 'liFD' : 'liFA');
2006
2046
  writeInt32(writer, version);
2007
- writePascalString(writer, file.id || '', 1);
2047
+ if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2048
+ throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2049
+ }
2050
+ writePascalString(writer, file.id, 1);
2008
2051
  writeUnicodeStringWithPadding(writer, file.name || '');
2009
2052
  writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2010
2053
  writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');