libarchive
Version:
Multi-format archive and compression library
1 lines • 12.7 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.libarchive=t():e.libarchive=t()}(self,()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};e.d(t,{default:()=>w});class r{_context;_byteOffset;_byteLength;constructor(e,t,r){this._context=e,this._byteOffset=t,this._byteLength=r}release(){this._context.archive_buffer_free(this._byteOffset)}get buffer(){return this._context.memoryBuffer}get byteOffset(){return this._byteOffset}get byteLength(){return this._byteLength}}class i{_map=new Map;get(e){const t=this._map.get(e);if(!t)throw Error(`Handle ${e} does not exists`);return t}set(e,t){if(!e)throw Error("Handle is null");if(this._map.has(e))throw Error(`Handle ${e} is registred`);this._map.set(e,t)}delete(e){this._map.delete(e)}}class _{_native;_memory;_callbacks=new i;_readBuffer=new Uint8Array;constructor(e,t){this._native=e,this._memory=t}get memoryBuffer(){return this._memory.buffer}archive_version(){return this._native.archive_version()}archive_version_details(){return this._native.archive_version_details()}archive_setlocale(e){return this._native.archive_setlocale(e)}archive_errno(e){return this._native.archive_errno(e)}archive_error_string(e){return this._native.archive_error_string(e)}archive_open_handler(e){const t=this._callbacks.get(e);return t.opener?t.opener():0}archive_read_handler(e,t,r){if(!this._readBuffer.length){const t=this._callbacks.get(e);if(!t.reader)return 0;const r=t.reader();if(!r)return 0;this._readBuffer=new Uint8Array(r)}const i=Math.min(r,this._readBuffer.length),_=new Uint8Array(this._memory.buffer,t,i);for(let e=0;e<i;e++)_[e]=this._readBuffer[e];return this._readBuffer=this._readBuffer.slice(i),i}archive_read_last_error(e){return this._native.archive_read_last_error(e)}archive_write_handler(e,t,i){const _=this._callbacks.get(e);return _.writer&&_.writer(new r(this,t,i)),i}archive_close_handler(e){const t=this._callbacks.get(e);return t.closer?t.closer():0}archive_read_new(){const e=this._native.archive_read_new();if(e){const t={};this._callbacks.set(e,t)}return e}archive_read_free(e){this._callbacks.delete(e),this._native.archive_read_free(e)}archive_read_add_passphrase(e,t){return this._native.archive_read_add_passphrase(e,t)}archive_read_support_filter_all(e){return this._native.archive_read_support_filter_all(e)}archive_read_support_format_all(e){return this._native.archive_read_support_format_all(e)}archive_read_open(e){return this._native.archive_read_open(e)}archive_read_close(e){return this._native.archive_read_close(e)}archive_read_next_header(e){return this._native.archive_read_next_header(e)}archive_read_data(e,t,r){return this._native.archive_read_data(e,t,r)}archive_read_data_skip(e){return this._native.archive_read_data_skip(e)}archive_read_set_open_callback(e,t){this._callbacks.get(e).opener=t}archive_read_set_read_callback(e,t){this._callbacks.get(e).reader=t}archive_read_set_close_callback(e,t){this._callbacks.get(e).closer=t}archive_write_new(){const e=this._native.archive_write_new();if(e){const t={};this._callbacks.set(e,t)}return e}archive_write_free(e){this._callbacks.delete(e),this._native.archive_write_free(e)}archive_write_set_options(e,t){return this._native.archive_write_set_options(e,t)}archive_write_set_passphrase(e,t){return this._native.archive_write_set_passphrase(e,t)}archive_write_set_format_by_name(e,t){return this._native.archive_write_set_format_by_name(e,t)}archive_write_add_filter_by_name(e,t){return this._native.archive_write_add_filter_by_name(e,t)}archive_write_set_format_filter_by_ext(e,t){return this._native.archive_write_set_format_filter_by_ext(e,t)}archive_write_set_open_callback(e,t){this._callbacks.get(e).opener=t}archive_write_set_write_callback(e,t){this._callbacks.get(e).writer=t}archive_write_set_close_callback(e,t){this._callbacks.get(e).closer=t}archive_write_open(e){return this._native.archive_write_open(e)}archive_write_close(e){return this._native.archive_write_close(e)}archive_write_header(e,t){return this._native.archive_write_header(e,t)}archive_write_data(e,t,r){return this._native.archive_write_data(e,t,r)}archive_entry_new(){return this._native.archive_entry_new()}archive_entry_free(e){this._native.archive_entry_free(e)}archive_entry_pathname(e){return this._native.archive_entry_pathname(e)}archive_entry_pathname_w(e){return this._native.archive_entry_pathname_w(e)}archive_entry_pathname_utf8(e){return this._native.archive_entry_pathname_utf8(e)}archive_entry_set_pathname_utf8(e,t){this._native.archive_entry_set_pathname_utf8(e,t)}archive_entry_size(e){const t=this._native.archive_entry_size_lo(e);return 4294967296*this._native.archive_entry_size_hi(e)+t}archive_entry_set_size(e,t){this._native.archive_entry_set_size(e,0,t)}archive_entry_size_is_set(e){return this._native.archive_entry_size_is_set(e)}archive_entry_mode(e){return this._native.archive_entry_mode(e)}archive_entry_set_mode(e,t){this._native.archive_entry_set_mode(e,t)}archive_buffer_new(e){return this._native.archive_buffer_new(e)}archive_buffer_free(e){this._native.archive_buffer_free(e)}archive_buffer_from(e){const t=(new TextEncoder).encode(e+"\0"),r=this._native.archive_buffer_new(t.length);return r&&new Uint8Array(this._memory.buffer,r,t.length).set(t),r}}const a="No Memory";var s;function n(e){switch(e){case 0:return"ARCHIVE_OK";case-10:return"ARCHIVE_RETRY";case-20:return"ARCHIVE_WARN";case-25:return"ARCHIVE_FAILED";case-30:return"ARCHIVE_FATAL"}if(e<0)return"ARCHIVE_"+-e;throw new Error(`Error code ${e} must be negative`)}!function(e){e.fromBuffer=function(e,t,r){let i;if(void 0===r)for(r=0,i=new Uint8Array(e,t);i[r];)r++;if(i=new Uint8Array(e,t,r),e instanceof SharedArrayBuffer){const e=new Uint8Array(r);e.set(i),i=e}return new TextDecoder("utf-8").decode(i)}}(s||(s={}));class h{_context;_entry;constructor(e,t){this._context=e,this._entry=t}release(){this._context.archive_entry_free(this._entry)}get memoryOffset(){return this._entry}get pathname(){const e=this._context.archive_entry_pathname_utf8(this._entry);if(e)return s.fromBuffer(this._context.memoryBuffer,e);const t=this._context.archive_entry_pathname(this._entry);return t?s.fromBuffer(this._context.memoryBuffer,t):void 0}set pathname(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);this._context.archive_entry_set_pathname_utf8(this._entry,t)}get size(){if(this._context.archive_entry_size_is_set(this._entry))return this._context.archive_entry_size(this._entry)}set size(e){this._context.archive_entry_set_size(this._entry,e)}get mode(){return this._context.archive_entry_mode(this._entry)}set mode(e){this._context.archive_entry_set_mode(this._entry,e)}}class c{_context;_archive;constructor(e,t){this._context=e,this._archive=t}get memoryOffset(){return this._archive}get errno(){return this._context.archive_errno(this._archive)}get errorString(){const e=this._context.archive_error_string(this._archive);return s.fromBuffer(this._context.memoryBuffer,e)}}class o extends c{constructor(e,t){super(e,t)}release(){this._context.archive_read_free(this._archive)}supportFilterAll(){return this._context.archive_read_support_filter_all(this._archive)}supportFormatAll(){return this._context.archive_read_support_format_all(this._archive)}addPassphrase(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_read_add_passphrase(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}open(){const e=this._context.archive_read_open(this._archive);if(0!==e)throw new Error(this.errorString,{cause:n(e)})}close(){this._context.archive_read_close(this._archive)}nextHeader(){const e=this._context.archive_read_next_header(this._archive);if(e)return new h(this._context,e);const t=this._context.archive_read_last_error(this._archive);if(0!==t)throw new Error(this.errorString,{cause:n(t)})}dataRead(e,t,r){t=e.byteOffset+(t||0),r=r||e.byteLength;const i=this._context.archive_read_data(this._archive,t,r);if(i<0)throw new Error(this.errorString,{cause:n(i)});return i}dataSkip(){return this._context.archive_read_data_skip(this._archive)}set onopen(e){this._context.archive_read_set_open_callback(this._archive,e)}set onread(e){this._context.archive_read_set_read_callback(this._archive,e)}set onclose(e){this._context.archive_read_set_close_callback(this._archive,e)}}class v extends c{constructor(e,t){super(e,t)}release(){this._context.archive_write_free(this._archive)}set format(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_write_set_format_by_name(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}set options(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_write_set_options(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}set passphrase(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_write_set_passphrase(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}addFilter(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_write_add_filter_by_name(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}setFormatFilterByExt(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_write_set_format_filter_by_ext(this._archive,t);if(this._context.archive_buffer_free(t),0!=r)throw new Error(this.errorString,{cause:n(r)})}set onopen(e){this._context.archive_write_set_open_callback(this._archive,e)}set onwrite(e){this._context.archive_write_set_write_callback(this._archive,e)}set onclose(e){this._context.archive_write_set_open_callback(this._archive,e)}open(){const e=this._context.archive_write_open(this._archive);if(0!==e)throw new Error(this.errorString,{cause:n(e)})}close(){this._context.archive_write_close(this._archive)}writeHeader(e){return this._context.archive_write_header(this._archive,e.memoryOffset)}writeData(e,t,r){t=e.byteOffset+(t||0),r=r||e.byteLength-t;const i=this._context.archive_write_data(this._archive,t,r);if(i<0)throw new Error(this.errorString,{cause:n(i)});return i}}class f{_context;_version="";_versionDetails="";constructor(e){this._context=e}get version(){if(!this._version){const e=this._context.archive_version();this._version=s.fromBuffer(this._context.memoryBuffer,e)}return this._version}get versionDetails(){if(!this._versionDetails){const e=this._context.archive_version_details();this._versionDetails=s.fromBuffer(this._context.memoryBuffer,e)}return this._versionDetails}setlocale(e){const t=this._context.archive_buffer_from(e);if(!t)throw new Error(a);const r=this._context.archive_setlocale(t);if(r)return s.fromBuffer(this._context.memoryBuffer,r)}newRead(){const e=this._context.archive_read_new();if(!e)throw new Error(a);return new o(this._context,e)}newWrite(){const e=this._context.archive_write_new();if(!e)throw new Error(a);return new v(this._context,e)}newEntry(){const e=this._context.archive_entry_new();if(!e)throw new Error(a);return new h(this._context,e)}newBuffer(e){const t=this._context.archive_buffer_new(e);if(!t)throw new Error(a);return new r(this._context,t,e)}static async instantiate(e){let t;const r={env:{archive_open_handler:e=>t.archive_open_handler(e),archive_read_handler:(e,r,i)=>t.archive_read_handler(e,r,i),archive_write_handler:(e,r,i)=>t.archive_write_handler(e,r,i),archive_close_handler:e=>t.archive_close_handler(e)}},i=(await WebAssembly.instantiate(e,r)).instance.exports;return t=new _(i,i.memory),new f(t)}}async function l(e){return"string"==typeof e&&(e=await async function(e){return(await fetch(e)).arrayBuffer()}(e)),f.instantiate(e)}let u;async function d(e){return void 0!==e?l(e):(u||(u=await l("libarchive.wasm")),u)}const w=Object.assign(d,{ARCHIVE_OK:0,ARCHIVE_RETRY:-10,ARCHIVE_WARN:-20,ARCHIVE_FAILED:-25,ARCHIVE_FATAL:-30,AE_IFMT:61440,AE_IFREG:32768,AE_IFLNK:40960,AE_IFSOCK:49152,AE_IFCHR:8192,AE_IFBLK:24576,AE_IFDIR:16384,AE_IFIFO:4096,async decompress(e,t,r){console.log("IArchiveExport.decompress"),await d(r?.moduleUrl)},async compress(e,t,r){console.log("IArchiveExport.compress"),await d(r?.moduleUrl)}});return t.default})());