@adobe/data 0.9.32 → 0.9.34
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/cache/functions/hashing/blob-to-hash.d.ts +0 -8
- package/dist/cache/functions/hashing/blob-to-hash.js +17 -46
- package/dist/cache/functions/hashing/blob-to-hash.js.map +1 -1
- package/dist/cache/functions/hashing/hashing.test.js +12 -209
- package/dist/cache/functions/hashing/hashing.test.js.map +1 -1
- package/dist/functions/serialization/register-typed-array-codecs.js +3 -1
- package/dist/functions/serialization/register-typed-array-codecs.js.map +1 -1
- package/dist/functions/serialization/serialize-to-blobs.js +3 -1
- package/dist/functions/serialization/serialize-to-blobs.js.map +1 -1
- package/dist/functions/serialization/serialize-to-json.js +4 -3
- package/dist/functions/serialization/serialize-to-json.js.map +1 -1
- package/dist/internal/array-buffer-like/index.d.ts +1 -0
- package/dist/internal/array-buffer-like/index.js +1 -0
- package/dist/internal/array-buffer-like/index.js.map +1 -1
- package/dist/internal/array-buffer-like/to-array-buffer-backed.d.ts +5 -0
- package/dist/internal/array-buffer-like/to-array-buffer-backed.js +14 -0
- package/dist/internal/array-buffer-like/to-array-buffer-backed.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/typed-buffer/register-typed-buffer-codecs.js +3 -1
- package/dist/typed-buffer/register-typed-buffer-codecs.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,9 +1 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a Blob to a hash using the blob content and type using SHA-256.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Converts a Blob to a SHA-256 hash.
|
|
6
|
-
* • Uses the streaming `crypto.DigestStream` API when present (no large buffers).
|
|
7
|
-
* • Falls back to the original buffer-based approach otherwise.
|
|
8
|
-
*/
|
|
9
1
|
export declare function blobToHash(blob: Blob): Promise<string>;
|
|
@@ -1,52 +1,23 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
-
import {
|
|
3
|
-
import { bufferToHash } from "./buffer-to-hash.js";
|
|
4
|
-
/**
|
|
5
|
-
* Converts a Blob to a hash using the blob content and type using SHA-256.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Converts a Blob to a SHA-256 hash.
|
|
9
|
-
* • Uses the streaming `crypto.DigestStream` API when present (no large buffers).
|
|
10
|
-
* • Falls back to the original buffer-based approach otherwise.
|
|
11
|
-
*/
|
|
2
|
+
import { createSHA256 } from "hash-wasm";
|
|
12
3
|
export async function blobToHash(blob) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
done = result.done;
|
|
29
|
-
if (!done) {
|
|
30
|
-
await writer.write(result.value);
|
|
31
|
-
}
|
|
4
|
+
const hasher = await createSHA256();
|
|
5
|
+
hasher.init();
|
|
6
|
+
// Encode MIME type as UTF-16LE
|
|
7
|
+
const tCodes = new Uint16Array(blob.type.length);
|
|
8
|
+
for (let i = 0; i < blob.type.length; i++) {
|
|
9
|
+
tCodes[i] = blob.type.charCodeAt(i);
|
|
10
|
+
}
|
|
11
|
+
hasher.update(new Uint8Array(tCodes.buffer));
|
|
12
|
+
const reader = blob.stream().getReader();
|
|
13
|
+
let done = false;
|
|
14
|
+
while (!done) {
|
|
15
|
+
const result = await reader.read();
|
|
16
|
+
done = result.done === true;
|
|
17
|
+
if (!done && result.value != null) {
|
|
18
|
+
hasher.update(result.value);
|
|
32
19
|
}
|
|
33
|
-
await writer.close();
|
|
34
|
-
const hashBuf = await digestStream.digest;
|
|
35
|
-
return arrayBufferToHex(hashBuf);
|
|
36
20
|
}
|
|
37
|
-
|
|
38
|
-
const { type } = blob;
|
|
39
|
-
const typeByteLength = type.length * 2;
|
|
40
|
-
const buffer = new ArrayBuffer(typeByteLength + blob.size);
|
|
41
|
-
// Write the MIME-type (UTF-16LE) into the first part of the buffer
|
|
42
|
-
const charView = new Uint16Array(buffer, 0, type.length);
|
|
43
|
-
for (let i = 0; i < type.length; i++)
|
|
44
|
-
charView[i] = type.charCodeAt(i);
|
|
45
|
-
// Append the blob bytes
|
|
46
|
-
const byteView = new Uint8Array(buffer);
|
|
47
|
-
const blobArrayBuffer = await blob.arrayBuffer();
|
|
48
|
-
byteView.set(new Uint8Array(blobArrayBuffer), typeByteLength);
|
|
49
|
-
// Hash the combined buffer
|
|
50
|
-
return bufferToHash(buffer);
|
|
21
|
+
return hasher.digest("hex");
|
|
51
22
|
}
|
|
52
23
|
//# sourceMappingURL=blob-to-hash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-to-hash.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/blob-to-hash.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"blob-to-hash.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/blob-to-hash.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IACzC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEd,+BAA+B;IAC/B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;IACzC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
2
|
import { blobToHash } from "./blob-to-hash.js";
|
|
3
3
|
import { jsonToHash } from "./json-to-hash.js";
|
|
4
|
-
import { describe, expect, it
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
5
|
describe("test hashing", () => {
|
|
6
|
-
let originalCrypto;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
// Store original crypto for restoration
|
|
9
|
-
originalCrypto = crypto;
|
|
10
|
-
});
|
|
11
|
-
afterEach(() => {
|
|
12
|
-
// Restore original crypto
|
|
13
|
-
Object.defineProperty(window, 'crypto', {
|
|
14
|
-
value: originalCrypto,
|
|
15
|
-
writable: true,
|
|
16
|
-
configurable: true
|
|
17
|
-
});
|
|
18
|
-
vi.restoreAllMocks();
|
|
19
|
-
});
|
|
20
6
|
describe("blobToHash", () => {
|
|
21
7
|
it("should avoid collisions based on content and type", async () => {
|
|
22
8
|
const blobs = [
|
|
@@ -36,7 +22,6 @@ describe("test hashing", () => {
|
|
|
36
22
|
new Blob(["b"]),
|
|
37
23
|
new Blob(["a"], { type: "octet/binary" }),
|
|
38
24
|
new Blob(["a"], { type: "text/plain" }),
|
|
39
|
-
// empty blobs should work
|
|
40
25
|
new Blob([""]),
|
|
41
26
|
new Blob([""], { type: "octet/binary" }),
|
|
42
27
|
new Blob([""], { type: "text/plain" }),
|
|
@@ -44,8 +29,7 @@ describe("test hashing", () => {
|
|
|
44
29
|
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
45
30
|
const hashes = await Promise.all(hashPromises);
|
|
46
31
|
const unique = new Set(hashes);
|
|
47
|
-
|
|
48
|
-
expect(collisions).toBe(0);
|
|
32
|
+
expect(hashes.length - unique.size).toBe(0);
|
|
49
33
|
});
|
|
50
34
|
it("should generate consistent hashes", async () => {
|
|
51
35
|
const blobs = [
|
|
@@ -58,20 +42,6 @@ describe("test hashing", () => {
|
|
|
58
42
|
const unique = new Set(hashes);
|
|
59
43
|
expect(unique.size).toBe(1);
|
|
60
44
|
});
|
|
61
|
-
it("should handle large blobs efficiently", async () => {
|
|
62
|
-
// Create a large blob (1MB) to test streaming performance
|
|
63
|
-
const largeData = new Uint8Array(1024 * 1024);
|
|
64
|
-
for (let i = 0; i < largeData.length; i++) {
|
|
65
|
-
largeData[i] = i % 256;
|
|
66
|
-
}
|
|
67
|
-
const largeBlob = new Blob([largeData], { type: "application/octet-stream" });
|
|
68
|
-
const startTime = performance.now();
|
|
69
|
-
const hash = await blobToHash(largeBlob);
|
|
70
|
-
const endTime = performance.now();
|
|
71
|
-
expect(hash).toBeDefined();
|
|
72
|
-
expect(hash.length).toBe(64); // SHA-256 hex string length
|
|
73
|
-
expect(endTime - startTime).toBeLessThan(5000); // Should complete within 5 seconds
|
|
74
|
-
});
|
|
75
45
|
it("should handle blobs with complex MIME types", async () => {
|
|
76
46
|
const complexTypes = [
|
|
77
47
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
@@ -83,9 +53,7 @@ describe("test hashing", () => {
|
|
|
83
53
|
const blobs = complexTypes.map(type => new Blob(["test content"], { type }));
|
|
84
54
|
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
85
55
|
const hashes = await Promise.all(hashPromises);
|
|
86
|
-
|
|
87
|
-
const unique = new Set(hashes);
|
|
88
|
-
expect(unique.size).toBe(complexTypes.length);
|
|
56
|
+
expect(new Set(hashes).size).toBe(complexTypes.length);
|
|
89
57
|
});
|
|
90
58
|
it("should handle empty MIME types", async () => {
|
|
91
59
|
const emptyTypeBlob = new Blob(["content"], { type: "" });
|
|
@@ -102,12 +70,9 @@ describe("test hashing", () => {
|
|
|
102
70
|
const blobs = unicodeTypes.map(type => new Blob(["test content"], { type }));
|
|
103
71
|
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
104
72
|
const hashes = await Promise.all(hashPromises);
|
|
105
|
-
|
|
106
|
-
const unique = new Set(hashes);
|
|
107
|
-
expect(unique.size).toBe(unicodeTypes.length);
|
|
73
|
+
expect(new Set(hashes).size).toBe(unicodeTypes.length);
|
|
108
74
|
});
|
|
109
75
|
it("should handle very large MIME types", async () => {
|
|
110
|
-
// Test with extremely long MIME type
|
|
111
76
|
const longMimeType = "application/" + "x".repeat(1000) + "; charset=utf-8";
|
|
112
77
|
const blob = new Blob(["test content"], { type: longMimeType });
|
|
113
78
|
const hash = await blobToHash(blob);
|
|
@@ -123,178 +88,16 @@ describe("test hashing", () => {
|
|
|
123
88
|
const blobs = specialMimeTypes.map(type => new Blob(["test content"], { type }));
|
|
124
89
|
const hashPromises = blobs.map((blob) => blobToHash(blob));
|
|
125
90
|
const hashes = await Promise.all(hashPromises);
|
|
126
|
-
|
|
127
|
-
const unique = new Set(hashes);
|
|
128
|
-
expect(unique.size).toBe(specialMimeTypes.length);
|
|
129
|
-
});
|
|
130
|
-
describe("streaming path (DigestStream)", () => {
|
|
131
|
-
it("should use DigestStream when available", async () => {
|
|
132
|
-
// Mock DigestStream to verify it's being used
|
|
133
|
-
const mockDigestStream = {
|
|
134
|
-
writable: {
|
|
135
|
-
getWriter: vi.fn().mockReturnValue({
|
|
136
|
-
write: vi.fn().mockResolvedValue(undefined),
|
|
137
|
-
close: vi.fn().mockResolvedValue(undefined)
|
|
138
|
-
})
|
|
139
|
-
},
|
|
140
|
-
digest: Promise.resolve(new ArrayBuffer(32))
|
|
141
|
-
};
|
|
142
|
-
const mockCrypto = {
|
|
143
|
-
...originalCrypto,
|
|
144
|
-
DigestStream: vi.fn().mockImplementation(() => mockDigestStream)
|
|
145
|
-
};
|
|
146
|
-
Object.defineProperty(window, 'crypto', {
|
|
147
|
-
value: mockCrypto,
|
|
148
|
-
writable: true,
|
|
149
|
-
configurable: true
|
|
150
|
-
});
|
|
151
|
-
const blob = new Blob(["test content"], { type: "text/plain" });
|
|
152
|
-
await blobToHash(blob);
|
|
153
|
-
expect(mockCrypto.DigestStream).toHaveBeenCalledWith("SHA-256");
|
|
154
|
-
expect(mockDigestStream.writable.getWriter).toHaveBeenCalled();
|
|
155
|
-
});
|
|
156
|
-
it("should handle streaming errors gracefully", async () => {
|
|
157
|
-
const mockDigestStream = {
|
|
158
|
-
writable: {
|
|
159
|
-
getWriter: vi.fn().mockReturnValue({
|
|
160
|
-
write: vi.fn().mockRejectedValue(new Error("Stream write error")),
|
|
161
|
-
close: vi.fn().mockResolvedValue(undefined)
|
|
162
|
-
})
|
|
163
|
-
},
|
|
164
|
-
digest: Promise.resolve(new ArrayBuffer(32))
|
|
165
|
-
};
|
|
166
|
-
const mockCrypto = {
|
|
167
|
-
...originalCrypto,
|
|
168
|
-
DigestStream: vi.fn().mockImplementation(() => mockDigestStream)
|
|
169
|
-
};
|
|
170
|
-
Object.defineProperty(window, 'crypto', {
|
|
171
|
-
value: mockCrypto,
|
|
172
|
-
writable: true,
|
|
173
|
-
configurable: true
|
|
174
|
-
});
|
|
175
|
-
const blob = new Blob(["test content"], { type: "text/plain" });
|
|
176
|
-
await expect(blobToHash(blob)).rejects.toThrow("Stream write error");
|
|
177
|
-
});
|
|
178
|
-
it("should handle DigestStream digest errors", async () => {
|
|
179
|
-
const mockDigestStream = {
|
|
180
|
-
writable: {
|
|
181
|
-
getWriter: vi.fn().mockReturnValue({
|
|
182
|
-
write: vi.fn().mockResolvedValue(undefined),
|
|
183
|
-
close: vi.fn().mockResolvedValue(undefined)
|
|
184
|
-
})
|
|
185
|
-
},
|
|
186
|
-
get digest() {
|
|
187
|
-
return Promise.reject(new Error("Digest error"));
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
const mockCrypto = {
|
|
191
|
-
...originalCrypto,
|
|
192
|
-
DigestStream: vi.fn().mockImplementation(() => mockDigestStream)
|
|
193
|
-
};
|
|
194
|
-
Object.defineProperty(window, 'crypto', {
|
|
195
|
-
value: mockCrypto,
|
|
196
|
-
writable: true,
|
|
197
|
-
configurable: true
|
|
198
|
-
});
|
|
199
|
-
const blob = new Blob(["test content"], { type: "text/plain" });
|
|
200
|
-
// Handle the unhandled rejection by catching it
|
|
201
|
-
try {
|
|
202
|
-
await blobToHash(blob);
|
|
203
|
-
// If we get here, the test should fail
|
|
204
|
-
expect(true).toBe(false);
|
|
205
|
-
}
|
|
206
|
-
catch (error) {
|
|
207
|
-
expect(error).toBeInstanceOf(Error);
|
|
208
|
-
expect(error.message).toBe("Digest error");
|
|
209
|
-
}
|
|
210
|
-
});
|
|
91
|
+
expect(new Set(hashes).size).toBe(specialMimeTypes.length);
|
|
211
92
|
});
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
...originalCrypto,
|
|
217
|
-
subtle: originalCrypto.subtle
|
|
218
|
-
};
|
|
219
|
-
delete mockCrypto.DigestStream;
|
|
220
|
-
Object.defineProperty(window, 'crypto', {
|
|
221
|
-
value: mockCrypto,
|
|
222
|
-
writable: true,
|
|
223
|
-
configurable: true
|
|
224
|
-
});
|
|
225
|
-
const blob = new Blob(["test content"], { type: "text/plain" });
|
|
226
|
-
const hash = await blobToHash(blob);
|
|
227
|
-
expect(hash).toBeDefined();
|
|
228
|
-
expect(hash.length).toBe(64);
|
|
229
|
-
});
|
|
230
|
-
it("should handle buffer-based approach with large blobs", async () => {
|
|
231
|
-
// Remove DigestStream from crypto but keep subtle
|
|
232
|
-
const mockCrypto = {
|
|
233
|
-
...originalCrypto,
|
|
234
|
-
subtle: originalCrypto.subtle
|
|
235
|
-
};
|
|
236
|
-
delete mockCrypto.DigestStream;
|
|
237
|
-
Object.defineProperty(window, 'crypto', {
|
|
238
|
-
value: mockCrypto,
|
|
239
|
-
writable: true,
|
|
240
|
-
configurable: true
|
|
241
|
-
});
|
|
242
|
-
// Create a moderately large blob
|
|
243
|
-
const data = new Uint8Array(100 * 1024); // 100KB
|
|
244
|
-
for (let i = 0; i < data.length; i++) {
|
|
245
|
-
data[i] = i % 256;
|
|
246
|
-
}
|
|
247
|
-
const blob = new Blob([data], { type: "application/octet-stream" });
|
|
248
|
-
const hash = await blobToHash(blob);
|
|
249
|
-
expect(hash).toBeDefined();
|
|
250
|
-
expect(hash.length).toBe(64);
|
|
251
|
-
});
|
|
252
|
-
});
|
|
253
|
-
it("should produce same hash regardless of path used", async () => {
|
|
254
|
-
const testBlob = new Blob(["test content"], { type: "text/plain" });
|
|
255
|
-
// Test with streaming path (if available)
|
|
256
|
-
const streamingHash = await blobToHash(testBlob);
|
|
257
|
-
// Test with fallback path
|
|
258
|
-
const mockCrypto = {
|
|
259
|
-
...originalCrypto,
|
|
260
|
-
subtle: originalCrypto.subtle
|
|
261
|
-
};
|
|
262
|
-
delete mockCrypto.DigestStream;
|
|
263
|
-
Object.defineProperty(window, 'crypto', {
|
|
264
|
-
value: mockCrypto,
|
|
265
|
-
writable: true,
|
|
266
|
-
configurable: true
|
|
267
|
-
});
|
|
268
|
-
const fallbackHash = await blobToHash(testBlob);
|
|
269
|
-
// Both should produce the same hash for the same input
|
|
270
|
-
expect(streamingHash).toBe(fallbackHash);
|
|
271
|
-
});
|
|
272
|
-
it("should produce identical hashes for multiple test cases", async () => {
|
|
273
|
-
const testCases = [
|
|
274
|
-
{ content: "simple text", type: "text/plain" },
|
|
275
|
-
{ content: "complex content with special chars: !@#$%^&*()", type: "application/json" },
|
|
276
|
-
{ content: "", type: "text/plain" },
|
|
277
|
-
{ content: "a", type: "" },
|
|
278
|
-
{ content: "very long content ".repeat(100), type: "text/html; charset=utf-8" }
|
|
93
|
+
it("should return 64-character hex string", async () => {
|
|
94
|
+
const blobs = [
|
|
95
|
+
new Blob(["x"], { type: "text/plain" }),
|
|
96
|
+
new Blob([], { type: "application/octet-stream" }),
|
|
279
97
|
];
|
|
280
|
-
for (const
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
const streamingHash = await blobToHash(blob);
|
|
284
|
-
// Get fallback hash
|
|
285
|
-
const mockCrypto = {
|
|
286
|
-
...originalCrypto,
|
|
287
|
-
subtle: originalCrypto.subtle
|
|
288
|
-
};
|
|
289
|
-
delete mockCrypto.DigestStream;
|
|
290
|
-
Object.defineProperty(window, 'crypto', {
|
|
291
|
-
value: mockCrypto,
|
|
292
|
-
writable: true,
|
|
293
|
-
configurable: true
|
|
294
|
-
});
|
|
295
|
-
const fallbackHash = await blobToHash(blob);
|
|
296
|
-
// Verify they match
|
|
297
|
-
expect(streamingHash).toBe(fallbackHash);
|
|
98
|
+
for (const blob of blobs) {
|
|
99
|
+
const hash = await blobToHash(blob);
|
|
100
|
+
expect(hash).toMatch(/^[a-f0-9]{64}$/);
|
|
298
101
|
}
|
|
299
102
|
});
|
|
300
103
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashing.test.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/hashing.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hashing.test.js","sourceRoot":"","sources":["../../../../src/cache/functions/hashing/hashing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { toArrayBufferBacked } from "../../internal/array-buffer-like/index.js";
|
|
1
3
|
import { registerCodec } from "./codec.js";
|
|
2
4
|
export function registerTypedArrayCodecs() {
|
|
3
5
|
// Support for all typed arrays
|
|
@@ -15,7 +17,7 @@ export function registerTypedArrayCodecs() {
|
|
|
15
17
|
registerCodec({
|
|
16
18
|
name: typedArrayConstructor.name,
|
|
17
19
|
predicate: (data) => data instanceof typedArrayConstructor,
|
|
18
|
-
serialize: (data) => ({ binary: [new Uint8Array(data.buffer, data.byteOffset, data.byteLength)] }),
|
|
20
|
+
serialize: (data) => ({ binary: [toArrayBufferBacked(new Uint8Array(data.buffer, data.byteOffset, data.byteLength))] }),
|
|
19
21
|
deserialize: ({ binary }) => new typedArrayConstructor(binary[0].buffer, binary[0].byteOffset, binary[0].byteLength / typedArrayConstructor.BYTES_PER_ELEMENT),
|
|
20
22
|
});
|
|
21
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-typed-array-codecs.js","sourceRoot":"","sources":["../../../src/functions/serialization/register-typed-array-codecs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"register-typed-array-codecs.js","sourceRoot":"","sources":["../../../src/functions/serialization/register-typed-array-codecs.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,UAAU,wBAAwB;IACpC,+BAA+B;IAC/B,MAAM,sBAAsB,GAAG;QAC3B,SAAS;QACT,UAAU;QACV,UAAU;QACV,WAAW;QACX,UAAU;QACV,WAAW;QACX,YAAY;QACZ,YAAY;KACf,CAAC;IAEF,KAAK,MAAM,qBAAqB,IAAI,sBAAsB,EAAE,CAAC;QACzD,aAAa,CAAM;YACf,IAAI,EAAE,qBAAqB,CAAC,IAAI;YAChC,SAAS,EAAE,CAAC,IAAS,EAAe,EAAE,CAAC,IAAI,YAAY,qBAAqB;YAC5E,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5H,WAAW,EAAE,CAAC,EAAE,MAAM,EAAyC,EAAE,EAAE,CAAC,IAAK,qBAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;SACjN,CAAC,CAAC;IACP,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { toArrayBufferBacked } from "../../internal/array-buffer-like/index.js";
|
|
2
3
|
import { serialize, deserialize } from "./serialize.js";
|
|
3
4
|
export const serializeToBlobs = async (data) => {
|
|
4
5
|
const serialized = serialize(data);
|
|
5
6
|
const binarySizes = serialized.binary.map((array) => array.byteLength);
|
|
7
|
+
const binaryParts = serialized.binary.map(toArrayBufferBacked);
|
|
6
8
|
const json = new Blob([JSON.stringify({ json: serialized.json, binarySizes })], { type: "application/json" });
|
|
7
|
-
const binary = new Blob(
|
|
9
|
+
const binary = new Blob(binaryParts, { type: "application/octet-stream" });
|
|
8
10
|
return { json, binary };
|
|
9
11
|
};
|
|
10
12
|
export const deserializeFromBlobs = async ({ json, binary }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-to-blobs.js","sourceRoot":"","sources":["../../../src/functions/serialization/serialize-to-blobs.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAK,IAAO,EAAyC,EAAE;IACxF,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"serialize-to-blobs.js","sourceRoot":"","sources":["../../../src/functions/serialization/serialize-to-blobs.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAK,IAAO,EAAyC,EAAE;IACxF,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAK,EAAE,IAAI,EAAE,MAAM,EAAgC,EAAc,EAAE;IACxG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,MAAM,YAAY,GAA8B,EAAE,CAAC;IACnD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,WAAW,CAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { toArrayBufferBacked } from "../../internal/array-buffer-like/index.js";
|
|
2
3
|
import { serialize, deserialize } from "./serialize.js";
|
|
3
4
|
/**
|
|
4
5
|
* Converts a Uint8Array to a base64 string
|
|
@@ -47,7 +48,7 @@ const compressData = async (data) => {
|
|
|
47
48
|
const { done, value } = await reader.read();
|
|
48
49
|
if (done)
|
|
49
50
|
break;
|
|
50
|
-
chunks.push(value);
|
|
51
|
+
chunks.push(toArrayBufferBacked(value));
|
|
51
52
|
}
|
|
52
53
|
// Concatenate all chunks
|
|
53
54
|
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
@@ -76,7 +77,7 @@ const decompressData = async (data) => {
|
|
|
76
77
|
const { done, value } = await reader.read();
|
|
77
78
|
if (done)
|
|
78
79
|
break;
|
|
79
|
-
chunks.push(value);
|
|
80
|
+
chunks.push(toArrayBufferBacked(value));
|
|
80
81
|
}
|
|
81
82
|
// Concatenate all chunks
|
|
82
83
|
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
@@ -129,7 +130,7 @@ export const deserializeFromJSON = async (jsonString) => {
|
|
|
129
130
|
let offset = 0;
|
|
130
131
|
for (const length of parsed.lengths) {
|
|
131
132
|
const chunk = combinedBinary.slice(offset, offset + length);
|
|
132
|
-
binaryChunks.push(chunk);
|
|
133
|
+
binaryChunks.push(toArrayBufferBacked(chunk));
|
|
133
134
|
offset += length;
|
|
134
135
|
}
|
|
135
136
|
// Deserialize using the original deserialize function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-to-json.js","sourceRoot":"","sources":["../../../src/functions/serialization/serialize-to-json.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAWxD;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAAgB,EAAU,EAAE;IACpD,0CAA0C;IAC1C,sFAAsF;IACtF,+EAA+E;IAC/E,MAAM,UAAU,GAAG,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,oFAAoF;IACpF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAc,EAAE;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,YAAY,GAAG,KAAK,EAAE,IAAgB,EAAoC,EAAE;IAC9E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAC9B,KAAK,CAAC,UAAU;YACZ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CACvC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CACnC,CAAC;IAEF,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAE5C,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"serialize-to-json.js","sourceRoot":"","sources":["../../../src/functions/serialization/serialize-to-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
2
|
export * from './copy.js';
|
|
3
3
|
export * from './resize.js';
|
|
4
|
+
export * from './to-array-buffer-backed.js';
|
|
4
5
|
export * from './is-array-buffer.js';
|
|
5
6
|
export * from './is-shared-array-buffer.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/array-buffer-like/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/array-buffer-like/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// © 2026 Adobe. MIT License. See /LICENSE for details.
|
|
2
|
+
import { isSharedArrayBuffer } from "./is-shared-array-buffer.js";
|
|
3
|
+
/**
|
|
4
|
+
* Returns a Uint8Array backed by ArrayBuffer, copying if the input is backed by SharedArrayBuffer.
|
|
5
|
+
* Blob and other APIs may not accept SharedArrayBuffer-backed views.
|
|
6
|
+
*/
|
|
7
|
+
export function toArrayBufferBacked(view) {
|
|
8
|
+
if (isSharedArrayBuffer(view.buffer)) {
|
|
9
|
+
return view.slice();
|
|
10
|
+
}
|
|
11
|
+
// view.buffer is ArrayBuffer here; TypeScript cannot narrow view from buffer check
|
|
12
|
+
return view;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=to-array-buffer-backed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-array-buffer-backed.js","sourceRoot":"","sources":["../../../src/internal/array-buffer-like/to-array-buffer-backed.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAChD,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IACD,mFAAmF;IACnF,OAAO,IAA+B,CAAC;AAC3C,CAAC"}
|