Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

7zip-wrapper

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

7zip-wrapper - npm Package Compare versions

Comparing version
0.0.1
to
0.0.2
+10
-10
dist/cli.js
#!/usr/bin/env node
#!/usr/bin/env node
"use strict";var At=Object.create;var X=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var vt=Object.getPrototypeOf,bt=Object.prototype.hasOwnProperty;var S=(t,e)=>()=>(t&&(e=t(t=0)),e);var Tt=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of wt(e))!bt.call(t,n)&&n!==r&&X(t,n,{get:()=>e[n],enumerable:!(s=Rt(e,n))||s.enumerable});return t};var x=(t,e,r)=>(r=t!=null?At(vt(t)):{},Tt(e||!t||!t.__esModule?X(r,"default",{value:t,enumerable:!0}):r,t));var l=S(()=>{"use strict"});var w,Y,o,h,Z,v=S(()=>{"use strict";l();w={SUCCESS:0,WARNING:1,FATAL_ERROR:2,COMMAND_LINE_ERROR:7,NOT_ENOUGH_MEMORY:8,USER_STOPPED:255},Y={win32:"7za.exe",linux:"7za",darwin:"7za"},o={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},h={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"},Z=3e4});function K(t,e,r,s){let n=`${t}
${e}`.toLowerCase();return n.includes("wrong password")||n.includes("incorrect password")?new D(s):n.includes("enter password")||n.includes("password is required")||n.includes("encrypted")?new I(s):n.includes("data error")||n.includes("crc failed")||n.includes("headers error")||n.includes("unexpected end")?new _(s||"unknown",t.trim()):(n.includes("cannot find archive")||n.includes("cannot open"))&&s?new A(s):new L(t.trim()||"Unknown 7-Zip error",r)}var d,b,A,I,D,_,L,T,z=S(()=>{"use strict";l();d=class extends Error{constructor(r,s,n){super(r);this.code=s;this.exitCode=n;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor)}},b=class extends d{constructor(e=[]){let r=e.length>0?` Searched: ${e.join(", ")}`:"";super(`7-Zip binary not found.${r}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError"}},A=class extends d{constructor(r){super(`Archive not found: ${r}`,"ARCHIVE_NOT_FOUND");this.archivePath=r;this.name="ArchiveNotFoundError"}},I=class extends d{constructor(r){super(r?`Password required for archive: ${r}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=r;this.name="PasswordRequiredError"}},D=class extends d{constructor(r){super(r?`Wrong password for archive: ${r}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=r;this.name="WrongPasswordError"}},_=class extends d{constructor(r,s){super(s?`Corrupt archive: ${r} - ${s}`:`Corrupt archive: ${r}`,"CORRUPT_ARCHIVE");this.archivePath=r;this.details=s;this.name="CorruptArchiveError"}},L=class extends d{constructor(e,r){super(e,"COMPRESSION_ERROR",r),this.name="CompressionError"}},T=class extends d{constructor(r,s){super(s?`Operation '${s}' timed out after ${r}ms`:`Operation timed out after ${r}ms`,"TIMEOUT");this.timeoutMs=r;this.operation=s;this.name="TimeoutError"}}});function zt(t){let e=t;for(;;){if(j.default.existsSync(O.default.join(e,"package.json")))return e;let r=O.default.dirname(e);if(r===e)return t;e=r}}var j,O,Ot,q,G=S(()=>{"use strict";l();j=x(require("fs")),O=x(require("path"));Ot=zt(__dirname),q=O.default.join(Ot,"bin")});function N(){return P||(P=Q.default.join(q,Y[tt.default.platform()]),P)}function Pt(t){return t||N()}function $t(t){let e=t||N();if(!J.default.existsSync(e))return!1;try{return(0,rt.execSync)(`"${e}"`,{timeout:5e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return!0}}function et(t){let e=Pt(t);if(!$t(e)){let r=[e];throw new b(r)}return e}var J,Q,tt,rt,P,Zt,st=S(()=>{"use strict";l();J=x(require("fs")),Q=x(require("path")),tt=x(require("os")),rt=require("child_process");v();z();G();P=null;Zt=N()});function it(t,e){let r=et(e?.binaryPath);try{return(0,nt.spawn)(r,t,{...e,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(s){throw new d(`Failed to spawn 7-Zip process: ${s.message}`)}}async function g(t,e){let r=Date.now(),s=e?.timeout??Z;return new Promise((n,i)=>{let p=[],c=[],u,a,B=!1;try{u=it(t,e)}catch(f){i(f);return}s>0&&(a=setTimeout(()=>{B=!0,u.kill("SIGTERM"),i(new T(s,`7za ${t[0]}`))},s)),u.stdout?.on("data",f=>{p.push(f),e?.onProgress&&Ct(f.toString("utf-8"),e.onProgress)}),u.stderr?.on("data",f=>{c.push(f)}),u.on("close",f=>{if(a&&clearTimeout(a),B)return;let F=Buffer.concat(p).toString("utf-8"),H=Buffer.concat(c).toString("utf-8"),W={success:f===w.SUCCESS,command:`7za ${t.join(" ")}`,stdout:F,stderr:H,exitCode:f};if(f===w.SUCCESS||f===w.WARNING)n(W);else{let V=K(H,F,f,e?.archivePath);Object.assign(V,{result:W}),i(V)}}),u.on("error",f=>{a&&clearTimeout(a),i(new d(`Failed to execute 7-Zip: ${f.message}`))})})}function Ct(t,e){let r=t.match(/(\d+)%/);r&&e({percent:parseInt(r[1],10)});let s=t.match(/- (.+)$/m);s&&e({file:s[1].trim()})}function ot(t){let e=t.split(`
`),r=[],s=0,n=0,i=0,p=0,c=null;for(let u of e){let a=u.trim();a.startsWith("Path = ")?(c?.path&&r.push(c),c={path:a.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:!1}):c&&(a.startsWith("Size = ")?c.size=parseInt(a.substring(7),10)||0:a.startsWith("Packed Size = ")?c.packedSize=parseInt(a.substring(14),10)||0:a.startsWith("Modified = ")?c.modified=new Date(a.substring(11)):a.startsWith("Attributes = ")?(c.attributes=a.substring(13),c.isDirectory=c.attributes.includes("D")):a.startsWith("CRC = ")?c.crc=a.substring(6):a.startsWith("Method = ")?c.method=a.substring(9):a.startsWith("Encrypted = ")&&(c.encrypted=a.substring(12)==="+"))}c?.path&&r.push(c);for(let u of r)u.isDirectory?p++:(i++,s+=u.size,n+=u.packedSize);return{entries:r,stats:{totalSize:s,totalPackedSize:n,fileCount:i,dirCount:p,ratio:s>0?n/s:0}}}function ct(t){let e=t.split(`
`),r={};for(let s of e){let n=s.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(n){r[n[1].toLowerCase()]=n[2];continue}let i=s.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(i){let p=i[1],c=i[2].trim();r[c]=p}}return r}function at(t){let e=t.split(`
`),r=[],s=!0;for(let n of e){let i=n.toLowerCase();(i.includes("error")||i.includes("failed")||i.includes("cannot")||i.includes("crc failed"))&&(r.push(n.trim()),s=!1)}return t.includes("Everything is Ok")&&(s=!0,r.length=0),{ok:s,errors:r}}function E(t,e,r,s){let n=[t];return n.push(...e),r&&n.push(r),s&&s.length>0&&n.push(...s),n}var nt,ut=S(()=>{"use strict";l();nt=require("child_process");st();z();v()});function $(t){if(!M.default.existsSync(t))throw new A(t)}async function pt(t,e,r){let s=[];if(r?.type&&s.push(`${o.TYPE}${r.type}`),r?.level!==void 0&&s.push(`${o.LEVEL}=${r.level}`),r?.method&&s.push(`${o.METHOD}=${r.method}`),r?.dictionarySize&&s.push(`${o.DICT_SIZE}=${r.dictionarySize}`),r?.wordSize!==void 0&&s.push(`${o.WORD_SIZE}=${r.wordSize}`),r?.threads!==void 0&&s.push(`${o.THREADS}${r.threads}`),r?.solid&&s.push(`${o.SOLID}=on`),r?.sfx&&s.push(o.SFX),r?.volumes&&s.push(`${o.VOLUME}${r.volumes}`),r?.password&&(s.push(`${o.PASSWORD}${r.password}`),r.encryptFilenames&&s.push(`${o.ENCRYPT_HEADERS}=on`)),r?.includePatterns)for(let i of r.includePatterns)s.push(`${o.INCLUDE}${i}`);if(r?.excludePatterns)for(let i of r.excludePatterns)s.push(`${o.EXCLUDE}${i}`);r?.recursive===!1?s.push(o.NO_RECURSE):s.push(o.RECURSE),r?.followSymlinks&&(s.push(`${o.STORE_HARDLINKS}-`),s.push(`${o.STORE_SYMLINKS}-`)),r?.storeSymlinks&&(s.push(o.STORE_HARDLINKS),s.push(o.STORE_SYMLINKS)),s.push(o.YES);let n=Array.isArray(e)?e:[e];return g(E(h.ADD,s,t,n),{onProgress:r?.onProgress,cwd:r?.cwd})}async function lt(t,e){$(t);let r=[o.YES];if(e?.outputDir&&r.push(`${o.OUTPUT}${e.outputDir}`),e?.password&&r.push(`${o.PASSWORD}${e.password}`),e?.includePatterns)for(let i of e.includePatterns)r.push(`${o.INCLUDE}${i}`);if(e?.excludePatterns)for(let i of e.excludePatterns)r.push(`${o.EXCLUDE}${i}`);e?.overwrite===!1?r.push(o.SKIP_EXISTING):e?.overwrite===!0&&r.push(o.OVERWRITE_ALL),e?.preservePermissions&&r.push(o.PRESERVE_PERMISSIONS);let s=e?.files||[],n=e?.flat?h.EXTRACT_FLAT:h.EXTRACT;return g(E(n,r,t,s),{archivePath:t,onProgress:e?.onProgress})}async function ft(t,e){$(t);let r=[o.TECH_INFO];e?.verbose&&r.push(o.VERBOSE),e?.password&&r.push(`${o.PASSWORD}${e.password}`);let s=await g(E(h.LIST,r,t),{archivePath:t}),n=ot(s.stdout);return{archive:t,size:n.stats.totalSize,packedSize:n.stats.totalPackedSize,fileCount:n.stats.fileCount,dirCount:n.stats.dirCount,entries:n.entries}}async function dt(t,e){$(t);let r=[o.TIMESTAMPS];e&&r.push(`${o.PASSWORD}${e}`);let s=await g(E(h.TEST,r,t),{archivePath:t}),n=at(s.stdout+s.stderr);return{archive:t,ok:s.success&&n.ok,errors:n.errors}}async function ht(t,e="crc32"){let r=[`-scrc${e}`],s=Array.isArray(t)?t:[t],n=0;for(let c of s)try{let u=M.default.statSync(c);n+=u.size}catch{}let i=await g(E(h.HASH,r,void 0,s)),p=ct(i.stdout);return{file:Array.isArray(t)?t[0]:t,hashes:p,size:n}}async function mt(t){return $(t),(await g(E(h.INFO,[],t),{archivePath:t})).stdout}async function gt(t,e){let r=[o.VERBOSE];if(t)for(let s of t)r.push(`-mm=${s}`);return e&&r.push(`-mmt=${e}`),g(E(h.BENCHMARK,r))}var M,Et=S(()=>{"use strict";l();M=x(require("fs"));ut();z();v()});l();var St=require("util");l();function C(t,e=2){if(t===0)return"0 B";let r=["B","KB","MB","GB","TB","PB"],s=1024,n=Math.floor(Math.log(t)/Math.log(s));return`${parseFloat((t/Math.pow(s,n)).toFixed(e))} ${r[n]}`}Et();var yt="2.0.0",xt=(0,St.parseArgs)({args:process.argv.slice(2),options:{help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},output:{type:"string",short:"o"},password:{type:"string",short:"p"},level:{type:"string",short:"l"},type:{type:"string",short:"t"},verbose:{type:"boolean",short:"V"},hash:{type:"string",short:"H",default:"crc32"}},allowPositionals:!0});function k(){console.log(`
7-Zip CLI Wrapper v${yt}
"use strict";var ft=Object.create;var W=Object.defineProperty;var dt=Object.getOwnPropertyDescriptor;var ht=Object.getOwnPropertyNames;var mt=Object.getPrototypeOf,gt=Object.prototype.hasOwnProperty;var Et=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ht(e))!gt.call(t,s)&&s!==r&&W(t,s,{get:()=>e[s],enumerable:!(n=dt(e,s))||n.enumerable});return t};var y=(t,e,r)=>(r=t!=null?ft(mt(t)):{},Et(e||!t||!t.__esModule?W(r,"default",{value:t,enumerable:!0}):r,t));var ut=require("util");var w={SUCCESS:0,WARNING:1,FATAL_ERROR:2,COMMAND_LINE_ERROR:7,NOT_ENOUGH_MEMORY:8,USER_STOPPED:255};var V={win32:"7za.exe",linux:"7za",darwin:"7za"},o={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},d={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"};var X=3e4;var _=y(require("fs"));var j=require("child_process");var K=y(require("fs")),I=y(require("path")),b=y(require("os")),q=require("child_process");var f=class extends Error{constructor(r,n,s){super(r);this.code=n;this.exitCode=s;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor)}},A=class extends f{constructor(e=[]){let r=e.length>0?` Searched: ${e.join(", ")}`:"";super(`7-Zip binary not found.${r}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError"}},x=class extends f{constructor(r){super(`Archive not found: ${r}`,"ARCHIVE_NOT_FOUND");this.archivePath=r;this.name="ArchiveNotFoundError"}},T=class extends f{constructor(r){super(r?`Password required for archive: ${r}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=r;this.name="PasswordRequiredError"}},O=class extends f{constructor(r){super(r?`Wrong password for archive: ${r}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=r;this.name="WrongPasswordError"}},$=class extends f{constructor(r,n){super(n?`Corrupt archive: ${r} - ${n}`:`Corrupt archive: ${r}`,"CORRUPT_ARCHIVE");this.archivePath=r;this.details=n;this.name="CorruptArchiveError"}},C=class extends f{constructor(e,r){super(e,"COMPRESSION_ERROR",r),this.name="CompressionError"}};var z=class extends f{constructor(r,n){super(n?`Operation '${n}' timed out after ${r}ms`:`Operation timed out after ${r}ms`,"TIMEOUT");this.timeoutMs=r;this.operation=n;this.name="TimeoutError"}};function Y(t,e,r,n){let s=`${t}
${e}`.toLowerCase();return s.includes("wrong password")||s.includes("incorrect password")?new O(n):s.includes("enter password")||s.includes("password is required")||s.includes("encrypted")?new T(n):s.includes("data error")||s.includes("crc failed")||s.includes("headers error")||s.includes("unexpected end")?new $(n||"unknown",t.trim()):(s.includes("cannot find archive")||s.includes("cannot open"))&&n?new x(n):new C(t.trim()||"Unknown 7-Zip error",r)}var Z=y(require("fs")),v=y(require("path"));function yt(t){let e=t;for(;;){if(Z.default.existsSync(v.default.join(e,"package.json")))return e;let r=v.default.dirname(e);if(r===e)return t;e=r}}var xt=yt(__dirname),D=v.default.join(xt,"bin");var St=[{platform:"win",arch:"x64",filename:"win-x64-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"ia32",filename:"win-x86-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"arm64",filename:"win-arm64-7za.exe",targetName:"7za.exe"},{platform:"linux",arch:"x64",filename:"linux-x64-7za",targetName:"7za"},{platform:"linux",arch:"ia32",filename:"linux-x86-7za",targetName:"7za"},{platform:"linux",arch:"arm64",filename:"linux-arm64-7za",targetName:"7za"},{platform:"linux",arch:"arm",filename:"linux-arm-7za",targetName:"7za"},{platform:"darwin",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"darwin",arch:"arm64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"arm64",filename:"mac-7za",targetName:"7za"}],R=null;var wt=()=>{let t=b.default.platform();return t==="win32"?"win":t==="darwin"?"darwin":t},At=()=>{let t=b.default.arch();return t==="x64"?"x64":t==="ia32"?"ia32":t==="arm64"?"arm64":t==="arm"?"arm":t};var zt=()=>{let t=wt(),e=At();return St.find(r=>r.platform===t&&r.arch===e)},vt=()=>V[b.default.platform()]||"7za",Rt=()=>{let t=zt();return t?I.default.join(D,t.targetName):I.default.join(D,vt())};function N(){return R||(R=Rt(),R)}var Ft=N();function bt(t){return t||N()}function Pt(t){let e=t||N();if(!K.default.existsSync(e))return!1;try{return(0,q.execSync)(`"${e}"`,{timeout:1e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return!1}}function G(t){let e=bt(t);if(!Pt(e))throw new A([e]);return e}function J(t,e){let r=G(e?.binaryPath);try{return(0,j.spawn)(r,t,{...e,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(n){throw new f(`Failed to spawn 7-Zip process: ${n.message}`)}}async function m(t,e){let r=e?.timeout??X;return new Promise((n,s)=>{let i=[],u=[],a,l,c=!1;try{a=J(t,e)}catch(p){s(p);return}r>0&&(l=setTimeout(()=>{c=!0,a.kill("SIGTERM"),s(new z(r,`7za ${t[0]}`))},r)),a.stdout?.on("data",p=>{i.push(p),e?.onProgress&&Tt(p.toString("utf-8"),e.onProgress)}),a.stderr?.on("data",p=>{u.push(p)}),a.on("close",p=>{if(l&&clearTimeout(l),c)return;let k=Buffer.concat(i).toString("utf-8"),U=Buffer.concat(u).toString("utf-8"),F={success:p===w.SUCCESS,command:`7za ${t.join(" ")}`,stdout:k,stderr:U,exitCode:p};if(p===w.SUCCESS||p===w.WARNING)n(F);else{let H=Y(U,k,p,e?.archivePath);Object.assign(H,{result:F}),s(H)}}),a.on("error",p=>{l&&clearTimeout(l),s(new f(`Failed to execute 7-Zip: ${p.message}`))})})}function Tt(t,e){let r=t.match(/(\d+)%/);r&&e({percent:parseInt(r[1],10)});let n=t.match(/- (.+)$/m);n&&e({file:n[1].trim()})}function Q(t){let e=t.split(`
`),r=[],n=0,s=0,i=0,u=0,a=null;for(let l of e){let c=l.trim();c.startsWith("Path = ")?(a?.path&&r.push(a),a={path:c.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:!1}):a&&(c.startsWith("Size = ")?a.size=parseInt(c.substring(7),10)||0:c.startsWith("Packed Size = ")?a.packedSize=parseInt(c.substring(14),10)||0:c.startsWith("Modified = ")?a.modified=new Date(c.substring(11)):c.startsWith("Attributes = ")?(a.attributes=c.substring(13),a.isDirectory=a.attributes.includes("D")):c.startsWith("CRC = ")?a.crc=c.substring(6):c.startsWith("Method = ")?a.method=c.substring(9):c.startsWith("Encrypted = ")&&(a.encrypted=c.substring(12)==="+"))}a?.path&&r.push(a);for(let l of r)l.isDirectory?u++:(i++,n+=l.size,s+=l.packedSize);return{entries:r,stats:{totalSize:n,totalPackedSize:s,fileCount:i,dirCount:u,ratio:n>0?s/n:0}}}function tt(t){let e=t.split(`
`),r={};for(let n of e){let s=n.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(s){r[s[1].toLowerCase()]=s[2];continue}let i=n.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(i){let u=i[1],a=i[2].trim();r[a]=u}}return r}function rt(t){let e=t.split(`
`),r=[],n=!0;for(let s of e){let i=s.toLowerCase();(i.includes("error")||i.includes("failed")||i.includes("cannot")||i.includes("crc failed"))&&(r.push(s.trim()),n=!1)}return t.includes("Everything is Ok")&&(n=!0,r.length=0),{ok:n,errors:r}}function g(t,e,r,n){let s=[t];return s.push(...e),r&&s.push(r),n&&n.length>0&&s.push(...n),s}function P(t){if(!_.default.existsSync(t))throw new x(t)}async function et(t,e,r){let n=[];if(r?.type&&n.push(`${o.TYPE}${r.type}`),r?.level!==void 0&&n.push(`${o.LEVEL}=${r.level}`),r?.method&&n.push(`${o.METHOD}=${r.method}`),r?.dictionarySize&&n.push(`${o.DICT_SIZE}=${r.dictionarySize}`),r?.wordSize!==void 0&&n.push(`${o.WORD_SIZE}=${r.wordSize}`),r?.threads!==void 0&&n.push(`${o.THREADS}${r.threads}`),r?.solid&&n.push(`${o.SOLID}=on`),r?.sfx&&n.push(o.SFX),r?.volumes&&n.push(`${o.VOLUME}${r.volumes}`),r?.password&&(n.push(`${o.PASSWORD}${r.password}`),r.encryptFilenames&&n.push(`${o.ENCRYPT_HEADERS}=on`)),r?.includePatterns)for(let i of r.includePatterns)n.push(`${o.INCLUDE}${i}`);if(r?.excludePatterns)for(let i of r.excludePatterns)n.push(`${o.EXCLUDE}${i}`);r?.recursive===!1?n.push(o.NO_RECURSE):n.push(o.RECURSE),r?.followSymlinks&&(n.push(`${o.STORE_HARDLINKS}-`),n.push(`${o.STORE_SYMLINKS}-`)),r?.storeSymlinks&&(n.push(o.STORE_HARDLINKS),n.push(o.STORE_SYMLINKS)),n.push(o.YES);let s=Array.isArray(e)?e:[e];return m(g(d.ADD,n,t,s),{onProgress:r?.onProgress,cwd:r?.cwd})}async function st(t,e){P(t);let r=[o.YES];if(e?.outputDir&&r.push(`${o.OUTPUT}${e.outputDir}`),e?.password&&r.push(`${o.PASSWORD}${e.password}`),e?.includePatterns)for(let i of e.includePatterns)r.push(`${o.INCLUDE}${i}`);if(e?.excludePatterns)for(let i of e.excludePatterns)r.push(`${o.EXCLUDE}${i}`);e?.overwrite===!1?r.push(o.SKIP_EXISTING):e?.overwrite===!0&&r.push(o.OVERWRITE_ALL),e?.preservePermissions&&r.push(o.PRESERVE_PERMISSIONS);let n=e?.files||[],s=e?.flat?d.EXTRACT_FLAT:d.EXTRACT;return m(g(s,r,t,n),{archivePath:t,onProgress:e?.onProgress})}async function nt(t,e){P(t);let r=[o.TECH_INFO];e?.verbose&&r.push(o.VERBOSE),e?.password&&r.push(`${o.PASSWORD}${e.password}`);let n=await m(g(d.LIST,r,t),{archivePath:t}),s=Q(n.stdout);return{archive:t,size:s.stats.totalSize,packedSize:s.stats.totalPackedSize,fileCount:s.stats.fileCount,dirCount:s.stats.dirCount,entries:s.entries}}async function it(t,e){P(t);let r=[o.TIMESTAMPS];e&&r.push(`${o.PASSWORD}${e}`);let n=await m(g(d.TEST,r,t),{archivePath:t}),s=rt(n.stdout+n.stderr);return{archive:t,ok:n.success&&s.ok,errors:s.errors}}async function ot(t,e="crc32"){let r=[`-scrc${e}`],n=Array.isArray(t)?t:[t],s=0;for(let a of n)try{let l=_.default.statSync(a);s+=l.size}catch{}let i=await m(g(d.HASH,r,void 0,n)),u=tt(i.stdout);return{file:Array.isArray(t)?t[0]:t,hashes:u,size:s}}async function at(t){return P(t),(await m(g(d.INFO,[],t),{archivePath:t})).stdout}async function ct(t,e){let r=[o.VERBOSE];if(t)for(let n of t)r.push(`-mm=${n}`);return e&&r.push(`-mmt=${e}`),m(g(d.BENCHMARK,r))}function L(t,e=2){if(t===0)return"0 B";let r=["B","KB","MB","GB","TB","PB"],n=1024,s=Math.floor(Math.log(t)/Math.log(n));return`${parseFloat((t/Math.pow(n,s)).toFixed(e))} ${r[s]}`}var lt="2.0.0",pt=(0,ut.parseArgs)({args:process.argv.slice(2),options:{help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},output:{type:"string",short:"o"},password:{type:"string",short:"p"},level:{type:"string",short:"l"},type:{type:"string",short:"t"},verbose:{type:"boolean",short:"V"},hash:{type:"string",short:"H",default:"crc32"}},allowPositionals:!0});function B(){console.log(`
7-Zip CLI Wrapper v${lt}

@@ -41,5 +41,5 @@ USAGE:

For more information, visit: https://github.com/iqbal-rashed/7zip-wrapper
`)}function It(){console.log(`7-Zip CLI Wrapper v${yt}`)}function R(t,e=!1){(xt.values.verbose||!e)&&console.log(t)}function U(t){console.log(`\u2713 ${t}`)}function m(t){console.error(`\u2717 ${t}`)}async function Dt(){let{values:t,positionals:e}=xt,[r,...s]=e;t.help&&(k(),process.exit(0)),t.version&&(It(),process.exit(0)),r||(k(),process.exit(1));try{switch(r){case"add":case"a":{let[n,...i]=s;(!n||i.length===0)&&(m("Archive and files required"),console.log("Usage: 7zip add <archive> <files...>"),process.exit(1)),R(`Creating archive: ${n}`,!0),await pt(n,i,{type:t.type||"7z",level:t.level?parseInt(t.level,10):5,password:t.password}),U(`Archive created: ${n}`);break}case"extract":case"x":case"e":{let[n]=s;n||(m("Archive path required"),console.log("Usage: 7zip extract <archive> [-o output]"),process.exit(1));let i=t.output||".";R(`Extracting: ${n}`,!0),await lt(n,{outputDir:i,password:t.password}),U(`Extracted to: ${i}`);break}case"list":case"l":{let[n]=s;n||(m("Archive path required"),console.log("Usage: 7zip list <archive>"),process.exit(1));let i=await ft(n,{password:t.password});if(console.log(`
Archive: ${n}`),console.log(`Files: ${i.fileCount}`),console.log(`Directories: ${i.dirCount}`),console.log(`Total size: ${C(i.size)}`),console.log(`Compressed: ${C(i.packedSize)}`),console.log(`Ratio: ${(i.packedSize/i.size*100).toFixed(1)}%
`),t.verbose){console.log("---");for(let p of i.entries){let c=p.isDirectory?"D":"F",u=p.size.toString().padStart(12);console.log(`${c} ${u} ${p.path}`)}}break}case"test":case"t":{let[n]=s;n||(m("Archive path required"),console.log("Usage: 7zip test <archive>"),process.exit(1)),R(`Testing: ${n}`,!0);let i=await dt(n,t.password);if(i.ok)U("Archive is OK");else{m("Archive has errors:");for(let p of i.errors)console.log(` - ${p}`);process.exit(1)}break}case"hash":case"h":{let n=s;n.length===0&&(m("Files required"),console.log("Usage: 7zip hash <files...> [-H hashType]"),process.exit(1));let i=t.hash||"crc32";R(`Calculating ${i} hash...`,!0);let p=await ht(n,i);console.log(`
Hashes:`);for(let[c,u]of Object.entries(p.hashes))console.log(` ${u} ${c}`);break}case"info":case"i":{let[n]=s;n||(m("Archive path required"),console.log("Usage: 7zip info <archive>"),process.exit(1));let i=await mt(n);console.log(i);break}case"benchmark":case"b":{R("Running benchmark...",!0);let n=await gt();console.log(n.stdout);break}default:m(`Unknown command: ${r}`),k(),process.exit(1)}}catch(n){n instanceof Error&&(m(n.message),t.verbose&&n.stack&&console.error(n.stack)),process.exit(1)}}Dt();
`)}function Ot(){console.log(`7-Zip CLI Wrapper v${lt}`)}function S(t,e=!1){(pt.values.verbose||!e)&&console.log(t)}function M(t){console.log(`\u2713 ${t}`)}function h(t){console.error(`\u2717 ${t}`)}async function $t(){let{values:t,positionals:e}=pt,[r,...n]=e;t.help&&(B(),process.exit(0)),t.version&&(Ot(),process.exit(0)),r||(B(),process.exit(1));try{switch(r){case"add":case"a":{let[s,...i]=n;(!s||i.length===0)&&(h("Archive and files required"),console.log("Usage: 7zip add <archive> <files...>"),process.exit(1)),S(`Creating archive: ${s}`,!0),await et(s,i,{type:t.type||"7z",level:t.level?parseInt(t.level,10):5,password:t.password}),M(`Archive created: ${s}`);break}case"extract":case"x":case"e":{let[s]=n;s||(h("Archive path required"),console.log("Usage: 7zip extract <archive> [-o output]"),process.exit(1));let i=t.output||".";S(`Extracting: ${s}`,!0),await st(s,{outputDir:i,password:t.password}),M(`Extracted to: ${i}`);break}case"list":case"l":{let[s]=n;s||(h("Archive path required"),console.log("Usage: 7zip list <archive>"),process.exit(1));let i=await nt(s,{password:t.password});if(console.log(`
Archive: ${s}`),console.log(`Files: ${i.fileCount}`),console.log(`Directories: ${i.dirCount}`),console.log(`Total size: ${L(i.size)}`),console.log(`Compressed: ${L(i.packedSize)}`),console.log(`Ratio: ${(i.packedSize/i.size*100).toFixed(1)}%
`),t.verbose){console.log("---");for(let u of i.entries){let a=u.isDirectory?"D":"F",l=u.size.toString().padStart(12);console.log(`${a} ${l} ${u.path}`)}}break}case"test":case"t":{let[s]=n;s||(h("Archive path required"),console.log("Usage: 7zip test <archive>"),process.exit(1)),S(`Testing: ${s}`,!0);let i=await it(s,t.password);if(i.ok)M("Archive is OK");else{h("Archive has errors:");for(let u of i.errors)console.log(` - ${u}`);process.exit(1)}break}case"hash":case"h":{let s=n;s.length===0&&(h("Files required"),console.log("Usage: 7zip hash <files...> [-H hashType]"),process.exit(1));let i=t.hash||"crc32";S(`Calculating ${i} hash...`,!0);let u=await ot(s,i);console.log(`
Hashes:`);for(let[a,l]of Object.entries(u.hashes))console.log(` ${l} ${a}`);break}case"info":case"i":{let[s]=n;s||(h("Archive path required"),console.log("Usage: 7zip info <archive>"),process.exit(1));let i=await at(s);console.log(i);break}case"benchmark":case"b":{S("Running benchmark...",!0);let s=await ct();console.log(s.stdout);break}default:h(`Unknown command: ${r}`),B(),process.exit(1)}}catch(s){s instanceof Error&&(h(s.message),t.verbose&&s.stack&&console.error(s.stack)),process.exit(1)}}$t();

@@ -323,2 +323,5 @@ import { ExecOptions } from 'child_process';

}
interface ZipWrapperOptions {
binaryPath?: string;
}
/**

@@ -341,2 +344,5 @@ * Generic command options

declare const PACKAGE_ROOT: string;
declare const DEFAULT_BIN_DIR: string;
/**

@@ -474,2 +480,53 @@ * 7-Zip command implementations

/**
* Binary detection, validation, and download helpers
*/
/**
* Get the path to the 7-Zip binary (bundled default)
*/
declare function getPath(): string;
/**
* Set the path to the 7-Zip binary (bundled default)
*/
declare function setCachePath(binaryPath?: string): string;
/**
* Binary information
*/
interface BinaryInfo {
/** Full path to binary */
path: string;
/** Whether binary is bundled with package */
isBundled: boolean;
/** Operating system */
platform: string;
/** CPU architecture */
arch: string;
/** 7-Zip version (if detectable) */
version?: string;
}
/**
* Get binary information
*/
declare function getBinaryInfo(customPath?: string): BinaryInfo;
/**
* Verify binary is executable
*/
declare function verifyBinary(binaryPath?: string): boolean;
/**
* Download the bundled binary if available for the current platform
*/
declare function downloadBundledBinary(silent?: boolean): Promise<string>;
/**
* Ensure a usable binary, downloading bundled binary when missing
*/
declare function ensureBinary(options?: {
binaryPath?: string;
silent?: boolean;
download?: boolean;
}): Promise<string>;
/**
* Clear cached binary information
*/
declare function clearBinaryCache(): void;
/**
* 7-Zip wrapper for Node.js

@@ -498,22 +555,11 @@ *

declare class ZipWrapper {
binaryPath?: string | undefined;
/**
* Create a new ZipWrapper instance
* @param binaryPath - Optional custom path to 7za binary
* @param options - Optional wrapper options including `binaryPath`
* @throws {Error} If the resolved binary path does not exist or is not executable
*/
constructor(binaryPath?: string | undefined);
binaryPath: string;
constructor(options?: ZipWrapperOptions);
/**
* Add files to archive
* @param archive - Path to the archive file
* @param files - Files or directories to add (supports wildcards)
* @param options - Compression options
*
* @example
* ```typescript
* await zip.add('archive.7z', 'src/', {
* level: 9,
* method: 'lzma2',
* password: 'secret'
* });
* ```
*/

