ag-psd 31.0.0 → 31.0.2
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/.v8-cache/v24.13.1-x64-cf738c9d/03e19709 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/9ed80ba5 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
- package/CHANGELOG.md +3 -0
- package/dist/abr.js +2 -6
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.js +6 -6
- package/dist/additionalInfo.js.map +1 -1
- package/dist/ase.js +2 -0
- package/dist/ase.js.map +1 -1
- package/dist/bundle.js +222 -2282
- package/dist/descriptor.d.ts +2 -2
- package/dist/descriptor.js +4 -3
- package/dist/descriptor.js.map +1 -1
- package/dist/engineData.js +1 -1
- package/dist/helpers.d.ts +3 -1
- package/dist/helpers.js +1 -1
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +12 -7
- package/dist/imageResources.js.map +1 -1
- package/dist/jpeg.js +18 -6
- package/dist/jpeg.js.map +1 -1
- package/dist/psd.d.ts +2 -2
- package/dist/psd.js +2 -0
- package/dist/psd.js.map +1 -1
- package/dist/psdReader.js +49 -19
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.js +9 -3
- package/dist/psdWriter.js.map +1 -1
- package/dist/utf8.js +92 -81
- package/dist/utf8.js.map +1 -1
- package/dist-es/abr.js +2 -6
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.js +6 -6
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/ase.js +2 -0
- package/dist-es/ase.js.map +1 -1
- package/dist-es/descriptor.d.ts +2 -2
- package/dist-es/descriptor.js +4 -3
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/engineData.js +1 -1
- package/dist-es/helpers.d.ts +3 -1
- package/dist-es/helpers.js +1 -1
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +12 -7
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/jpeg.js +18 -6
- package/dist-es/jpeg.js.map +1 -1
- package/dist-es/psd.d.ts +2 -2
- package/dist-es/psd.js +2 -0
- package/dist-es/psd.js.map +1 -1
- package/dist-es/psdReader.js +49 -19
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.js +9 -3
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/utf8.js +92 -81
- package/dist-es/utf8.js.map +1 -1
- package/package.json +1 -1
- package/src/abr.ts +2 -4
- package/src/additionalInfo.ts +6 -6
- package/src/ase.ts +2 -1
- package/src/descriptor.ts +5 -4
- package/src/engineData.ts +1 -1
- package/src/helpers.ts +6 -3
- package/src/imageResources.ts +10 -6
- package/src/jpeg.ts +19 -7
- package/src/psd.ts +4 -2
- package/src/psdReader.ts +51 -16
- package/src/psdWriter.ts +11 -3
- package/src/utf8.ts +178 -168
package/src/utf8.ts
CHANGED
|
@@ -1,168 +1,178 @@
|
|
|
1
|
-
function charLengthInBytes(code: number): number {
|
|
2
|
-
if ((code & 0xffffff80) === 0) {
|
|
3
|
-
return 1;
|
|
4
|
-
} else if ((code & 0xfffff800) === 0) {
|
|
5
|
-
return 2;
|
|
6
|
-
} else if ((code & 0xffff0000) === 0) {
|
|
7
|
-
return 3;
|
|
8
|
-
} else {
|
|
9
|
-
return 4;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
buffer[offset
|
|
57
|
-
buffer[offset +
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
let
|
|
119
|
-
|
|
120
|
-
for (let i = 0; i < value.length;) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
1
|
+
function charLengthInBytes(code: number): number {
|
|
2
|
+
if ((code & 0xffffff80) === 0) {
|
|
3
|
+
return 1;
|
|
4
|
+
} else if ((code & 0xfffff800) === 0) {
|
|
5
|
+
return 2;
|
|
6
|
+
} else if ((code & 0xffff0000) === 0) {
|
|
7
|
+
return 3;
|
|
8
|
+
} else {
|
|
9
|
+
return 4;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Reads a scalar value at index `i`, replacing unpaired surrogates with U+FFFD,
|
|
14
|
+
// matching how TextEncoder converts a string to a sequence of Unicode scalar values.
|
|
15
|
+
function codePointAt(value: string, i: number): { code: number; size: number } {
|
|
16
|
+
const code = value.charCodeAt(i);
|
|
17
|
+
|
|
18
|
+
// high surrogate
|
|
19
|
+
if (code >= 0xd800 && code <= 0xdbff && (i + 1) < value.length) {
|
|
20
|
+
const extra = value.charCodeAt(i + 1);
|
|
21
|
+
|
|
22
|
+
// low surrogate
|
|
23
|
+
if (extra >= 0xdc00 && extra <= 0xdfff) {
|
|
24
|
+
return { code: ((code & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000, size: 2 };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// unpaired surrogate (lone high or lone low)
|
|
29
|
+
if (code >= 0xd800 && code <= 0xdfff) {
|
|
30
|
+
return { code: 0xfffd, size: 1 };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return { code, size: 1 };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function stringLengthInBytes(value: string): number {
|
|
37
|
+
let result = 0;
|
|
38
|
+
|
|
39
|
+
for (let i = 0; i < value.length;) {
|
|
40
|
+
const { code, size } = codePointAt(value, i);
|
|
41
|
+
result += charLengthInBytes(code);
|
|
42
|
+
i += size;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function writeCharacter(buffer: Uint8Array | Buffer, offset: number, code: number): number {
|
|
49
|
+
const length = charLengthInBytes(code);
|
|
50
|
+
|
|
51
|
+
switch (length) {
|
|
52
|
+
case 1:
|
|
53
|
+
buffer[offset] = code;
|
|
54
|
+
break;
|
|
55
|
+
case 2:
|
|
56
|
+
buffer[offset] = ((code >> 6) & 0x1f) | 0xc0;
|
|
57
|
+
buffer[offset + 1] = (code & 0x3f) | 0x80;
|
|
58
|
+
break;
|
|
59
|
+
case 3:
|
|
60
|
+
buffer[offset] = ((code >> 12) & 0x0f) | 0xe0;
|
|
61
|
+
buffer[offset + 1] = ((code >> 6) & 0x3f) | 0x80;
|
|
62
|
+
buffer[offset + 2] = (code & 0x3f) | 0x80;
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
buffer[offset] = ((code >> 18) & 0x07) | 0xf0;
|
|
66
|
+
buffer[offset + 1] = ((code >> 12) & 0x3f) | 0x80;
|
|
67
|
+
buffer[offset + 2] = ((code >> 6) & 0x3f) | 0x80;
|
|
68
|
+
buffer[offset + 3] = (code & 0x3f) | 0x80;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return length;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function encodeStringTo(buffer: Uint8Array | Buffer, offset: number, value: string): number {
|
|
76
|
+
for (let i = 0; i < value.length;) {
|
|
77
|
+
const { code, size } = codePointAt(value, i);
|
|
78
|
+
offset += writeCharacter(buffer, offset, code);
|
|
79
|
+
i += size;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return offset;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export function encodeString(value: string): Uint8Array {
|
|
86
|
+
if (value.length > 1000 && typeof TextEncoder !== 'undefined') {
|
|
87
|
+
return (new TextEncoder()).encode(value);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const buffer = new Uint8Array(stringLengthInBytes(value));
|
|
91
|
+
encodeStringTo(buffer, 0, value);
|
|
92
|
+
return buffer;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// UTF-8 decoder implementing the WHATWG Encoding Standard's non-fatal error handling,
|
|
96
|
+
// so malformed byte sequences are replaced with U+FFFD instead of throwing, matching TextDecoder.
|
|
97
|
+
export function decodeString(value: Uint8Array): string {
|
|
98
|
+
if (value.byteLength > 1000 && typeof TextDecoder !== 'undefined') {
|
|
99
|
+
return (new TextDecoder()).decode(value);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const result: string[] = [];
|
|
103
|
+
|
|
104
|
+
function pushCodePoint(code: number) {
|
|
105
|
+
if (code > 0xffff) {
|
|
106
|
+
code -= 0x10000;
|
|
107
|
+
result.push(String.fromCharCode((code >>> 10 & 0x3ff) | 0xd800));
|
|
108
|
+
code = 0xdc00 | (code & 0x3ff);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
result.push(String.fromCharCode(code));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let codePoint = 0;
|
|
115
|
+
let bytesSeen = 0;
|
|
116
|
+
let bytesNeeded = 0;
|
|
117
|
+
let lowerBoundary = 0x80;
|
|
118
|
+
let upperBoundary = 0xbf;
|
|
119
|
+
|
|
120
|
+
for (let i = 0; i < value.length; i++) {
|
|
121
|
+
const byte = value[i];
|
|
122
|
+
|
|
123
|
+
if (bytesNeeded === 0) {
|
|
124
|
+
if (byte <= 0x7f) {
|
|
125
|
+
pushCodePoint(byte);
|
|
126
|
+
} else if (byte >= 0xc2 && byte <= 0xdf) {
|
|
127
|
+
bytesNeeded = 1;
|
|
128
|
+
codePoint = byte & 0x1f;
|
|
129
|
+
} else if (byte >= 0xe0 && byte <= 0xef) {
|
|
130
|
+
if (byte === 0xe0) lowerBoundary = 0xa0;
|
|
131
|
+
if (byte === 0xed) upperBoundary = 0x9f;
|
|
132
|
+
bytesNeeded = 2;
|
|
133
|
+
codePoint = byte & 0x0f;
|
|
134
|
+
} else if (byte >= 0xf0 && byte <= 0xf4) {
|
|
135
|
+
if (byte === 0xf0) lowerBoundary = 0x90;
|
|
136
|
+
if (byte === 0xf4) upperBoundary = 0x8f;
|
|
137
|
+
bytesNeeded = 3;
|
|
138
|
+
codePoint = byte & 0x07;
|
|
139
|
+
} else {
|
|
140
|
+
// invalid leading byte
|
|
141
|
+
pushCodePoint(0xfffd);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (byte < lowerBoundary || byte > upperBoundary) {
|
|
148
|
+
// invalid continuation byte: emit replacement and reprocess this byte as a new sequence start
|
|
149
|
+
codePoint = 0;
|
|
150
|
+
bytesNeeded = 0;
|
|
151
|
+
bytesSeen = 0;
|
|
152
|
+
lowerBoundary = 0x80;
|
|
153
|
+
upperBoundary = 0xbf;
|
|
154
|
+
pushCodePoint(0xfffd);
|
|
155
|
+
i--;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
lowerBoundary = 0x80;
|
|
160
|
+
upperBoundary = 0xbf;
|
|
161
|
+
codePoint = (codePoint << 6) | (byte & 0x3f);
|
|
162
|
+
bytesSeen++;
|
|
163
|
+
|
|
164
|
+
if (bytesSeen !== bytesNeeded) continue;
|
|
165
|
+
|
|
166
|
+
pushCodePoint(codePoint);
|
|
167
|
+
codePoint = 0;
|
|
168
|
+
bytesNeeded = 0;
|
|
169
|
+
bytesSeen = 0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// truncated sequence at end of input
|
|
173
|
+
if (bytesNeeded !== 0) {
|
|
174
|
+
pushCodePoint(0xfffd);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return result.join('');
|
|
178
|
+
}
|