Buckets:
| addToLibrary({ | |
| // JSFile backend: Store a file's data in JS. We map File objects in C++ to | |
| // entries here that contain typed arrays. | |
| $wasmFS$JSMemoryFiles: {}, | |
| _wasmfs_create_js_file_backend_js__deps: [ | |
| '$wasmFS$backends', | |
| '$wasmFS$JSMemoryFiles', | |
| ], | |
| _wasmfs_create_js_file_backend_js: (backend) => { | |
| wasmFS$backends[backend] = { | |
| allocFile: (file) => { | |
| // Do nothing: we allocate the typed array lazily, see write() | |
| }, | |
| freeFile: (file) => { | |
| // Release the memory, as it now has no references to it any more. | |
| wasmFS$JSMemoryFiles[file] = undefined; | |
| }, | |
| write: (file, buffer, length, offset) => { | |
| try { | |
| if (!wasmFS$JSMemoryFiles[file]) { | |
| // Initialize typed array on first write operation. | |
| wasmFS$JSMemoryFiles[file] = new Uint8Array(offset + length); | |
| } | |
| if (offset + length > wasmFS$JSMemoryFiles[file].length) { | |
| // Resize the typed array if the length of the write buffer exceeds its capacity. | |
| var oldContents = wasmFS$JSMemoryFiles[file]; | |
| var newContents = new Uint8Array(offset + length); | |
| newContents.set(oldContents); | |
| wasmFS$JSMemoryFiles[file] = newContents; | |
| } | |
| wasmFS$JSMemoryFiles[file].set(HEAPU8.subarray(buffer, buffer + length), offset); | |
| return length; | |
| } catch (err) { | |
| return -{{{ cDefs.EIO }}}; | |
| } | |
| }, | |
| read: (file, buffer, length, offset) => { | |
| var fileData = wasmFS$JSMemoryFiles[file]; | |
| // We can't read past the end of the file's data. | |
| var dataAfterOffset = Math.max(0, fileData.length - offset); | |
| // We only read as much as we were asked. | |
| length = Math.min(length, dataAfterOffset); | |
| HEAPU8.set(fileData.subarray(offset, offset + length), buffer); | |
| return length; | |
| }, | |
| getSize: (file) => wasmFS$JSMemoryFiles[file]?.length || 0, | |
| setSize: (file, size) => { | |
| // Allocate a new array of the proper size, and copy as much data as | |
| // possible. | |
| var old = wasmFS$JSMemoryFiles[file]; | |
| var new_ = wasmFS$JSMemoryFiles[file] = new Uint8Array(size); | |
| if (old) { | |
| new_.set(old.subarray(0, size)); | |
| } | |
| return 0; | |
| } | |
| }; | |
| }, | |
| }); | |
Xet Storage Details
- Size:
- 2.33 kB
- Xet hash:
- a7e3d195b125d9ceb1968f9ab9dc71413ad4fe2532c3537ec0b5c36bdca629c9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.