@@ -643,2 +689,2 @@ add(archive: string, files: string | string[], options?: AddOptions): Promise<ArchiveResult>;

export { type AddOptions, type ArchiveEntry, type ArchiveFormat, type ArchiveInfo, ArchiveNotFoundError, type ArchiveResult, type ArchiveType, BinaryNotFoundError, COMPRESSION_PRESETS, CompressionError, type CompressionLevel, type CompressionMethod, type CompressionOptions, type CompressionPreset, CorruptArchiveError, type ExtendedExecOptions, type ExtractOptions, ExtractionError, type HashResult, type HashType, type ListOptions, type ListResult, type OperationStats, type PasswordOptions, PasswordRequiredError, type ProgressCallback, type RenameOptions, type TestResult, TimeoutError, UnsupportedFormatError, type UpdateOptions, type VolumeSize, type WildcardPattern, WrongPasswordError, ZipWrapper, ZipWrapperError, add, benchmark, convert, deleteFiles, extract, hash, hashArchive, info, list, parseZipWrapperError, quick, rename, test, update, zipWrapper };
export { type AddOptions, type ArchiveEntry, type ArchiveFormat, type ArchiveInfo, ArchiveNotFoundError, type ArchiveResult, type ArchiveType, BinaryNotFoundError, COMPRESSION_PRESETS, CompressionError, type CompressionLevel, type CompressionMethod, type CompressionOptions, type CompressionPreset, CorruptArchiveError, DEFAULT_BIN_DIR, type ExtendedExecOptions, type ExtractOptions, ExtractionError, type HashResult, type HashType, type ListOptions, type ListResult, type OperationStats, PACKAGE_ROOT, type PasswordOptions, PasswordRequiredError, type ProgressCallback, type RenameOptions, type TestResult, TimeoutError, UnsupportedFormatError, type UpdateOptions, type VolumeSize, type WildcardPattern, WrongPasswordError, ZipWrapper, ZipWrapperError, add, benchmark, clearBinaryCache, convert, deleteFiles, downloadBundledBinary, ensureBinary, extract, getBinaryInfo, getPath, hash, hashArchive, info, list, parseZipWrapperError, quick, rename, setCachePath, test, update, verifyBinary, zipWrapper };

