Library for extracting tar files in the browser. Useful when packing all your application images/sound/json/etc. data in a standard .tar file and serving to clients as one gzipped bundle.
As of September 2015 this includes Chrome>=20, Firefox>=13, IE>=10, Opera>=12.10 and Safari>=8. Web Worker transferable objects are used when available, increasing speed greatly. This is supported in Chrome>=21, Firefox>=18, Opera>=15 and Safari.
Load the module with RequireJS or similar. The module is a function that returns a modified Promise with a progress callback. This callback is executed every time a file is extracted. The standard Promise.then method is also called when extraction is done, with all extracted files as argument. The extraction is done in a Web Worker to allow the main UI thread to continue.
define(["untar"], function(untar) {
// Load the source ArrayBuffer from a XMLHttpRequest (or any other way you may need).
var sourceBuffer = [...];
untar(sourceBuffer)
.progress(function(extractedFile) {
...
})
.then(function(extractedFiles) {
...
});
// or
untar(sourceBuffer).then(
function(extractedFiles) { // onSuccess
...
},
function(err) { // onError
...
},
function(extractedFile) { // onProgress
...
}
);
});
The returned file object(s) has the following properties. Most of these are explained in the Tar wikipedia entry.
- name = The full filename (including path and ustar filename prefix).
- mode
- uid
- gid
- size
- modificationTime
- checksum
- type
- linkname
- ustarFormat
- blob A Blob object with the contens of the file.
- getObjectUrl() A unique ObjectUrl to the data can be retrieved with this method for easy usage of extracted data in <img> tags etc. document.getElementById("targetImageElement").src = file.getObjectUrl();
If the .tar file was in the ustar format (which most are), the following properties are also defined:
- version
- uname
- gname
- devmajor
- devminor
- namePrefix