From 195a0a78dfb267dea16da4cea73fcbc468456057 Mon Sep 17 00:00:00 2001 From: btzr-io Date: Thu, 23 May 2019 02:02:16 -0600 Subject: [PATCH] add info about new static files --- package.json | 4 ++-- static/webworkers/worker-bundle.js | 9 +++++++++ yarn.lock | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ff0048352..512aebf64 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,8 @@ "electron-log": "^2.2.12", "electron-updater": "^4.0.6", "express": "^4.16.4", - "keytar": "^4.4.1" + "keytar": "^4.4.1", + "villain": "btzr-io/Villain" }, "devDependencies": { "@babel/core": "^7.0.0", @@ -172,7 +173,6 @@ "three-full": "^17.1.0", "tree-kill": "^1.1.0", "video.js": "^7.2.2", - "villain": "btzr-io/Villain", "wavesurfer.js": "^2.2.1", "webpack": "^4.28.4", "webpack-bundle-analyzer": "^3.1.0", diff --git a/static/webworkers/worker-bundle.js b/static/webworkers/worker-bundle.js index 5ab897180..d8b4ee397 100644 --- a/static/webworkers/worker-bundle.js +++ b/static/webworkers/worker-bundle.js @@ -1 +1,10 @@ +/* + This webworker bundle is part of the libarchive.js module, + so we need to make sure that it is available in the public (static) directory, + since it will not get bundled if you're using a bundler tool such as webpack + (it's all bundled up already) and specify the correct path in Archive.init() method. + + https://github.com/nika-begiashvili/libarchivejs#how-to-use +*/ + !function(){"use strict";const e={32768:"FILE",16384:"DIR",40960:"SYMBOLIC_LINK",49152:"SOCKET",8192:"CHARACTER_DEVICE",24576:"BLOCK_DEVICE",4096:"NAMED_PIPE"};class t{constructor(e){this._wasmModule=e,this._runCode=e.runCode,this._file=null}open(e){null!==this._file&&(console.warn("Closing previous file"),this.close());const{promise:t,resolve:r,reject:s}=this._promiseHandles();this._file=e;const i=new FileReader;return i.onload=(()=>this._loadFile(i.result,r,s)),i.readAsArrayBuffer(e),t}close(){this._runCode.closeArchive(this._archive),this._wasmModule._free(this._filePtr),this._file=null,this._filePtr=null,this._archive=null}*entries(t=!1,r=null){let s;for(this._archive=this._runCode.openArchive(this._filePtr,this._fileLength);0!==(s=this._runCode.getNextEntry(this._archive));){const i={size:this._runCode.getEntrySize(s),path:this._runCode.getEntryName(s),type:e[this._runCode.getEntryType(s)],ref:s};if("FILE"===i.type){let e=i.path.split("/");i.fileName=e[e.length-1]}if(t&&r!==i.path)this._runCode.skipEntry(this._archive);else{const e=this._runCode.getFileData(this._archive,i.size);if(e<0)throw new Error(this._runCode.getError(this._archive));i.fileData=this._wasmModule.HEAP8.slice(e,e+i.size),this._wasmModule._free(e)}yield i}}_loadFile(e,t,r){try{const s=new Uint8Array(e);this._fileLength=s.length,this._filePtr=this._runCode.malloc(this._fileLength),this._wasmModule.HEAP8.set(s,this._filePtr),t()}catch(e){r(e)}}_promiseHandles(){let e=null,t=null;return{promise:new Promise((r,s)=>{e=r,t=s}),resolve:e,reject:t}}}self.Module=new class{constructor(){this.preRun=[],this.postRun=[],this.totalDependencies=0}onRuntimeInitialized(){this.runCode={getVersion:Module.cwrap("get_version","string",[]),openArchive:Module.cwrap("archive_open","number",["number","number"]),getNextEntry:Module.cwrap("get_next_entry","number",["number"]),getFileData:Module.cwrap("get_filedata","number",["number","number"]),skipEntry:Module.cwrap("archive_read_data_skip","number",["number"]),closeArchive:Module.cwrap("archive_close",null,["number"]),getEntrySize:Module.cwrap("archive_entry_size","number",["number"]),getEntryName:Module.cwrap("archive_entry_pathname","string",["number"]),getEntryType:Module.cwrap("archive_entry_filetype","number",["number"]),getError:Module.cwrap("archive_error_string","string",["number"]),malloc:Module.cwrap("malloc","number",["number"]),free:Module.cwrap("free",null,["number"])},this.ready&&this.ready()}print(...e){console.log(e)}printErr(...e){console.error(e)}monitorRunDependencies(e){}locateFile(e,t=""){return`wasm-gen/${t}${e}`}},importScripts("wasm-gen/libarchive.js");let r=null,s=!1;self.Module.ready=(()=>{r=new t(self.Module),s=!1,self.postMessage({type:"READY"})}),self.onmessage=(async({data:e})=>{if(s)return void self.postMessage({type:"BUSY"});let t=!1;s=!0;try{switch(e.type){case"HELLO":break;case"OPEN":await r.open(e.file),self.postMessage({type:"OPENED"});break;case"LIST_FILES":t=!0;case"EXTRACT_FILES":for(const e of r.entries(t))self.postMessage({type:"ENTRY",entry:e});self.postMessage({type:"END"});break;case"EXTRACT_SINGLE_FILE":for(const t of r.entries(!0,e.target))t.fileData&&self.postMessage({type:"FILE",entry:t});break;default:throw new Error("Invalid Command")}}catch(e){self.postMessage({type:"ERROR",error:{message:e.message,name:e.name,stack:e.stack}})}finally{s=!1}})}(); diff --git a/yarn.lock b/yarn.lock index cf8a2db82..9d3cb337d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11805,8 +11805,8 @@ videostream@^2.5.1: range-slice-stream "^2.0.0" villain@btzr-io/Villain: - version "0.0.4" - resolved "https://codeload.github.com/btzr-io/Villain/tar.gz/e587ed3c7b3499e6250f557f3891f040da5a6846" + version "0.0.7" + resolved "https://codeload.github.com/btzr-io/Villain/tar.gz/1f39a679cd78b08f8acc0b36615550eb91f6ee03" dependencies: clsx "^1.0.4" libarchive.js "^1.1.0"