@@ -323,2 +323,5 @@ import { ExecOptions } from 'child_process';

}
interface ZipWrapperOptions {
binaryPath?: string;
}
/**

@@ -341,2 +344,5 @@ * Generic command options

declare const PACKAGE_ROOT: string;
declare const DEFAULT_BIN_DIR: string;
/**

@@ -474,2 +480,53 @@ * 7-Zip command implementations

/**
* Binary detection, validation, and download helpers
*/
/**
* Get the path to the 7-Zip binary (bundled default)
*/
declare function getPath(): string;
/**
* Set the path to the 7-Zip binary (bundled default)
*/
declare function setCachePath(binaryPath?: string): string;
/**
* Binary information
*/
interface BinaryInfo {
/** Full path to binary */
path: string;
/** Whether binary is bundled with package */
isBundled: boolean;
/** Operating system */
platform: string;
/** CPU architecture */
arch: string;
/** 7-Zip version (if detectable) */
version?: string;
}
/**
* Get binary information
*/
declare function getBinaryInfo(customPath?: string): BinaryInfo;
/**
* Verify binary is executable
*/
declare function verifyBinary(binaryPath?: string): boolean;
/**
* Download the bundled binary if available for the current platform
*/
declare function downloadBundledBinary(silent?: boolean): Promise<string>;
/**
* Ensure a usable binary, downloading bundled binary when missing
*/
declare function ensureBinary(options?: {
binaryPath?: string;
silent?: boolean;
download?: boolean;
}): Promise<string>;
/**
* Clear cached binary information
*/
declare function clearBinaryCache(): void;
/**
* 7-Zip wrapper for Node.js

@@ -498,22 +555,11 @@ *

declare class ZipWrapper {
binaryPath?: string | undefined;
/**
* Create a new ZipWrapper instance
* @param binaryPath - Optional custom path to 7za binary
* @param options - Optional wrapper options including `binaryPath`
* @throws {Error} If the resolved binary path does not exist or is not executable
*/
constructor(binaryPath?: string | undefined);
binaryPath: string;
constructor(options?: ZipWrapperOptions);
/**
* Add files to archive
* @param archive - Path to the archive file
* @param files - Files or directories to add (supports wildcards)
* @param options - Compression options
*
* @example
* ```typescript
* await zip.add('archive.7z', 'src/', {
* level: 9,
* method: 'lzma2',
* password: 'secret'
* });
* ```
*/

@@ -643,2 +689,2 @@ add(archive: string, files: string | string[], options?: AddOptions): Promise<ArchiveResult>;

export { type AddOptions, type ArchiveEntry, type ArchiveFormat, type ArchiveInfo, ArchiveNotFoundError, type ArchiveResult, type ArchiveType, BinaryNotFoundError, COMPRESSION_PRESETS, CompressionError, type CompressionLevel, type CompressionMethod, type CompressionOptions, type CompressionPreset, CorruptArchiveError, type ExtendedExecOptions, type ExtractOptions, ExtractionError, type HashResult, type HashType, type ListOptions, type ListResult, type OperationStats, type PasswordOptions, PasswordRequiredError, type ProgressCallback, type RenameOptions, type TestResult, TimeoutError, UnsupportedFormatError, type UpdateOptions, type VolumeSize, type WildcardPattern, WrongPasswordError, ZipWrapper, ZipWrapperError, add, benchmark, convert, deleteFiles, extract, hash, hashArchive, info, list, parseZipWrapperError, quick, rename, test, update, zipWrapper };
export { type AddOptions, type ArchiveEntry, type ArchiveFormat, type ArchiveInfo, ArchiveNotFoundError, type ArchiveResult, type ArchiveType, BinaryNotFoundError, COMPRESSION_PRESETS, CompressionError, type CompressionLevel, type CompressionMethod, type CompressionOptions, type CompressionPreset, CorruptArchiveError, DEFAULT_BIN_DIR, type ExtendedExecOptions, type ExtractOptions, ExtractionError, type HashResult, type HashType, type ListOptions, type ListResult, type OperationStats, PACKAGE_ROOT, type PasswordOptions, PasswordRequiredError, type ProgressCallback, type RenameOptions, type TestResult, TimeoutError, UnsupportedFormatError, type UpdateOptions, type VolumeSize, type WildcardPattern, WrongPasswordError, ZipWrapper, ZipWrapperError, add, benchmark, clearBinaryCache, convert, deleteFiles, downloadBundledBinary, ensureBinary, extract, getBinaryInfo, getPath, hash, hashArchive, info, list, parseZipWrapperError, quick, rename, setCachePath, test, update, verifyBinary, zipWrapper };

@@ -1,5 +0,5 @@

'use strict';var O=require('fs'),child_process=require('child_process'),N=require('path'),lt=require('os');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var O__default=/*#__PURE__*/_interopDefault(O);var N__default=/*#__PURE__*/_interopDefault(N);var lt__default=/*#__PURE__*/_interopDefault(lt);var J={fastest:{name:"Fastest",level:1},fast:{name:"Fast",level:3},normal:{name:"Normal",level:5},maximum:{name:"Maximum",level:7},ultra:{name:"Ultra",level:9,method:"lzma2",dictionarySize:"64m",solid:true}};var A={SUCCESS:0,WARNING:1};var Q={win32:"7za.exe",linux:"7za",darwin:"7za"},i={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},d={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"};var tt=3e4;var p=class extends Error{constructor(t,s,n){super(t);this.code=s;this.exitCode=n;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor);}},y=class extends p{constructor(r=[]){let t=r.length>0?` Searched: ${r.join(", ")}`:"";super(`7-Zip binary not found.${t}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError";}},S=class extends p{constructor(t){super(`Archive not found: ${t}`,"ARCHIVE_NOT_FOUND");this.archivePath=t;this.name="ArchiveNotFoundError";}},T=class extends p{constructor(t){super(t?`Password required for archive: ${t}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=t;this.name="PasswordRequiredError";}},C=class extends p{constructor(t){super(t?`Wrong password for archive: ${t}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=t;this.name="WrongPasswordError";}},w=class extends p{constructor(t,s){super(s?`Corrupt archive: ${t} - ${s}`:`Corrupt archive: ${t}`,"CORRUPT_ARCHIVE");this.archivePath=t;this.details=s;this.name="CorruptArchiveError";}},b=class extends p{constructor(r,t){super(r,"COMPRESSION_ERROR",t),this.name="CompressionError";}},_=class extends p{constructor(r,t){super(r,"EXTRACTION_ERROR",t),this.name="ExtractionError";}},D=class extends p{constructor(t){super(`Unsupported archive format: ${t}`,"UNSUPPORTED_FORMAT");this.format=t;this.name="UnsupportedFormatError";}},x=class extends p{constructor(t,s){super(s?`Operation '${s}' timed out after ${t}ms`:`Operation timed out after ${t}ms`,"TIMEOUT");this.timeoutMs=t;this.operation=s;this.name="TimeoutError";}};function L(e,r,t,s){let n=`${e}
${r}`.toLowerCase();return n.includes("wrong password")||n.includes("incorrect password")?new C(s):n.includes("enter password")||n.includes("password is required")||n.includes("encrypted")?new T(s):n.includes("data error")||n.includes("crc failed")||n.includes("headers error")||n.includes("unexpected end")?new w(s||"unknown",e.trim()):(n.includes("cannot find archive")||n.includes("cannot open"))&&s?new S(s):new b(e.trim()||"Unknown 7-Zip error",t)}function ct(e){let r=e;for(;;){if(O__default.default.existsSync(N__default.default.join(r,"package.json")))return r;let t=N__default.default.dirname(r);if(t===r)return e;r=t;}}var ut=ct(__dirname),rt=N__default.default.join(ut,"bin");var I=null;function M(){return I||(I=N__default.default.join(rt,Q[lt__default.default.platform()]),I)}M();function ft(e){return e||M()}function ht(e){let r=e||M();if(!O__default.default.existsSync(r))return false;try{return child_process.execSync(`"${r}"`,{timeout:5e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return true}}function et(e){let r=ft(e);if(!ht(r)){let t=[r];throw new y(t)}return r}function z(e,r){let t=et(r?.binaryPath);try{return child_process.spawn(t,e,{...r,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(s){throw new p(`Failed to spawn 7-Zip process: ${s.message}`)}}async function h(e,r){let s=r?.timeout??tt;return new Promise((n,o)=>{let l=[],a=[],u,c,Z=false;try{u=z(e,r);}catch(m){o(m);return}s>0&&(c=setTimeout(()=>{Z=true,u.kill("SIGTERM"),o(new x(s,`7za ${e[0]}`));},s)),u.stdout?.on("data",m=>{l.push(m),r?.onProgress&&gt(m.toString("utf-8"),r.onProgress);}),u.stderr?.on("data",m=>{a.push(m);}),u.on("close",m=>{if(c&&clearTimeout(c),Z)return;let K=Buffer.concat(l).toString("utf-8"),j=Buffer.concat(a).toString("utf-8"),G={success:m===A.SUCCESS,command:`7za ${e.join(" ")}`,stdout:K,stderr:j,exitCode:m};if(m===A.SUCCESS||m===A.WARNING)n(G);else {let q=L(j,K,m,r?.archivePath);Object.assign(q,{result:G}),o(q);}}),u.on("error",m=>{c&&clearTimeout(c),o(new p(`Failed to execute 7-Zip: ${m.message}`));});})}function gt(e,r){let t=e.match(/(\d+)%/);t&&r({percent:parseInt(t[1],10)});let s=e.match(/- (.+)$/m);s&&r({file:s[1].trim()});}function st(e){let r=e.split(`
`),t=[],s=0,n=0,o=0,l=0,a=null;for(let u of r){let c=u.trim();c.startsWith("Path = ")?(a?.path&&t.push(a),a={path:c.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:false}):a&&(c.startsWith("Size = ")?a.size=parseInt(c.substring(7),10)||0:c.startsWith("Packed Size = ")?a.packedSize=parseInt(c.substring(14),10)||0:c.startsWith("Modified = ")?a.modified=new Date(c.substring(11)):c.startsWith("Attributes = ")?(a.attributes=c.substring(13),a.isDirectory=a.attributes.includes("D")):c.startsWith("CRC = ")?a.crc=c.substring(6):c.startsWith("Method = ")?a.method=c.substring(9):c.startsWith("Encrypted = ")&&(a.encrypted=c.substring(12)==="+"));}a?.path&&t.push(a);for(let u of t)u.isDirectory?l++:(o++,s+=u.size,n+=u.packedSize);return {entries:t,stats:{totalSize:s,totalPackedSize:n,fileCount:o,dirCount:l,ratio:s>0?n/s:0}}}function U(e){let r=e.split(`
`),t={};for(let s of r){let n=s.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(n){t[n[1].toLowerCase()]=n[2];continue}let o=s.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(o){let l=o[1],a=o[2].trim();t[a]=l;}}return t}function nt(e){let r=e.split(`
`),t=[],s=true;for(let n of r){let o=n.toLowerCase();(o.includes("error")||o.includes("failed")||o.includes("cannot")||o.includes("crc failed"))&&(t.push(n.trim()),s=false);}return e.includes("Everything is Ok")&&(s=true,t.length=0),{ok:s,errors:t}}function f(e,r,t,s){let n=[e];return n.push(...r),t&&n.push(t),s&&s.length>0&&n.push(...s),n}function E(e){if(!O__default.default.existsSync(e))throw new S(e)}async function it(e,r,t,s={}){let n=[`-si${r}`];s.password&&n.push(`-p${s.password}`),s.level&&n.push(`-mx=${s.level}`),s.method&&n.push(`-m0=${s.method}`),n.push(i.YES);let o=f(d.ADD,n,e);return new Promise((l,a)=>{try{let u=z(o,{...s,archivePath:e});t.pipe(u.stdin),u.on("close",c=>{c===0?l():a(new Error(`7-Zip exited with code ${c}`));}),u.on("error",c=>a(c)),t.on("error",c=>a(c));}catch(u){a(u);}})}function H(e,r,t={}){E(e);let s=["-so"];t.password&&s.push(`-p${t.password}`),s.push(i.YES);let n=f(d.EXTRACT,s,e,[r]),o=z(n,{...t,archivePath:e});if(!o.stdout)throw new p("Failed to get stdout from 7-Zip process");return o.stdout}async function ot(e,r,t={}){let s=H(e,r,t);return new Promise((n,o)=>{let l=[];s.on("data",a=>l.push(Buffer.from(a))),s.on("error",a=>o(a)),s.on("end",()=>n(Buffer.concat(l)));})}async function R(e,r,t){let s=[];if(t?.type&&s.push(`${i.TYPE}${t.type}`),t?.level!==void 0&&s.push(`${i.LEVEL}=${t.level}`),t?.method&&s.push(`${i.METHOD}=${t.method}`),t?.dictionarySize&&s.push(`${i.DICT_SIZE}=${t.dictionarySize}`),t?.wordSize!==void 0&&s.push(`${i.WORD_SIZE}=${t.wordSize}`),t?.threads!==void 0&&s.push(`${i.THREADS}${t.threads}`),t?.solid&&s.push(`${i.SOLID}=on`),t?.sfx&&s.push(i.SFX),t?.volumes&&s.push(`${i.VOLUME}${t.volumes}`),t?.password&&(s.push(`${i.PASSWORD}${t.password}`),t.encryptFilenames&&s.push(`${i.ENCRYPT_HEADERS}=on`)),t?.includePatterns)for(let o of t.includePatterns)s.push(`${i.INCLUDE}${o}`);if(t?.excludePatterns)for(let o of t.excludePatterns)s.push(`${i.EXCLUDE}${o}`);t?.recursive===false?s.push(i.NO_RECURSE):s.push(i.RECURSE),t?.followSymlinks&&(s.push(`${i.STORE_HARDLINKS}-`),s.push(`${i.STORE_SYMLINKS}-`)),t?.storeSymlinks&&(s.push(i.STORE_HARDLINKS),s.push(i.STORE_SYMLINKS)),s.push(i.YES);let n=Array.isArray(r)?r:[r];return h(f(d.ADD,s,e,n),{onProgress:t?.onProgress,cwd:t?.cwd})}async function P(e,r){E(e);let t=[i.YES];if(r?.outputDir&&t.push(`${i.OUTPUT}${r.outputDir}`),r?.password&&t.push(`${i.PASSWORD}${r.password}`),r?.includePatterns)for(let o of r.includePatterns)t.push(`${i.INCLUDE}${o}`);if(r?.excludePatterns)for(let o of r.excludePatterns)t.push(`${i.EXCLUDE}${o}`);r?.overwrite===false?t.push(i.SKIP_EXISTING):r?.overwrite===true&&t.push(i.OVERWRITE_ALL),r?.preservePermissions&&t.push(i.PRESERVE_PERMISSIONS);let s=r?.files||[],n=r?.flat?d.EXTRACT_FLAT:d.EXTRACT;return h(f(n,t,e,s),{archivePath:e,onProgress:r?.onProgress})}async function v(e,r){E(e);let t=[i.TECH_INFO];r?.verbose&&t.push(i.VERBOSE),r?.password&&t.push(`${i.PASSWORD}${r.password}`);let s=await h(f(d.LIST,t,e),{archivePath:e}),n=st(s.stdout);return {archive:e,size:n.stats.totalSize,packedSize:n.stats.totalPackedSize,fileCount:n.stats.fileCount,dirCount:n.stats.dirCount,entries:n.entries}}async function B(e,r){E(e);let t=[i.YES],s=[];if(r.add&&s.push(...r.add),r.update)for(let n of r.update)s.push(`!${n}`);return h(f(d.UPDATE,t,e,s),{archivePath:e,onProgress:r.onProgress,cwd:r.cwd})}async function F(e,r){E(e);let t=[i.YES],s=Array.isArray(r)?r:[r];return h(f(d.DELETE,t,e,s),{archivePath:e})}async function $(e,r){E(e);let t=[i.TIMESTAMPS];r&&t.push(`${i.PASSWORD}${r}`);let s=await h(f(d.TEST,t,e),{archivePath:e}),n=nt(s.stdout+s.stderr);return {archive:e,ok:s.success&&n.ok,errors:n.errors}}async function k(e,r="crc32"){let t=[`-scrc${r}`],s=Array.isArray(e)?e:[e],n=0;for(let a of s)try{let u=O__default.default.statSync(a);n+=u.size;}catch{}let o=await h(f(d.HASH,t,void 0,s)),l=U(o.stdout);return {file:Array.isArray(e)?e[0]:e,hashes:l,size:n}}async function St(e,r="crc32"){E(e);let t=[`-scrc${r}`],s=await h(f(d.HASH,t,e),{archivePath:e}),n=U(s.stdout),o=O__default.default.statSync(e);return {file:e,hashes:n,size:o.size}}async function W(e){return E(e),(await h(f(d.INFO,[],e),{archivePath:e})).stdout}async function Rt(e,r,t){E(e);let s=[i.YES];return h(f(d.RENAME,s,e,[r,t]),{archivePath:e})}async function Y(e,r,t){E(e);let s=`${e}_temp_${Date.now()}`;O__default.default.mkdirSync(s,{recursive:true});try{await P(e,{outputDir:s});let n=t||e.replace(/\.[^.]+$/,`.${r}`);return await R(n,s,{type:r})}finally{O__default.default.rmSync(s,{recursive:true,force:true});}}async function X(e,r){let t=[i.VERBOSE];if(e)for(let s of e)t.push(`-mm=${s}`);return r&&t.push(`-mmt=${r}`),h(f(d.BENCHMARK,t))}var V=class{constructor(r){this.binaryPath=r;}async add(r,t,s){return R(r,t,s)}async extract(r,t){return P(r,t)}async list(r,t){return v(r,t)}async update(r,t){return B(r,t)}async delete(r,t){return F(r,t)}async test(r,t){return $(r,t)}async addFromStream(r,t,s,n){return it(r,t,s,n)}extractToStream(r,t,s){return H(r,t,s)}async extractToBuffer(r,t,s){return ot(r,t,s)}async hash(r,t){return k(r,t)}async info(r){return W(r)}async benchmark(r,t){return X(r,t)}async convert(r,t,s){return Y(r,t,s)}},rr=new V,er={async zip(e,r){return R(r,e,{type:"zip",level:9})},async sevenz(e,r){return R(r,e,{type:"7z",level:9})},async extract(e,r){return P(e,{outputDir:r})},async list(e){return v(e)},async test(e){return $(e)}};exports.ArchiveNotFoundError=S;exports.BinaryNotFoundError=y;exports.COMPRESSION_PRESETS=J;exports.CompressionError=b;exports.CorruptArchiveError=w;exports.ExtractionError=_;exports.PasswordRequiredError=T;exports.TimeoutError=x;exports.UnsupportedFormatError=D;exports.WrongPasswordError=C;exports.ZipWrapper=V;exports.ZipWrapperError=p;exports.add=R;exports.benchmark=X;exports.convert=Y;exports.deleteFiles=F;exports.extract=P;exports.hash=k;exports.hashArchive=St;exports.info=W;exports.list=v;exports.parseZipWrapperError=L;exports.quick=er;exports.rename=Rt;exports.test=$;exports.update=B;exports.zipWrapper=rr;
'use strict';var P=require('fs'),U=require('path'),child_process=require('child_process'),z=require('os'),Pt=require('https');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var P__default=/*#__PURE__*/_interopDefault(P);var U__default=/*#__PURE__*/_interopDefault(U);var z__default=/*#__PURE__*/_interopDefault(z);var Pt__default=/*#__PURE__*/_interopDefault(Pt);var ut={fastest:{name:"Fastest",level:1},fast:{name:"Fast",level:3},normal:{name:"Normal",level:5},maximum:{name:"Maximum",level:7},ultra:{name:"Ultra",level:9,method:"lzma2",dictionarySize:"64m",solid:true}};function At(e){let r=e;for(;;){if(P__default.default.existsSync(U__default.default.join(r,"package.json")))return r;let t=U__default.default.dirname(r);if(t===r)return e;r=t;}}var pt=At(__dirname),R=U__default.default.join(pt,"bin");var v={SUCCESS:0,WARNING:1};var lt={win32:"7za.exe",linux:"7za",darwin:"7za"},i={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},m={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"};var mt=3e4;var l=class extends Error{constructor(t,n,s){super(t);this.code=n;this.exitCode=s;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor);}},y=class extends l{constructor(r=[]){let t=r.length>0?` Searched: ${r.join(", ")}`:"";super(`7-Zip binary not found.${t}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError";}},A=class extends l{constructor(t){super(`Archive not found: ${t}`,"ARCHIVE_NOT_FOUND");this.archivePath=t;this.name="ArchiveNotFoundError";}},I=class extends l{constructor(t){super(t?`Password required for archive: ${t}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=t;this.name="PasswordRequiredError";}},$=class extends l{constructor(t){super(t?`Wrong password for archive: ${t}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=t;this.name="WrongPasswordError";}},D=class extends l{constructor(t,n){super(n?`Corrupt archive: ${t} - ${n}`:`Corrupt archive: ${t}`,"CORRUPT_ARCHIVE");this.archivePath=t;this.details=n;this.name="CorruptArchiveError";}},N=class extends l{constructor(r,t){super(r,"COMPRESSION_ERROR",t),this.name="CompressionError";}},k=class extends l{constructor(r,t){super(r,"EXTRACTION_ERROR",t),this.name="ExtractionError";}},H=class extends l{constructor(t){super(`Unsupported archive format: ${t}`,"UNSUPPORTED_FORMAT");this.format=t;this.name="UnsupportedFormatError";}},w=class extends l{constructor(t,n){super(n?`Operation '${n}' timed out after ${t}ms`:`Operation timed out after ${t}ms`,"TIMEOUT");this.timeoutMs=t;this.operation=n;this.name="TimeoutError";}};function W(e,r,t,n){let s=`${e}
${r}`.toLowerCase();return s.includes("wrong password")||s.includes("incorrect password")?new $(n):s.includes("enter password")||s.includes("password is required")||s.includes("encrypted")?new I(n):s.includes("data error")||s.includes("crc failed")||s.includes("headers error")||s.includes("unexpected end")?new D(n||"unknown",e.trim()):(s.includes("cannot find archive")||s.includes("cannot open"))&&n?new A(n):new N(e.trim()||"Unknown 7-Zip error",t)}var Y=(e,r)=>new Promise((t,n)=>{Pt__default.default.get(e,s=>{if((s.statusCode===301||s.statusCode===302)&&s.headers.location){Y(s.headers.location,r).then(t).catch(n);return}if(s.statusCode!==200){n(new Error(`Download failed with status ${s.statusCode}`));return}let a=`${r}.download`,u=P__default.default.createWriteStream(a);s.on("error",o=>{u.destroy(),P__default.default.rmSync(a,{force:true}),n(o);}),u.on("error",o=>{P__default.default.rmSync(a,{force:true}),n(o);}),u.on("finish",()=>{u.close(()=>{P__default.default.renameSync(a,r),t();});}),s.pipe(u);}).on("error",n);});var Ot="https://github.com/iqbal-rashed/7zip-wrapper/releases/download/latest",wt=[{platform:"win",arch:"x64",filename:"win-x64-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"ia32",filename:"win-x86-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"arm64",filename:"win-arm64-7za.exe",targetName:"7za.exe"},{platform:"linux",arch:"x64",filename:"linux-x64-7za",targetName:"7za"},{platform:"linux",arch:"ia32",filename:"linux-x86-7za",targetName:"7za"},{platform:"linux",arch:"arm64",filename:"linux-arm64-7za",targetName:"7za"},{platform:"linux",arch:"arm",filename:"linux-arm-7za",targetName:"7za"},{platform:"darwin",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"darwin",arch:"arm64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"arm64",filename:"mac-7za",targetName:"7za"}],x=null,T=null,Tt=()=>{let e=z__default.default.platform();return e==="win32"?"win":e==="darwin"?"darwin":e},zt=()=>{let e=z__default.default.arch();return e==="x64"?"x64":e==="ia32"?"ia32":e==="arm64"?"arm64":e==="arm"?"arm":e},bt=e=>{P__default.default.mkdirSync(e,{recursive:true});},Ct=e=>{P__default.default.chmodSync(e,493);},ft=()=>{let e=Tt(),r=zt();return wt.find(t=>t.platform===e&&t.arch===r)},vt=()=>lt[z__default.default.platform()]||"7za",ht=()=>{let e=ft();return e?U__default.default.join(R,e.targetName):U__default.default.join(R,vt())};function S(){return x||(x=ht(),x)}function X(e){return x=e||S(),x}S();function V(e){return e||S()}function It(e){if(!e&&T)return T;let r=V(e),t={path:r,isBundled:P__default.default.existsSync(r),platform:z__default.default.platform(),arch:z__default.default.arch()};try{t.version=$t(r);}catch{}return e||(T=t),t}function $t(e){try{let r=e||S(),n=child_process.execSync(`"${r}"`,{encoding:"utf-8",timeout:5e3,windowsHide:!0}).match(/7-Zip.*?(\d+\.\d+)/);return n?n[1]:void 0}catch{return}}function K(e){let r=e||S();if(!P__default.default.existsSync(r))return false;try{return child_process.execSync(`"${r}"`,{timeout:1e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return false}}function L(e){let r=V(e);if(!K(r))throw new y([r]);return r}async function gt(e=false){let r=ft();if(!r)throw new y([ht()]);let t=U__default.default.join(R,r.targetName);if(P__default.default.existsSync(t))return x=t,t;e||console.log(`Downloading 7-Zip binary for ${r.platform}-${r.arch}...`);let n=`${Ot}/${r.filename}`;return bt(R),await Y(n,t),r.platform!=="win"&&Ct(t),e||console.log(`Successfully downloaded to: ${t}`),x=t,T=null,t}async function G(e){let r=V(e?.binaryPath);if(P__default.default.existsSync(r)){if(!K(r))throw new y([r]);return r}if(e?.binaryPath)throw new y([e.binaryPath]);if(e?.download===false)throw new y([r]);return gt(e?.silent)}function Dt(){x=null,T=null;}function B(e,r){let t=L(r?.binaryPath);try{return child_process.spawn(t,e,{...r,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(n){throw new l(`Failed to spawn 7-Zip process: ${n.message}`)}}async function h(e,r){let t=r?.timeout??mt;return new Promise((n,s)=>{let a=[],u=[],o,p,c=false;try{o=B(e,r);}catch(d){s(d);return}t>0&&(p=setTimeout(()=>{c=true,o.kill("SIGTERM"),s(new w(t,`7za ${e[0]}`));},t)),o.stdout?.on("data",d=>{a.push(d),r?.onProgress&&_t(d.toString("utf-8"),r.onProgress);}),o.stderr?.on("data",d=>{u.push(d);}),o.on("close",d=>{if(p&&clearTimeout(p),c)return;let it=Buffer.concat(a).toString("utf-8"),ot=Buffer.concat(u).toString("utf-8"),at={success:d===v.SUCCESS,command:`7za ${e.join(" ")}`,stdout:it,stderr:ot,exitCode:d};if(d===v.SUCCESS||d===v.WARNING)n(at);else {let ct=W(ot,it,d,r?.archivePath);Object.assign(ct,{result:at}),s(ct);}}),o.on("error",d=>{p&&clearTimeout(p),s(new l(`Failed to execute 7-Zip: ${d.message}`));});})}function _t(e,r){let t=e.match(/(\d+)%/);t&&r({percent:parseInt(t[1],10)});let n=e.match(/- (.+)$/m);n&&r({file:n[1].trim()});}function Et(e){let r=e.split(`
`),t=[],n=0,s=0,a=0,u=0,o=null;for(let p of r){let c=p.trim();c.startsWith("Path = ")?(o?.path&&t.push(o),o={path:c.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:false}):o&&(c.startsWith("Size = ")?o.size=parseInt(c.substring(7),10)||0:c.startsWith("Packed Size = ")?o.packedSize=parseInt(c.substring(14),10)||0:c.startsWith("Modified = ")?o.modified=new Date(c.substring(11)):c.startsWith("Attributes = ")?(o.attributes=c.substring(13),o.isDirectory=o.attributes.includes("D")):c.startsWith("CRC = ")?o.crc=c.substring(6):c.startsWith("Method = ")?o.method=c.substring(9):c.startsWith("Encrypted = ")&&(o.encrypted=c.substring(12)==="+"));}o?.path&&t.push(o);for(let p of t)p.isDirectory?u++:(a++,n+=p.size,s+=p.packedSize);return {entries:t,stats:{totalSize:n,totalPackedSize:s,fileCount:a,dirCount:u,ratio:n>0?s/n:0}}}function j(e){let r=e.split(`
`),t={};for(let n of r){let s=n.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(s){t[s[1].toLowerCase()]=s[2];continue}let a=n.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(a){let u=a[1],o=a[2].trim();t[o]=u;}}return t}function yt(e){let r=e.split(`
`),t=[],n=true;for(let s of r){let a=s.toLowerCase();(a.includes("error")||a.includes("failed")||a.includes("cannot")||a.includes("crc failed"))&&(t.push(s.trim()),n=false);}return e.includes("Everything is Ok")&&(n=true,t.length=0),{ok:n,errors:t}}function f(e,r,t,n){let s=[e];return s.push(...r),t&&s.push(t),n&&n.length>0&&s.push(...n),s}function g(e){if(!P__default.default.existsSync(e))throw new A(e)}async function xt(e,r,t,n={}){let s=[`-si${r}`];n.password&&s.push(`-p${n.password}`),n.level&&s.push(`-mx=${n.level}`),n.method&&s.push(`-m0=${n.method}`),s.push(i.YES);let a=f(m.ADD,s,e);return new Promise((u,o)=>{try{let p=B(a,{...n,archivePath:e});t.pipe(p.stdin),p.on("close",c=>{c===0?u():o(new Error(`7-Zip exited with code ${c}`));}),p.on("error",c=>o(c)),t.on("error",c=>o(c));}catch(p){o(p);}})}function q(e,r,t={}){g(e);let n=["-so"];t.password&&n.push(`-p${t.password}`),n.push(i.YES);let s=f(m.EXTRACT,n,e,[r]),a=B(s,{...t,archivePath:e});if(!a.stdout)throw new l("Failed to get stdout from 7-Zip process");return a.stdout}async function St(e,r,t={}){let n=q(e,r,t);return new Promise((s,a)=>{let u=[];n.on("data",o=>u.push(Buffer.from(o))),n.on("error",o=>a(o)),n.on("end",()=>s(Buffer.concat(u)));})}async function O(e,r,t){let n=[];if(t?.type&&n.push(`${i.TYPE}${t.type}`),t?.level!==void 0&&n.push(`${i.LEVEL}=${t.level}`),t?.method&&n.push(`${i.METHOD}=${t.method}`),t?.dictionarySize&&n.push(`${i.DICT_SIZE}=${t.dictionarySize}`),t?.wordSize!==void 0&&n.push(`${i.WORD_SIZE}=${t.wordSize}`),t?.threads!==void 0&&n.push(`${i.THREADS}${t.threads}`),t?.solid&&n.push(`${i.SOLID}=on`),t?.sfx&&n.push(i.SFX),t?.volumes&&n.push(`${i.VOLUME}${t.volumes}`),t?.password&&(n.push(`${i.PASSWORD}${t.password}`),t.encryptFilenames&&n.push(`${i.ENCRYPT_HEADERS}=on`)),t?.includePatterns)for(let a of t.includePatterns)n.push(`${i.INCLUDE}${a}`);if(t?.excludePatterns)for(let a of t.excludePatterns)n.push(`${i.EXCLUDE}${a}`);t?.recursive===false?n.push(i.NO_RECURSE):n.push(i.RECURSE),t?.followSymlinks&&(n.push(`${i.STORE_HARDLINKS}-`),n.push(`${i.STORE_SYMLINKS}-`)),t?.storeSymlinks&&(n.push(i.STORE_HARDLINKS),n.push(i.STORE_SYMLINKS)),n.push(i.YES);let s=Array.isArray(r)?r:[r];return h(f(m.ADD,n,e,s),{onProgress:t?.onProgress,cwd:t?.cwd})}async function C(e,r){g(e);let t=[i.YES];if(r?.outputDir&&t.push(`${i.OUTPUT}${r.outputDir}`),r?.password&&t.push(`${i.PASSWORD}${r.password}`),r?.includePatterns)for(let a of r.includePatterns)t.push(`${i.INCLUDE}${a}`);if(r?.excludePatterns)for(let a of r.excludePatterns)t.push(`${i.EXCLUDE}${a}`);r?.overwrite===false?t.push(i.SKIP_EXISTING):r?.overwrite===true&&t.push(i.OVERWRITE_ALL),r?.preservePermissions&&t.push(i.PRESERVE_PERMISSIONS);let n=r?.files||[],s=r?.flat?m.EXTRACT_FLAT:m.EXTRACT;return h(f(s,t,e,n),{archivePath:e,onProgress:r?.onProgress})}async function M(e,r){g(e);let t=[i.TECH_INFO];r?.verbose&&t.push(i.VERBOSE),r?.password&&t.push(`${i.PASSWORD}${r.password}`);let n=await h(f(m.LIST,t,e),{archivePath:e}),s=Et(n.stdout);return {archive:e,size:s.stats.totalSize,packedSize:s.stats.totalPackedSize,fileCount:s.stats.fileCount,dirCount:s.stats.dirCount,entries:s.entries}}async function J(e,r){g(e);let t=[i.YES],n=[];if(r.add&&n.push(...r.add),r.update)for(let s of r.update)n.push(`!${s}`);return h(f(m.UPDATE,t,e,n),{archivePath:e,onProgress:r.onProgress,cwd:r.cwd})}async function Q(e,r){g(e);let t=[i.YES],n=Array.isArray(r)?r:[r];return h(f(m.DELETE,t,e,n),{archivePath:e})}async function F(e,r){g(e);let t=[i.TIMESTAMPS];r&&t.push(`${i.PASSWORD}${r}`);let n=await h(f(m.TEST,t,e),{archivePath:e}),s=yt(n.stdout+n.stderr);return {archive:e,ok:n.success&&s.ok,errors:s.errors}}async function tt(e,r="crc32"){let t=[`-scrc${r}`],n=Array.isArray(e)?e:[e],s=0;for(let o of n)try{let p=P__default.default.statSync(o);s+=p.size;}catch{}let a=await h(f(m.HASH,t,void 0,n)),u=j(a.stdout);return {file:Array.isArray(e)?e[0]:e,hashes:u,size:s}}async function Lt(e,r="crc32"){g(e);let t=[`-scrc${r}`],n=await h(f(m.HASH,t,e),{archivePath:e}),s=j(n.stdout),a=P__default.default.statSync(e);return {file:e,hashes:s,size:a.size}}async function rt(e){return g(e),(await h(f(m.INFO,[],e),{archivePath:e})).stdout}async function Bt(e,r,t){g(e);let n=[i.YES];return h(f(m.RENAME,n,e,[r,t]),{archivePath:e})}async function et(e,r,t){g(e);let n=`${e}_temp_${Date.now()}`;P__default.default.mkdirSync(n,{recursive:true});try{await C(e,{outputDir:n});let s=t||e.replace(/\.[^.]+$/,`.${r}`);return await O(s,n,{type:r})}finally{P__default.default.rmSync(n,{recursive:true,force:true});}}async function nt(e,r){let t=[i.VERBOSE];if(e)for(let n of e)t.push(`-mm=${n}`);return r&&t.push(`-mmt=${r}`),h(f(m.BENCHMARK,t))}var st=class{binaryPath=S();constructor(r){if(r?.binaryPath){let t=L(r.binaryPath);X(t);}else G();this.binaryPath=S();}async add(r,t,n){return O(r,t,n)}async extract(r,t){return C(r,t)}async list(r,t){return M(r,t)}async update(r,t){return J(r,t)}async delete(r,t){return Q(r,t)}async test(r,t){return F(r,t)}async addFromStream(r,t,n,s){return xt(r,t,n,s)}extractToStream(r,t,n){return q(r,t,n)}async extractToBuffer(r,t,n){return St(r,t,n)}async hash(r,t){return tt(r,t)}async info(r){return rt(r)}async benchmark(r,t){return nt(r,t)}async convert(r,t,n){return et(r,t,n)}},wr=new st,Tr={async zip(e,r){return O(r,e,{type:"zip",level:9})},async sevenz(e,r){return O(r,e,{type:"7z",level:9})},async extract(e,r){return C(e,{outputDir:r})},async list(e){return M(e)},async test(e){return F(e)}};exports.ArchiveNotFoundError=A;exports.BinaryNotFoundError=y;exports.COMPRESSION_PRESETS=ut;exports.CompressionError=N;exports.CorruptArchiveError=D;exports.DEFAULT_BIN_DIR=R;exports.ExtractionError=k;exports.PACKAGE_ROOT=pt;exports.PasswordRequiredError=I;exports.TimeoutError=w;exports.UnsupportedFormatError=H;exports.WrongPasswordError=$;exports.ZipWrapper=st;exports.ZipWrapperError=l;exports.add=O;exports.benchmark=nt;exports.clearBinaryCache=Dt;exports.convert=et;exports.deleteFiles=Q;exports.downloadBundledBinary=gt;exports.ensureBinary=G;exports.extract=C;exports.getBinaryInfo=It;exports.getPath=S;exports.hash=tt;exports.hashArchive=Lt;exports.info=rt;exports.list=M;exports.parseZipWrapperError=W;exports.quick=Tr;exports.rename=Bt;exports.setCachePath=X;exports.test=F;exports.update=J;exports.verifyBinary=K;exports.zipWrapper=wr;

@@ -1,5 +0,5 @@

import M from'path';import {fileURLToPath}from'url';import P from'fs';import {spawn,execSync}from'child_process';import gt from'os';var pt=()=>fileURLToPath(import.meta.url),dt=()=>M.dirname(pt()),E=dt();var Q={fastest:{name:"Fastest",level:1},fast:{name:"Fast",level:3},normal:{name:"Normal",level:5},maximum:{name:"Maximum",level:7},ultra:{name:"Ultra",level:9,method:"lzma2",dictionarySize:"64m",solid:true}};var T={SUCCESS:0,WARNING:1};var tt={win32:"7za.exe",linux:"7za",darwin:"7za"},i={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},d={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"};var rt=3e4;var p=class extends Error{constructor(t,s,n){super(t);this.code=s;this.exitCode=n;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor);}},x=class extends p{constructor(r=[]){let t=r.length>0?` Searched: ${r.join(", ")}`:"";super(`7-Zip binary not found.${t}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError";}},R=class extends p{constructor(t){super(`Archive not found: ${t}`,"ARCHIVE_NOT_FOUND");this.archivePath=t;this.name="ArchiveNotFoundError";}},C=class extends p{constructor(t){super(t?`Password required for archive: ${t}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=t;this.name="PasswordRequiredError";}},w=class extends p{constructor(t){super(t?`Wrong password for archive: ${t}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=t;this.name="WrongPasswordError";}},b=class extends p{constructor(t,s){super(s?`Corrupt archive: ${t} - ${s}`:`Corrupt archive: ${t}`,"CORRUPT_ARCHIVE");this.archivePath=t;this.details=s;this.name="CorruptArchiveError";}},I=class extends p{constructor(r,t){super(r,"COMPRESSION_ERROR",t),this.name="CompressionError";}},D=class extends p{constructor(r,t){super(r,"EXTRACTION_ERROR",t),this.name="ExtractionError";}},L=class extends p{constructor(t){super(`Unsupported archive format: ${t}`,"UNSUPPORTED_FORMAT");this.format=t;this.name="UnsupportedFormatError";}},O=class extends p{constructor(t,s){super(s?`Operation '${s}' timed out after ${t}ms`:`Operation timed out after ${t}ms`,"TIMEOUT");this.timeoutMs=t;this.operation=s;this.name="TimeoutError";}};function N(e,r,t,s){let n=`${e}
${r}`.toLowerCase();return n.includes("wrong password")||n.includes("incorrect password")?new w(s):n.includes("enter password")||n.includes("password is required")||n.includes("encrypted")?new C(s):n.includes("data error")||n.includes("crc failed")||n.includes("headers error")||n.includes("unexpected end")?new b(s||"unknown",e.trim()):(n.includes("cannot find archive")||n.includes("cannot open"))&&s?new R(s):new I(e.trim()||"Unknown 7-Zip error",t)}function mt(e){let r=e;for(;;){if(P.existsSync(M.join(r,"package.json")))return r;let t=M.dirname(r);if(t===r)return e;r=t;}}var ft=mt(E),et=M.join(ft,"bin");var z=null;function U(){return z||(z=M.join(et,tt[gt.platform()]),z)}U();function Rt(e){return e||U()}function yt(e){let r=e||U();if(!P.existsSync(r))return false;try{return execSync(`"${r}"`,{timeout:5e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return true}}function st(e){let r=Rt(e);if(!yt(r)){let t=[r];throw new x(t)}return r}function v(e,r){let t=st(r?.binaryPath);try{return spawn(t,e,{...r,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(s){throw new p(`Failed to spawn 7-Zip process: ${s.message}`)}}async function h(e,r){let s=r?.timeout??rt;return new Promise((n,o)=>{let l=[],a=[],u,c,K=false;try{u=v(e,r);}catch(m){o(m);return}s>0&&(c=setTimeout(()=>{K=true,u.kill("SIGTERM"),o(new O(s,`7za ${e[0]}`));},s)),u.stdout?.on("data",m=>{l.push(m),r?.onProgress&&Ot(m.toString("utf-8"),r.onProgress);}),u.stderr?.on("data",m=>{a.push(m);}),u.on("close",m=>{if(c&&clearTimeout(c),K)return;let j=Buffer.concat(l).toString("utf-8"),G=Buffer.concat(a).toString("utf-8"),q={success:m===T.SUCCESS,command:`7za ${e.join(" ")}`,stdout:j,stderr:G,exitCode:m};if(m===T.SUCCESS||m===T.WARNING)n(q);else {let J=N(G,j,m,r?.archivePath);Object.assign(J,{result:q}),o(J);}}),u.on("error",m=>{c&&clearTimeout(c),o(new p(`Failed to execute 7-Zip: ${m.message}`));});})}function Ot(e,r){let t=e.match(/(\d+)%/);t&&r({percent:parseInt(t[1],10)});let s=e.match(/- (.+)$/m);s&&r({file:s[1].trim()});}function nt(e){let r=e.split(`
`),t=[],s=0,n=0,o=0,l=0,a=null;for(let u of r){let c=u.trim();c.startsWith("Path = ")?(a?.path&&t.push(a),a={path:c.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:false}):a&&(c.startsWith("Size = ")?a.size=parseInt(c.substring(7),10)||0:c.startsWith("Packed Size = ")?a.packedSize=parseInt(c.substring(14),10)||0:c.startsWith("Modified = ")?a.modified=new Date(c.substring(11)):c.startsWith("Attributes = ")?(a.attributes=c.substring(13),a.isDirectory=a.attributes.includes("D")):c.startsWith("CRC = ")?a.crc=c.substring(6):c.startsWith("Method = ")?a.method=c.substring(9):c.startsWith("Encrypted = ")&&(a.encrypted=c.substring(12)==="+"));}a?.path&&t.push(a);for(let u of t)u.isDirectory?l++:(o++,s+=u.size,n+=u.packedSize);return {entries:t,stats:{totalSize:s,totalPackedSize:n,fileCount:o,dirCount:l,ratio:s>0?n/s:0}}}function H(e){let r=e.split(`
`),t={};for(let s of r){let n=s.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(n){t[n[1].toLowerCase()]=n[2];continue}let o=s.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(o){let l=o[1],a=o[2].trim();t[a]=l;}}return t}function it(e){let r=e.split(`
`),t=[],s=true;for(let n of r){let o=n.toLowerCase();(o.includes("error")||o.includes("failed")||o.includes("cannot")||o.includes("crc failed"))&&(t.push(n.trim()),s=false);}return e.includes("Everything is Ok")&&(s=true,t.length=0),{ok:s,errors:t}}function f(e,r,t,s){let n=[e];return n.push(...r),t&&n.push(t),s&&s.length>0&&n.push(...s),n}function g(e){if(!P.existsSync(e))throw new R(e)}async function ot(e,r,t,s={}){let n=[`-si${r}`];s.password&&n.push(`-p${s.password}`),s.level&&n.push(`-mx=${s.level}`),s.method&&n.push(`-m0=${s.method}`),n.push(i.YES);let o=f(d.ADD,n,e);return new Promise((l,a)=>{try{let u=v(o,{...s,archivePath:e});t.pipe(u.stdin),u.on("close",c=>{c===0?l():a(new Error(`7-Zip exited with code ${c}`));}),u.on("error",c=>a(c)),t.on("error",c=>a(c));}catch(u){a(u);}})}function B(e,r,t={}){g(e);let s=["-so"];t.password&&s.push(`-p${t.password}`),s.push(i.YES);let n=f(d.EXTRACT,s,e,[r]),o=v(n,{...t,archivePath:e});if(!o.stdout)throw new p("Failed to get stdout from 7-Zip process");return o.stdout}async function at(e,r,t={}){let s=B(e,r,t);return new Promise((n,o)=>{let l=[];s.on("data",a=>l.push(Buffer.from(a))),s.on("error",a=>o(a)),s.on("end",()=>n(Buffer.concat(l)));})}async function y(e,r,t){let s=[];if(t?.type&&s.push(`${i.TYPE}${t.type}`),t?.level!==void 0&&s.push(`${i.LEVEL}=${t.level}`),t?.method&&s.push(`${i.METHOD}=${t.method}`),t?.dictionarySize&&s.push(`${i.DICT_SIZE}=${t.dictionarySize}`),t?.wordSize!==void 0&&s.push(`${i.WORD_SIZE}=${t.wordSize}`),t?.threads!==void 0&&s.push(`${i.THREADS}${t.threads}`),t?.solid&&s.push(`${i.SOLID}=on`),t?.sfx&&s.push(i.SFX),t?.volumes&&s.push(`${i.VOLUME}${t.volumes}`),t?.password&&(s.push(`${i.PASSWORD}${t.password}`),t.encryptFilenames&&s.push(`${i.ENCRYPT_HEADERS}=on`)),t?.includePatterns)for(let o of t.includePatterns)s.push(`${i.INCLUDE}${o}`);if(t?.excludePatterns)for(let o of t.excludePatterns)s.push(`${i.EXCLUDE}${o}`);t?.recursive===false?s.push(i.NO_RECURSE):s.push(i.RECURSE),t?.followSymlinks&&(s.push(`${i.STORE_HARDLINKS}-`),s.push(`${i.STORE_SYMLINKS}-`)),t?.storeSymlinks&&(s.push(i.STORE_HARDLINKS),s.push(i.STORE_SYMLINKS)),s.push(i.YES);let n=Array.isArray(r)?r:[r];return h(f(d.ADD,s,e,n),{onProgress:t?.onProgress,cwd:t?.cwd})}async function A(e,r){g(e);let t=[i.YES];if(r?.outputDir&&t.push(`${i.OUTPUT}${r.outputDir}`),r?.password&&t.push(`${i.PASSWORD}${r.password}`),r?.includePatterns)for(let o of r.includePatterns)t.push(`${i.INCLUDE}${o}`);if(r?.excludePatterns)for(let o of r.excludePatterns)t.push(`${i.EXCLUDE}${o}`);r?.overwrite===false?t.push(i.SKIP_EXISTING):r?.overwrite===true&&t.push(i.OVERWRITE_ALL),r?.preservePermissions&&t.push(i.PRESERVE_PERMISSIONS);let s=r?.files||[],n=r?.flat?d.EXTRACT_FLAT:d.EXTRACT;return h(f(n,t,e,s),{archivePath:e,onProgress:r?.onProgress})}async function _(e,r){g(e);let t=[i.TECH_INFO];r?.verbose&&t.push(i.VERBOSE),r?.password&&t.push(`${i.PASSWORD}${r.password}`);let s=await h(f(d.LIST,t,e),{archivePath:e}),n=nt(s.stdout);return {archive:e,size:n.stats.totalSize,packedSize:n.stats.totalPackedSize,fileCount:n.stats.fileCount,dirCount:n.stats.dirCount,entries:n.entries}}async function F(e,r){g(e);let t=[i.YES],s=[];if(r.add&&s.push(...r.add),r.update)for(let n of r.update)s.push(`!${n}`);return h(f(d.UPDATE,t,e,s),{archivePath:e,onProgress:r.onProgress,cwd:r.cwd})}async function k(e,r){g(e);let t=[i.YES],s=Array.isArray(r)?r:[r];return h(f(d.DELETE,t,e,s),{archivePath:e})}async function $(e,r){g(e);let t=[i.TIMESTAMPS];r&&t.push(`${i.PASSWORD}${r}`);let s=await h(f(d.TEST,t,e),{archivePath:e}),n=it(s.stdout+s.stderr);return {archive:e,ok:s.success&&n.ok,errors:n.errors}}async function W(e,r="crc32"){let t=[`-scrc${r}`],s=Array.isArray(e)?e:[e],n=0;for(let a of s)try{let u=P.statSync(a);n+=u.size;}catch{}let o=await h(f(d.HASH,t,void 0,s)),l=H(o.stdout);return {file:Array.isArray(e)?e[0]:e,hashes:l,size:n}}async function Pt(e,r="crc32"){g(e);let t=[`-scrc${r}`],s=await h(f(d.HASH,t,e),{archivePath:e}),n=H(s.stdout),o=P.statSync(e);return {file:e,hashes:n,size:o.size}}async function Y(e){return g(e),(await h(f(d.INFO,[],e),{archivePath:e})).stdout}async function At(e,r,t){g(e);let s=[i.YES];return h(f(d.RENAME,s,e,[r,t]),{archivePath:e})}async function X(e,r,t){g(e);let s=`${e}_temp_${Date.now()}`;P.mkdirSync(s,{recursive:true});try{await A(e,{outputDir:s});let n=t||e.replace(/\.[^.]+$/,`.${r}`);return await y(n,s,{type:r})}finally{P.rmSync(s,{recursive:true,force:true});}}async function V(e,r){let t=[i.VERBOSE];if(e)for(let s of e)t.push(`-mm=${s}`);return r&&t.push(`-mmt=${r}`),h(f(d.BENCHMARK,t))}var Z=class{constructor(r){this.binaryPath=r;}async add(r,t,s){return y(r,t,s)}async extract(r,t){return A(r,t)}async list(r,t){return _(r,t)}async update(r,t){return F(r,t)}async delete(r,t){return k(r,t)}async test(r,t){return $(r,t)}async addFromStream(r,t,s,n){return ot(r,t,s,n)}extractToStream(r,t,s){return B(r,t,s)}async extractToBuffer(r,t,s){return at(r,t,s)}async hash(r,t){return W(r,t)}async info(r){return Y(r)}async benchmark(r,t){return V(r,t)}async convert(r,t,s){return X(r,t,s)}},ur=new Z,pr={async zip(e,r){return y(r,e,{type:"zip",level:9})},async sevenz(e,r){return y(r,e,{type:"7z",level:9})},async extract(e,r){return A(e,{outputDir:r})},async list(e){return _(e)},async test(e){return $(e)}};export{R as ArchiveNotFoundError,x as BinaryNotFoundError,Q as COMPRESSION_PRESETS,I as CompressionError,b as CorruptArchiveError,D as ExtractionError,C as PasswordRequiredError,O as TimeoutError,L as UnsupportedFormatError,w as WrongPasswordError,Z as ZipWrapper,p as ZipWrapperError,y as add,V as benchmark,X as convert,k as deleteFiles,A as extract,W as hash,Pt as hashArchive,Y as info,_ as list,N as parseZipWrapperError,pr as quick,At as rename,$ as test,F as update,ur as zipWrapper};
import k from'path';import {fileURLToPath}from'url';import O from'fs';import {execSync,spawn}from'child_process';import b from'os';import bt from'https';var Ot=()=>fileURLToPath(import.meta.url),wt=()=>k.dirname(Ot()),g=wt();var pt={fastest:{name:"Fastest",level:1},fast:{name:"Fast",level:3},normal:{name:"Normal",level:5},maximum:{name:"Maximum",level:7},ultra:{name:"Ultra",level:9,method:"lzma2",dictionarySize:"64m",solid:true}};function zt(e){let r=e;for(;;){if(O.existsSync(k.join(r,"package.json")))return r;let t=k.dirname(r);if(t===r)return e;r=t;}}var lt=zt(g),A=k.join(lt,"bin");var I={SUCCESS:0,WARNING:1};var mt={win32:"7za.exe",linux:"7za",darwin:"7za"},i={TYPE:"-t",LEVEL:"-mx",METHOD:"-m0",DICT_SIZE:"-md",WORD_SIZE:"-mfbc",THREADS:"-mmt",SOLID:"-ms",ENCRYPT_HEADERS:"-mhe",PASSWORD:"-p",OUTPUT:"-o",OVERWRITE_ALL:"-aoa",SKIP_EXISTING:"-aos",TECH_INFO:"-slt",VERBOSE:"-bb1",RECURSE:"-r",NO_RECURSE:"-r-",INCLUDE:"-i!",EXCLUDE:"-x!",STORE_SYMLINKS:"-snl",STORE_HARDLINKS:"-snh",TIMESTAMPS:"-bt",YES:"-y",SFX:"-sfx",VOLUME:"-v",PRESERVE_PERMISSIONS:"-spf"},m={ADD:"a",EXTRACT:"x",EXTRACT_FLAT:"e",LIST:"l",TEST:"t",UPDATE:"u",DELETE:"d",RENAME:"rn",HASH:"h",INFO:"i",BENCHMARK:"b"};var dt=3e4;var l=class extends Error{constructor(t,n,s){super(t);this.code=n;this.exitCode=s;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor);}},x=class extends l{constructor(r=[]){let t=r.length>0?` Searched: ${r.join(", ")}`:"";super(`7-Zip binary not found.${t}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError";}},P=class extends l{constructor(t){super(`Archive not found: ${t}`,"ARCHIVE_NOT_FOUND");this.archivePath=t;this.name="ArchiveNotFoundError";}},$=class extends l{constructor(t){super(t?`Password required for archive: ${t}`:"Password required for encrypted archive","PASSWORD_REQUIRED");this.archivePath=t;this.name="PasswordRequiredError";}},D=class extends l{constructor(t){super(t?`Wrong password for archive: ${t}`:"Wrong password for encrypted archive","WRONG_PASSWORD");this.archivePath=t;this.name="WrongPasswordError";}},N=class extends l{constructor(t,n){super(n?`Corrupt archive: ${t} - ${n}`:`Corrupt archive: ${t}`,"CORRUPT_ARCHIVE");this.archivePath=t;this.details=n;this.name="CorruptArchiveError";}},_=class extends l{constructor(r,t){super(r,"COMPRESSION_ERROR",t),this.name="CompressionError";}},H=class extends l{constructor(r,t){super(r,"EXTRACTION_ERROR",t),this.name="ExtractionError";}},W=class extends l{constructor(t){super(`Unsupported archive format: ${t}`,"UNSUPPORTED_FORMAT");this.format=t;this.name="UnsupportedFormatError";}},T=class extends l{constructor(t,n){super(n?`Operation '${n}' timed out after ${t}ms`:`Operation timed out after ${t}ms`,"TIMEOUT");this.timeoutMs=t;this.operation=n;this.name="TimeoutError";}};function Y(e,r,t,n){let s=`${e}
${r}`.toLowerCase();return s.includes("wrong password")||s.includes("incorrect password")?new D(n):s.includes("enter password")||s.includes("password is required")||s.includes("encrypted")?new $(n):s.includes("data error")||s.includes("crc failed")||s.includes("headers error")||s.includes("unexpected end")?new N(n||"unknown",e.trim()):(s.includes("cannot find archive")||s.includes("cannot open"))&&n?new P(n):new _(e.trim()||"Unknown 7-Zip error",t)}var Z=(e,r)=>new Promise((t,n)=>{bt.get(e,s=>{if((s.statusCode===301||s.statusCode===302)&&s.headers.location){Z(s.headers.location,r).then(t).catch(n);return}if(s.statusCode!==200){n(new Error(`Download failed with status ${s.statusCode}`));return}let a=`${r}.download`,u=O.createWriteStream(a);s.on("error",o=>{u.destroy(),O.rmSync(a,{force:true}),n(o);}),u.on("error",o=>{O.rmSync(a,{force:true}),n(o);}),u.on("finish",()=>{u.close(()=>{O.renameSync(a,r),t();});}),s.pipe(u);}).on("error",n);});var Ct="https://github.com/iqbal-rashed/7zip-wrapper/releases/download/latest",vt=[{platform:"win",arch:"x64",filename:"win-x64-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"ia32",filename:"win-x86-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"arm64",filename:"win-arm64-7za.exe",targetName:"7za.exe"},{platform:"linux",arch:"x64",filename:"linux-x64-7za",targetName:"7za"},{platform:"linux",arch:"ia32",filename:"linux-x86-7za",targetName:"7za"},{platform:"linux",arch:"arm64",filename:"linux-arm64-7za",targetName:"7za"},{platform:"linux",arch:"arm",filename:"linux-arm-7za",targetName:"7za"},{platform:"darwin",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"darwin",arch:"arm64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"arm64",filename:"mac-7za",targetName:"7za"}],S=null,z=null,It=()=>{let e=b.platform();return e==="win32"?"win":e==="darwin"?"darwin":e},$t=()=>{let e=b.arch();return e==="x64"?"x64":e==="ia32"?"ia32":e==="arm64"?"arm64":e==="arm"?"arm":e},Dt=e=>{O.mkdirSync(e,{recursive:true});},Nt=e=>{O.chmodSync(e,493);},ht=()=>{let e=It(),r=$t();return vt.find(t=>t.platform===e&&t.arch===r)},_t=()=>mt[b.platform()]||"7za",gt=()=>{let e=ht();return e?k.join(A,e.targetName):k.join(A,_t())};function R(){return S||(S=gt(),S)}function V(e){return S=e||R(),S}R();function K(e){return e||R()}function Lt(e){if(!e&&z)return z;let r=K(e),t={path:r,isBundled:O.existsSync(r),platform:b.platform(),arch:b.arch()};try{t.version=Bt(r);}catch{}return e||(z=t),t}function Bt(e){try{let r=e||R(),n=execSync(`"${r}"`,{encoding:"utf-8",timeout:5e3,windowsHide:!0}).match(/7-Zip.*?(\d+\.\d+)/);return n?n[1]:void 0}catch{return}}function G(e){let r=e||R();if(!O.existsSync(r))return false;try{return execSync(`"${r}"`,{timeout:1e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return false}}function B(e){let r=K(e);if(!G(r))throw new x([r]);return r}async function Et(e=false){let r=ht();if(!r)throw new x([gt()]);let t=k.join(A,r.targetName);if(O.existsSync(t))return S=t,t;e||console.log(`Downloading 7-Zip binary for ${r.platform}-${r.arch}...`);let n=`${Ct}/${r.filename}`;return Dt(A),await Z(n,t),r.platform!=="win"&&Nt(t),e||console.log(`Successfully downloaded to: ${t}`),S=t,z=null,t}async function j(e){let r=K(e?.binaryPath);if(O.existsSync(r)){if(!G(r))throw new x([r]);return r}if(e?.binaryPath)throw new x([e.binaryPath]);if(e?.download===false)throw new x([r]);return Et(e?.silent)}function Mt(){S=null,z=null;}function M(e,r){let t=B(r?.binaryPath);try{return spawn(t,e,{...r,windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch(n){throw new l(`Failed to spawn 7-Zip process: ${n.message}`)}}async function h(e,r){let t=r?.timeout??dt;return new Promise((n,s)=>{let a=[],u=[],o,p,c=false;try{o=M(e,r);}catch(d){s(d);return}t>0&&(p=setTimeout(()=>{c=true,o.kill("SIGTERM"),s(new T(t,`7za ${e[0]}`));},t)),o.stdout?.on("data",d=>{a.push(d),r?.onProgress&&Ut(d.toString("utf-8"),r.onProgress);}),o.stderr?.on("data",d=>{u.push(d);}),o.on("close",d=>{if(p&&clearTimeout(p),c)return;let ot=Buffer.concat(a).toString("utf-8"),at=Buffer.concat(u).toString("utf-8"),ct={success:d===I.SUCCESS,command:`7za ${e.join(" ")}`,stdout:ot,stderr:at,exitCode:d};if(d===I.SUCCESS||d===I.WARNING)n(ct);else {let ut=Y(at,ot,d,r?.archivePath);Object.assign(ut,{result:ct}),s(ut);}}),o.on("error",d=>{p&&clearTimeout(p),s(new l(`Failed to execute 7-Zip: ${d.message}`));});})}function Ut(e,r){let t=e.match(/(\d+)%/);t&&r({percent:parseInt(t[1],10)});let n=e.match(/- (.+)$/m);n&&r({file:n[1].trim()});}function yt(e){let r=e.split(`
`),t=[],n=0,s=0,a=0,u=0,o=null;for(let p of r){let c=p.trim();c.startsWith("Path = ")?(o?.path&&t.push(o),o={path:c.substring(7),size:0,packedSize:0,modified:new Date,attributes:"",crc:"",method:"",isDirectory:false}):o&&(c.startsWith("Size = ")?o.size=parseInt(c.substring(7),10)||0:c.startsWith("Packed Size = ")?o.packedSize=parseInt(c.substring(14),10)||0:c.startsWith("Modified = ")?o.modified=new Date(c.substring(11)):c.startsWith("Attributes = ")?(o.attributes=c.substring(13),o.isDirectory=o.attributes.includes("D")):c.startsWith("CRC = ")?o.crc=c.substring(6):c.startsWith("Method = ")?o.method=c.substring(9):c.startsWith("Encrypted = ")&&(o.encrypted=c.substring(12)==="+"));}o?.path&&t.push(o);for(let p of t)p.isDirectory?u++:(a++,n+=p.size,s+=p.packedSize);return {entries:t,stats:{totalSize:n,totalPackedSize:s,fileCount:a,dirCount:u,ratio:n>0?s/n:0}}}function q(e){let r=e.split(`
`),t={};for(let n of r){let s=n.match(/(\w+)\s+for data:\s+([0-9A-Fa-f]+)/);if(s){t[s[1].toLowerCase()]=s[2];continue}let a=n.match(/^([0-9A-Fa-f]+)\s+(.+)$/);if(a){let u=a[1],o=a[2].trim();t[o]=u;}}return t}function xt(e){let r=e.split(`
`),t=[],n=true;for(let s of r){let a=s.toLowerCase();(a.includes("error")||a.includes("failed")||a.includes("cannot")||a.includes("crc failed"))&&(t.push(s.trim()),n=false);}return e.includes("Everything is Ok")&&(n=true,t.length=0),{ok:n,errors:t}}function f(e,r,t,n){let s=[e];return s.push(...r),t&&s.push(t),n&&n.length>0&&s.push(...n),s}function E(e){if(!O.existsSync(e))throw new P(e)}async function St(e,r,t,n={}){let s=[`-si${r}`];n.password&&s.push(`-p${n.password}`),n.level&&s.push(`-mx=${n.level}`),n.method&&s.push(`-m0=${n.method}`),s.push(i.YES);let a=f(m.ADD,s,e);return new Promise((u,o)=>{try{let p=M(a,{...n,archivePath:e});t.pipe(p.stdin),p.on("close",c=>{c===0?u():o(new Error(`7-Zip exited with code ${c}`));}),p.on("error",c=>o(c)),t.on("error",c=>o(c));}catch(p){o(p);}})}function J(e,r,t={}){E(e);let n=["-so"];t.password&&n.push(`-p${t.password}`),n.push(i.YES);let s=f(m.EXTRACT,n,e,[r]),a=M(s,{...t,archivePath:e});if(!a.stdout)throw new l("Failed to get stdout from 7-Zip process");return a.stdout}async function Rt(e,r,t={}){let n=J(e,r,t);return new Promise((s,a)=>{let u=[];n.on("data",o=>u.push(Buffer.from(o))),n.on("error",o=>a(o)),n.on("end",()=>s(Buffer.concat(u)));})}async function w(e,r,t){let n=[];if(t?.type&&n.push(`${i.TYPE}${t.type}`),t?.level!==void 0&&n.push(`${i.LEVEL}=${t.level}`),t?.method&&n.push(`${i.METHOD}=${t.method}`),t?.dictionarySize&&n.push(`${i.DICT_SIZE}=${t.dictionarySize}`),t?.wordSize!==void 0&&n.push(`${i.WORD_SIZE}=${t.wordSize}`),t?.threads!==void 0&&n.push(`${i.THREADS}${t.threads}`),t?.solid&&n.push(`${i.SOLID}=on`),t?.sfx&&n.push(i.SFX),t?.volumes&&n.push(`${i.VOLUME}${t.volumes}`),t?.password&&(n.push(`${i.PASSWORD}${t.password}`),t.encryptFilenames&&n.push(`${i.ENCRYPT_HEADERS}=on`)),t?.includePatterns)for(let a of t.includePatterns)n.push(`${i.INCLUDE}${a}`);if(t?.excludePatterns)for(let a of t.excludePatterns)n.push(`${i.EXCLUDE}${a}`);t?.recursive===false?n.push(i.NO_RECURSE):n.push(i.RECURSE),t?.followSymlinks&&(n.push(`${i.STORE_HARDLINKS}-`),n.push(`${i.STORE_SYMLINKS}-`)),t?.storeSymlinks&&(n.push(i.STORE_HARDLINKS),n.push(i.STORE_SYMLINKS)),n.push(i.YES);let s=Array.isArray(r)?r:[r];return h(f(m.ADD,n,e,s),{onProgress:t?.onProgress,cwd:t?.cwd})}async function v(e,r){E(e);let t=[i.YES];if(r?.outputDir&&t.push(`${i.OUTPUT}${r.outputDir}`),r?.password&&t.push(`${i.PASSWORD}${r.password}`),r?.includePatterns)for(let a of r.includePatterns)t.push(`${i.INCLUDE}${a}`);if(r?.excludePatterns)for(let a of r.excludePatterns)t.push(`${i.EXCLUDE}${a}`);r?.overwrite===false?t.push(i.SKIP_EXISTING):r?.overwrite===true&&t.push(i.OVERWRITE_ALL),r?.preservePermissions&&t.push(i.PRESERVE_PERMISSIONS);let n=r?.files||[],s=r?.flat?m.EXTRACT_FLAT:m.EXTRACT;return h(f(s,t,e,n),{archivePath:e,onProgress:r?.onProgress})}async function F(e,r){E(e);let t=[i.TECH_INFO];r?.verbose&&t.push(i.VERBOSE),r?.password&&t.push(`${i.PASSWORD}${r.password}`);let n=await h(f(m.LIST,t,e),{archivePath:e}),s=yt(n.stdout);return {archive:e,size:s.stats.totalSize,packedSize:s.stats.totalPackedSize,fileCount:s.stats.fileCount,dirCount:s.stats.dirCount,entries:s.entries}}async function Q(e,r){E(e);let t=[i.YES],n=[];if(r.add&&n.push(...r.add),r.update)for(let s of r.update)n.push(`!${s}`);return h(f(m.UPDATE,t,e,n),{archivePath:e,onProgress:r.onProgress,cwd:r.cwd})}async function tt(e,r){E(e);let t=[i.YES],n=Array.isArray(r)?r:[r];return h(f(m.DELETE,t,e,n),{archivePath:e})}async function U(e,r){E(e);let t=[i.TIMESTAMPS];r&&t.push(`${i.PASSWORD}${r}`);let n=await h(f(m.TEST,t,e),{archivePath:e}),s=xt(n.stdout+n.stderr);return {archive:e,ok:n.success&&s.ok,errors:s.errors}}async function rt(e,r="crc32"){let t=[`-scrc${r}`],n=Array.isArray(e)?e:[e],s=0;for(let o of n)try{let p=O.statSync(o);s+=p.size;}catch{}let a=await h(f(m.HASH,t,void 0,n)),u=q(a.stdout);return {file:Array.isArray(e)?e[0]:e,hashes:u,size:s}}async function kt(e,r="crc32"){E(e);let t=[`-scrc${r}`],n=await h(f(m.HASH,t,e),{archivePath:e}),s=q(n.stdout),a=O.statSync(e);return {file:e,hashes:s,size:a.size}}async function et(e){return E(e),(await h(f(m.INFO,[],e),{archivePath:e})).stdout}async function Ht(e,r,t){E(e);let n=[i.YES];return h(f(m.RENAME,n,e,[r,t]),{archivePath:e})}async function nt(e,r,t){E(e);let n=`${e}_temp_${Date.now()}`;O.mkdirSync(n,{recursive:true});try{await v(e,{outputDir:n});let s=t||e.replace(/\.[^.]+$/,`.${r}`);return await w(s,n,{type:r})}finally{O.rmSync(n,{recursive:true,force:true});}}async function st(e,r){let t=[i.VERBOSE];if(e)for(let n of e)t.push(`-mm=${n}`);return r&&t.push(`-mmt=${r}`),h(f(m.BENCHMARK,t))}var it=class{binaryPath=R();constructor(r){if(r?.binaryPath){let t=B(r.binaryPath);V(t);}else j();this.binaryPath=R();}async add(r,t,n){return w(r,t,n)}async extract(r,t){return v(r,t)}async list(r,t){return F(r,t)}async update(r,t){return Q(r,t)}async delete(r,t){return tt(r,t)}async test(r,t){return U(r,t)}async addFromStream(r,t,n,s){return St(r,t,n,s)}extractToStream(r,t,n){return J(r,t,n)}async extractToBuffer(r,t,n){return Rt(r,t,n)}async hash(r,t){return rt(r,t)}async info(r){return et(r)}async benchmark(r,t){return st(r,t)}async convert(r,t,n){return nt(r,t,n)}},Dr=new it,Nr={async zip(e,r){return w(r,e,{type:"zip",level:9})},async sevenz(e,r){return w(r,e,{type:"7z",level:9})},async extract(e,r){return v(e,{outputDir:r})},async list(e){return F(e)},async test(e){return U(e)}};export{P as ArchiveNotFoundError,x as BinaryNotFoundError,pt as COMPRESSION_PRESETS,_ as CompressionError,N as CorruptArchiveError,A as DEFAULT_BIN_DIR,H as ExtractionError,lt as PACKAGE_ROOT,$ as PasswordRequiredError,T as TimeoutError,W as UnsupportedFormatError,D as WrongPasswordError,it as ZipWrapper,l as ZipWrapperError,w as add,st as benchmark,Mt as clearBinaryCache,nt as convert,tt as deleteFiles,Et as downloadBundledBinary,j as ensureBinary,v as extract,Lt as getBinaryInfo,R as getPath,rt as hash,kt as hashArchive,et as info,F as list,Y as parseZipWrapperError,Nr as quick,Ht as rename,V as setCachePath,U as test,Q as update,G as verifyBinary,Dr as zipWrapper};

@@ -1,3 +0,1 @@

"use strict";var y=Object.create;var d=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var b=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of S(r))!N.call(e,a)&&a!==o&&d(e,a,{get:()=>r[a],enumerable:!(t=z(r,a))||t.enumerable});return e};var m=(e,r,o)=>(o=e!=null?y($(e)):{},b(r||!e||!e.__esModule?d(o,"default",{value:e,enumerable:!0}):o,e));var i=m(require("fs")),h=m(require("path")),x=m(require("https"));var g=m(require("fs")),l=m(require("path"));function _(e){let r=e;for(;;){if(g.default.existsSync(l.default.join(r,"package.json")))return r;let o=l.default.dirname(r);if(o===r)return e;r=o}}var A=_(__dirname),f=l.default.join(A,"bin");var P="https://github.com/iqbal-rashed/7zip-wrapper/releases/download/latest",D=[{platform:"win",arch:"x64",filename:"win-x64-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"ia32",filename:"win-x86-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"arm64",filename:"win-arm64-7za.exe",targetName:"7za.exe"},{platform:"linux",arch:"x64",filename:"linux-x64-7za",targetName:"7za"},{platform:"linux",arch:"ia32",filename:"linux-x86-7za",targetName:"7za"},{platform:"linux",arch:"arm64",filename:"linux-arm64-7za",targetName:"7za"},{platform:"linux",arch:"arm",filename:"linux-arm-7za",targetName:"7za"},{platform:"mac",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"arm64",filename:"mac-7za",targetName:"7za"}],T=()=>{let e=process.platform;return e==="win32"?"win":e==="darwin"?"mac":e},U=()=>{let e=process.arch;return e==="x64"?"x64":e==="ia32"?"ia32":e==="arm64"?"arm64":e==="arm"?"arm":e},k=e=>{i.default.mkdirSync(e,{recursive:!0})},v=e=>{i.default.chmodSync(e,493)},C=(e,r)=>r?`${(e/r*100).toFixed(1)}%`:"unknown",w=(e,r)=>new Promise((o,t)=>{x.default.get(e,a=>{if((a.statusCode===301||a.statusCode===302)&&a.headers.location){w(a.headers.location,r).then(o).catch(t);return}if(a.statusCode!==200){t(new Error(`Download failed with status ${a.statusCode}`));return}let n=`${r}.download`,s=i.default.createWriteStream(n),u=Number(a.headers["content-length"])||0,p=0;a.on("data",c=>{p+=c.length,u&&process.stdout.write(` ${C(p,u)}\r`)}),a.on("error",c=>{s.destroy(),i.default.rmSync(n,{force:!0}),t(c)}),s.on("error",c=>{i.default.rmSync(n,{force:!0}),t(c)}),s.on("finish",()=>{s.close(()=>{i.default.renameSync(n,r),o()})}),a.pipe(s)}).on("error",t)}),R=async()=>{let e=T(),r=U();console.log("7-Zip binary downloader"),console.log(`Platform: ${e}`),console.log(`Architecture: ${r}
`);let o=D.find(n=>n.platform===e&&n.arch===r);o||(console.warn(`Warning: No pre-built binary available for ${e}-${r}`),console.log("You can use your system 7za by setting USE_SYSTEM_7ZA=true"),process.exit(0));let t=h.default.join(f,o.targetName);i.default.existsSync(t)&&(console.log(`Binary already exists: ${t}`),process.exit(0)),console.log(`Downloading: ${o.filename}`);let a=`${P}/${o.filename}`;k(f);try{await w(a,t),e!=="win"&&v(t),console.log(`
Successfully downloaded to: ${t}`),process.exit(0)}catch(n){console.error(`Download failed: ${n.message}`),console.log("You can use your system 7za by setting USE_SYSTEM_7ZA=true"),process.exit(1)}};R().catch(e=>{console.error(`Unexpected error: ${e.message}`),process.exit(1)}).finally(()=>process.exit(0));
"use strict";var _=Object.create;var A=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var C=(r,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of I(t))!D.call(r,n)&&n!==e&&A(r,n,{get:()=>t[n],enumerable:!(o=v(t,n))||o.enumerable});return r};var i=(r,t,e)=>(e=r!=null?_(B(r)):{},C(t||!r||!r.__esModule?A(e,"default",{value:r,enumerable:!0}):e,r));var c=i(require("fs")),g=i(require("path")),x=i(require("os")),b=require("child_process");var w={win32:"7za.exe",linux:"7za",darwin:"7za"};var E=class extends Error{constructor(e,o,n){super(e);this.code=o;this.exitCode=n;this.name="ZipWrapperError",Error.captureStackTrace?.(this,this.constructor)}},a=class extends E{constructor(t=[]){let e=t.length>0?` Searched: ${t.join(", ")}`:"";super(`7-Zip binary not found.${e}`,"BINARY_NOT_FOUND"),this.name="BinaryNotFoundError"}};var z=i(require("fs")),d=i(require("path"));function P(r){let t=r;for(;;){if(z.default.existsSync(d.default.join(t,"package.json")))return t;let e=d.default.dirname(t);if(e===t)return r;t=e}}var M=P(__dirname),p=d.default.join(M,"bin");var m=i(require("fs")),R=i(require("https"));var y=(r,t)=>new Promise((e,o)=>{R.default.get(r,n=>{if((n.statusCode===301||n.statusCode===302)&&n.headers.location){y(n.headers.location,t).then(e).catch(o);return}if(n.statusCode!==200){o(new Error(`Download failed with status ${n.statusCode}`));return}let f=`${t}.download`,u=m.default.createWriteStream(f);n.on("error",h=>{u.destroy(),m.default.rmSync(f,{force:!0}),o(h)}),u.on("error",h=>{m.default.rmSync(f,{force:!0}),o(h)}),u.on("finish",()=>{u.close(()=>{m.default.renameSync(f,t),e()})}),n.pipe(u)}).on("error",o)});var $="https://github.com/iqbal-rashed/7zip-wrapper/releases/download/latest",F=[{platform:"win",arch:"x64",filename:"win-x64-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"ia32",filename:"win-x86-7za.exe",targetName:"7za.exe"},{platform:"win",arch:"arm64",filename:"win-arm64-7za.exe",targetName:"7za.exe"},{platform:"linux",arch:"x64",filename:"linux-x64-7za",targetName:"7za"},{platform:"linux",arch:"ia32",filename:"linux-x86-7za",targetName:"7za"},{platform:"linux",arch:"arm64",filename:"linux-arm64-7za",targetName:"7za"},{platform:"linux",arch:"arm",filename:"linux-arm-7za",targetName:"7za"},{platform:"darwin",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"darwin",arch:"arm64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"x64",filename:"mac-7za",targetName:"7za"},{platform:"mac",arch:"arm64",filename:"mac-7za",targetName:"7za"}],s=null,L=null,U=()=>{let r=x.default.platform();return r==="win32"?"win":r==="darwin"?"darwin":r},W=()=>{let r=x.default.arch();return r==="x64"?"x64":r==="ia32"?"ia32":r==="arm64"?"arm64":r==="arm"?"arm":r},H=r=>{c.default.mkdirSync(r,{recursive:!0})},k=r=>{c.default.chmodSync(r,493)},T=()=>{let r=U(),t=W();return F.find(e=>e.platform===r&&e.arch===t)},X=()=>w[x.default.platform()]||"7za",O=()=>{let r=T();return r?g.default.join(p,r.targetName):g.default.join(p,X())};function S(){return s||(s=O(),s)}var sr=S();function Y(r){return r||S()}function j(r){let t=r||S();if(!c.default.existsSync(t))return!1;try{return(0,b.execSync)(`"${t}"`,{timeout:1e3,windowsHide:!0,stdio:"ignore"}),!0}catch{return!1}}async function G(r=!1){let t=T();if(!t)throw new a([O()]);let e=g.default.join(p,t.targetName);if(c.default.existsSync(e))return s=e,e;r||console.log(`Downloading 7-Zip binary for ${t.platform}-${t.arch}...`);let o=`${$}/${t.filename}`;return H(p),await y(o,e),t.platform!=="win"&&k(e),r||console.log(`Successfully downloaded to: ${e}`),s=e,L=null,e}async function N(r){let t=Y(r?.binaryPath);if(c.default.existsSync(t)){if(!j(t))throw new a([t]);return t}if(r?.binaryPath)throw new a([r.binaryPath]);if(r?.download===!1)throw new a([t]);return G(r?.silent)}N().catch(r=>{console.error(`Unexpected error: ${r.message}`),process.exit(1)}).finally(()=>process.exit(0));
{
"name": "7zip-wrapper",
"version": "0.0.1",
"version": "0.0.2",
"description": "A comprehensive, feature-complete Node.js wrapper for 7-Zip with TypeScript support, bundled binaries, and cross-platform compatibility.",

@@ -5,0 +5,0 @@ "main": "./dist/index.js",