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

vite-plugin-compression2

Package Overview
Dependencies
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vite-plugin-compression2 - npm Package Compare versions

Comparing version
1.3.3
to
1.4.0
+2
-1
dist/index.d.mts
import { Plugin } from 'vite';
import { FilterPattern } from '@rollup/pluginutils';
import { InputType, ZlibOptions, BrotliOptions } from 'zlib';
import { FilterPattern } from '@rollup/pluginutils';

@@ -52,2 +52,3 @@ type Algorithm = 'gzip' | 'brotliCompress' | 'deflate' | 'deflateRaw';

staticOutputs: Set<string>;
done: Promise<void>;
}

@@ -54,0 +55,0 @@ declare function tarball(opts?: ViteTarballPluginOptions): Plugin;

import { Plugin } from 'vite';
import { FilterPattern } from '@rollup/pluginutils';
import { InputType, ZlibOptions, BrotliOptions } from 'zlib';
import { FilterPattern } from '@rollup/pluginutils';

@@ -52,2 +52,3 @@ type Algorithm = 'gzip' | 'brotliCompress' | 'deflate' | 'deflateRaw';

staticOutputs: Set<string>;
done: Promise<void>;
}

@@ -54,0 +55,0 @@ declare function tarball(opts?: ViteTarballPluginOptions): Plugin;

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("fs/promises"),e=require("fs"),n=require("os"),i=require("path"),s=require("@rollup/pluginutils"),a=require("zlib"),r=require("util"),o=require("tar-mini");function u(t){return t&&t.__esModule?t:{default:t}}var c=u(t),l=u(e),p=u(n),f=u(i),d=u(a),h=u(r);function m(t){return t.length}function y(t,e){const n="function"==typeof e?e(t):e,{dir:i,base:s}=f.default.parse(t),a=i?i+"/":"";return n.replace(/\[path\]/,a).replace(/\[base\]/,s)}function g(t){return/^\\\\\?\\/.test(t)?t:t.replace(/\\/g,"/")}const w=new TextEncoder;function b(t){return"string"==typeof t?w.encode(t):t}async function O(t,e,n){try{return await e(t,n)}catch(t){return Promise.reject(t)}}const v={gzip:{level:d.default.constants.Z_BEST_COMPRESSION},brotliCompress:{params:{[d.default.constants.BROTLI_PARAM_QUALITY]:d.default.constants.BROTLI_MAX_QUALITY}},deflate:{level:d.default.constants.Z_BEST_COMPRESSION},deflateRaw:{level:d.default.constants.Z_BEST_COMPRESSION}};class P{constructor(t){this.maxConcurrent=t,this.queue=[],this.errors=[],this.running=0}enqueue(t){this.queue.push(t),this.run()}async run(){for(;this.running<this.maxConcurrent&&this.queue.length;){const t=this.queue.shift();this.running++;try{await t()}catch(t){this.errors.push(t)}finally{this.running--,this.run()}}}async wait(){for(;this.running;)await new Promise((t=>setTimeout(t,0)));if(m(this.errors))throw new AggregateError(this.errors,"task failed")}}function j(t){return new P(t)}const q="vite-plugin-compression",z=(()=>{const t=p.default.cpus()||{length:1};return 1===t.length?10:Math.max(1,t.length-1)})();function S(t){const e=new Set,n=(t,e)=>g(f.default.resolve(t,e));if(t.build.rollupOptions?.output){(Array.isArray(t.build.rollupOptions.output)?t.build.rollupOptions.output:[t.build.rollupOptions.output]).forEach((i=>{("object"!=typeof i||m(Object.keys(i)))&&e.add(n(t.root,i.dir||t.build.outDir))}))}else e.add(n(t.root,t.build.outDir));return e}async function _(t,e){const n=!("copyPublicDir"in t.build)||t.build.copyPublicDir;if(t.publicDir&&n&&l.default.existsSync(t.publicDir)){const n=await async function(t){const e=await Promise.all((await c.default.readdir(t)).map((e=>f.default.join(t,e))));let n=0;const i=[];for(;n!==m(e);){const t=e[n],s=await c.default.stat(t);if(s.isDirectory()){const n=await c.default.readdir(t);e.push(...n.map((e=>f.default.join(t,e))))}s.isFile()&&i.push(t),n++}return i}(t.publicDir),i=f.default.join(t.root,f.default.relative(t.root,t.publicDir));await Promise.all(n.map((async t=>{const n=g(f.default.relative(i,t));await e(n,t)})))}}function x(t={}){const{include:e=/\.(html|xml|css|json|js|mjs|svg|yaml|yml|toml)$/,exclude:n,threshold:i=0,algorithm:a="gzip",filename:r,compressionOptions:o,deleteOriginalAssets:u=!1,skipIfLargerOrEqual:l=!0}=t,p=s.createFilter(e,n),g=[],w=[],P=Object.create(null);P.algorithm="string"==typeof a?function(t){const e=t in d.default?t:"gzip";return{algorithm:h.default.promisify(d.default[e])}}(a).algorithm:a,P.options="function"==typeof a?o:Object.assign(v[a],o),P.filename=r??("brotliCompress"===a?"[path][base].br":"[path][base].gz");const x=j(z),A=async function(t,e){for(const t in e){if(!p(t))continue;const n=e[t],s=b("asset"===n.type?n.source:n.code),a=m(s);a<i||x.enqueue((async()=>{const n=y(t,P.filename),i=await O(s,P.algorithm,P.options);l&&m(i)>=a||((u||t===n)&&Reflect.deleteProperty(e,t),this.emitFile({type:"asset",fileName:n,source:i}))}))}await x.wait().catch(this.error)},E={staticOutputs:new Set};return{name:q,apply:"build",enforce:"post",api:E,async configResolved(t){w.push(...S(t)),await _(t,(async t=>{g.push(t)}));const e=t.plugins.find((t=>"vite:build-import-analysis"===t.name));if(!e)throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0");!async function(t,e){const n=t.generateBundle;if("object"==typeof n&&n.handler){const t=n.handler;n.handler=async function(...n){await t.apply(this,n),await e.apply(this,n)}}"function"==typeof n&&(t.generateBundle=async function(...t){await n.apply(this,t),await e.apply(this,t)})}(e,A)},async closeBundle(){const t=async(t,e)=>{const n=f.default.join(t,e);if(!p(n)&&!E.staticOutputs.has(e))return void E.staticOutputs.add(e);const{size:s}=await c.default.stat(n);s<i?E.staticOutputs.has(e)||E.staticOutputs.add(e):await(async(t,e,n)=>{const i=await c.default.readFile(t),s=await O(i,P.algorithm,P.options);if(l&&m(s)>=m(i))return void(E.staticOutputs.has(t)||E.staticOutputs.add(t));const a=y(e,P.filename);E.staticOutputs.has(a)||E.staticOutputs.add(a);const r=f.default.join(n,a);u&&r!==t&&await c.default.rm(t,{recursive:!0,force:!0}),await c.default.writeFile(r,s)})(n,e,t)};for(const e of w)for(const n of g)x.enqueue((()=>t(e,n)));await x.wait().catch((t=>t))}}}x.getPluginAPI=t=>t.find((t=>t.name===q))?.api,exports.compression=x,exports.default=x,exports.defineCompressionOption=function(t){return t},exports.tarball=function(t={}){const{dest:e,gz:n=!1}=t,i=[],s=[];let a=[],r=process.cwd();const u=function(){const t=o.createPack(),e={dests:[],root:"",gz:!1};return{add:e=>{t.add(b(e.content),{filename:e.filename})},setup:async n=>{Object.assign(e,n);const i=e.dests.map((n=>{const i=g(f.default.resolve(e.root,n+".tar"+(e.gz?".gz":""))),s=g(f.default.dirname(i));return g(e.root)!==s&&l.default.mkdirSync(s,{recursive:!0}),new Promise(((n,s)=>{const a=l.default.createWriteStream(i);a.on("error",s),a.on("finish",n),e.gz?t.receiver.pipe(d.default.createGzip()).pipe(a):t.receiver.pipe(a)}))}));return Promise.all(i)},done:()=>t.done()}}(),p=j(z);let h;return{name:"vite-plugin-tarball",enforce:"post",async configResolved(t){s.push(...S(t)),r=t.root,a=e?[e]:s,h=x.getPluginAPI(t.plugins),h||await _(t,(async t=>{i.push(t)})),u.setup({dests:a,root:r,gz:n})},async writeBundle(t,e){for(const t in e){const n=e[t];u.add({filename:t,content:"asset"===n.type?n.source:n.code})}},async closeBundle(){!i.length&&h&&h.staticOutputs.size&&i.push(...h.staticOutputs);for(const t of s)for(const e of i)p.enqueue((async()=>{const n=f.default.join(t,e),i=await c.default.readFile(n);u.add({filename:e,content:i})}));await p.wait(),u.done()}}};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@rollup/pluginutils"),e=require("fs"),n=require("fs/promises"),i=require("os"),r=require("path"),s=require("tar-mini"),o=require("util"),a=require("zlib");function u(t){return t&&t.__esModule?t:{default:t}}var l=u(e),c=u(n),p=u(i),f=u(r),d=u(o),h=u(a);function g(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var m,w={exports:{}};function y(){if(m)return w.exports;m=1;let t,e,n,{defineProperty:i,setPrototypeOf:r,create:s,keys:o}=Object,a="",{round:u,max:l}=Math,c=t=>{let e=/([a-f\d]{3,6})/i.exec(t)?.[1],n=e?.length,i=parseInt(6^n?3^n?"0":e[0]+e[0]+e[1]+e[1]+e[2]+e[2]:e,16);return[i>>16&255,i>>8&255,255&i]},p=(t,e,n)=>t^e||e^n?16+36*u(t/51)+6*u(e/51)+u(n/51):8>t?16:t>248?231:u(24*(t-8)/247)+232,f=t=>{let e,n,i,r,s;return 8>t?30+t:16>t?t-8+90:(232>t?(s=(t-=16)%36,e=(t/36|0)/5,n=(s/6|0)/5,i=s%6/5):e=n=i=(10*(t-232)+8)/255,r=2*l(e,n,i),r?30+(u(i)<<2|u(n)<<1|u(e))+(2^r?0:60):30)},d=(()=>{let n=t=>s.some((e=>t.test(e))),i=globalThis,r=i.process??{},s=r.argv??[],a=r.env??{},u=-1;try{t=","+o(a).join(",")}catch(t){a={},u=0}let l="FORCE_COLOR",c={false:0,0:0,1:1,2:2,3:3}[a[l]]??-1,p=l in a&&c||n(/^--color=?(true|always)?$/);return p&&(u=c),~u||(u=((n,i,r)=>(e=n.TERM,{"24bit":3,truecolor:3,ansi256:2,ansi:1}[n.COLORTERM]||(n.CI?/,GITHUB/.test(t)?3:1:i&&"dumb"!==e?r?3:/-256/.test(e)?2:1:0)))(a,!!a.PM2_HOME||a.NEXT_RUNTIME?.includes("edge")||!!r.stdout?.isTTY,"win32"===r.platform)),!c||a.NO_COLOR||n(/^--(no-color|color=(false|never))$/)?0:i.window?.chrome||p&&!u?3:u})(),h={open:a,close:a},g=39,y=49,b={},O=({p:t},{open:e,close:i})=>{let s=(t,...n)=>{if(!t){if(e&&e===i)return e;if((t??a)===a)return a}let r,o=t.raw?String.raw({raw:t},...n):a+t,u=s.p,l=u.o,c=u.c;if(o.includes(""))for(;u;u=u.p){let{open:t,close:e}=u,n=e.length,i=a,s=0;if(n)for(;~(r=o.indexOf(e,s));s=r+n)i+=o.slice(s,r)+t;o=i+o.slice(s)}return l+(o.includes("\n")?o.replace(/(\r?\n)/g,c+"$1"+l):o)+c},o=e,u=i;return t&&(o=t.o+e,u=i+t.c),r(s,n),s.p={open:e,close:i,o:o,c:u,p:t},s.open=o,s.close=u,s};const v=function(t=d){let e={Ansis:v,isSupported:()=>o,strip:t=>t.replace(/[›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,a),extend(t){for(let e in t){let n=t[e],r=(typeof n)[0],s="s"===r?P(...c(n)):n;b[e]="f"===r?{get(){return(...t)=>O(this,n(...t))}}:{get(){let t=O(this,s);return i(this,e,{value:t}),t}}}return n=s({},b),r(e,n),e}},o=t>0,u=(t,e)=>o?{open:`[${t}m`,close:`[${e}m`}:h,l=t=>e=>t(...c(e)),m=(t,e)=>(n,i,r)=>u(`${t}8;2;${n};${i};${r}`,e),w=(t,e)=>(n,i,r)=>u(((t,e,n)=>f(p(t,e,n)))(n,i,r)+t,e),x=t=>(e,n,i)=>t(p(e,n,i)),P=m(3,g),E=m(4,y),_=t=>u("38;5;"+t,g),j=t=>u("48;5;"+t,y);2===t?(P=x(_),E=x(j)):1===t&&(P=w(0,g),E=w(10,y),_=t=>u(f(t),g),j=t=>u(f(t)+10,y));let R,q={fg:_,bg:j,rgb:P,bgRgb:E,hex:l(P),bgHex:l(E),visible:h,reset:u(0,0),bold:u(1,22),dim:u(2,22),italic:u(3,23),underline:u(4,24),inverse:u(7,27),hidden:u(8,28),strikethrough:u(9,29)},S="Bright";return"black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map(((t,e)=>{R="bg"+t[0].toUpperCase()+t.slice(1),8>e?(q[t+S]=u(90+e,g),q[R+S]=u(100+e,y)):e=60,q[t]=u(30+e,g),q[R]=u(40+e,y)})),e.extend(q)},x=new v;return w.exports=x,x.default=x,w.exports}var b=g(y());function O(t){return t.length}function v(t,e){const n="function"==typeof e?e(t):e,{dir:i,base:r}=f.default.parse(t),s=i?i+"/":"";return n.replace(/\[path\]/,s).replace(/\[base\]/,r)}function x(t){return/^\\\\\?\\/.test(t)?t:t.replace(/\\/g,"/")}const P=new TextEncoder;function E(t){return"string"==typeof t?P.encode(t):t}function _(){}function j(t){const e=t in h.default?t:"gzip";return{algorithm:d.default.promisify(h.default[e])}}async function R(t,e,n){try{return await e(t,n)}catch(t){return Promise.reject(t)}}const q={gzip:{level:h.default.constants.Z_BEST_COMPRESSION},brotliCompress:{params:{[h.default.constants.BROTLI_PARAM_QUALITY]:h.default.constants.BROTLI_MAX_QUALITY}},deflate:{level:h.default.constants.Z_BEST_COMPRESSION},deflateRaw:{level:h.default.constants.Z_BEST_COMPRESSION}};class S{constructor(t){this.maxConcurrent=t,this.queue=[],this.errors=[],this.running=0}enqueue(t){this.queue.push(t),this.run()}async run(){for(;this.running<this.maxConcurrent&&this.queue.length;){const t=this.queue.shift();this.running++;try{await t()}catch(t){this.errors.push(t)}finally{this.running--,this.run()}}}async wait(){for(;this.running;)await new Promise((t=>setTimeout(t,0)));if(O(this.errors))throw new AggregateError(this.errors,"task failed")}}function T(t){return new S(t)}const z="vite-plugin-compression",M=(()=>{const t=p.default.cpus()||{length:1};return 1===t.length?10:Math.max(1,t.length-1)})();function C(t){const e=new Set,n=(t,e)=>x(f.default.resolve(t,e));if(t.build.rollupOptions?.output){(Array.isArray(t.build.rollupOptions.output)?t.build.rollupOptions.output:[t.build.rollupOptions.output]).forEach((i=>{("object"!=typeof i||O(Object.keys(i)))&&e.add(n(t.root,i.dir||t.build.outDir))}))}else e.add(n(t.root,t.build.outDir));return e}async function I(t,e){const n=!("copyPublicDir"in t.build)||t.build.copyPublicDir;if(t.publicDir&&n&&l.default.existsSync(t.publicDir)){const n=await async function(t){const e=await Promise.all((await c.default.readdir(t)).map((e=>f.default.join(t,e))));let n=0;const i=[];for(;n!==O(e);){const t=e[n],r=await c.default.stat(t);if(r.isDirectory()){const n=await c.default.readdir(t);e.push(...n.map((e=>f.default.join(t,e))))}r.isFile()&&i.push(t),n++}return i}(t.publicDir),i=f.default.join(t.root,f.default.relative(t.root,t.publicDir));n.forEach((t=>{const n=x(f.default.relative(i,t));e(n,t)}))}}function A(e={}){const{include:n=/\.(html|xml|css|json|js|mjs|svg|yaml|yml|toml)$/,exclude:i,threshold:r=0,algorithm:s="gzip",filename:o,compressionOptions:a,deleteOriginalAssets:u=!1,skipIfLargerOrEqual:l=!0}=e,p=t.createFilter(n,i),d=[],h=[],{msgs:g,cleanup:m}=function(){const t=[],e=process.stdout.write.bind(process.stdout);return process.stdout.write=function(...n){const[i]=n,r="string"==typeof i?i:i.toString();return r.includes("built in")?(t.push(r),!1):e.apply(this,n)},{cleanup:()=>process.stdout.write=e,msgs:t}}();let w,y=process.cwd();const x={algorithm:"string"==typeof s?j(s).algorithm:s,options:"function"==typeof s?a:Object.assign({},q[s],a),filename:o??("brotliCompress"===s?"[path][base].br":"[path][base].gz")},P=T(M),S=async function(t,e){for(const t in e){if(!p(t))continue;const n=e[t],i=E("asset"===n.type?n.source:n.code),s=O(i);s<r||P.enqueue((async()=>{const n=v(t,x.filename),r=await R(i,x.algorithm,x.options);l&&O(r)>=s||((u||t===n)&&Reflect.deleteProperty(e,t),this.emitFile({type:"asset",fileName:n,source:r}))}))}await P.wait().catch(this.error)},A={resolve:_},B={staticOutputs:new Set,done:new Promise((t=>{A.resolve=t}))},D=new Intl.NumberFormat("en",{maximumFractionDigits:2,minimumFractionDigits:2});return{name:z,apply:"build",enforce:"post",api:B,async configResolved(t){h.push(...C(t)),await I(t,(t=>{d.push(t)}));const e=t.plugins.find((t=>"vite:build-import-analysis"===t.name));if(!e)throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0");!function(t,e){const n=t.generateBundle;if("object"==typeof n&&n.handler){const t=n.handler;n.handler=async function(...n){await t.apply(this,n),await e.apply(this,n)}}"function"==typeof n&&(t.generateBundle=async function(...t){await n.apply(this,t),await e.apply(this,t)})}(e,S),w=t.logger,y=t.root},async closeBundle(){const t=[],e=async(e,n)=>{const i=f.default.join(e,n);if(!p(i)&&!B.staticOutputs.has(n))return void B.staticOutputs.add(n);const{size:s}=await c.default.stat(i);s<r?B.staticOutputs.has(n)||B.staticOutputs.add(n):await(async(e,n,i)=>{const r=await c.default.readFile(e),s=await R(r,x.algorithm,x.options);if(l&&O(s)>=O(r))return void(B.staticOutputs.has(n)||B.staticOutputs.add(n));const o=v(n,x.filename);B.staticOutputs.has(o)||B.staticOutputs.add(o);const a=f.default.join(i,o);u&&a!==e&&await c.default.rm(e,{recursive:!0,force:!0}),await c.default.writeFile(a,s),t.push({dest:f.default.relative(y,i)+"/",file:o,size:O(s)})})(i,n,e)};for(const t of h)for(const n of d)P.enqueue((()=>e(t,n)));if(await P.wait().catch((t=>t)),A.resolve(),m(),w){const e=t.reduce(((t,e)=>{const n=e.dest+e.file;return Math.max(t,n.length)}),0);for(const{dest:i,file:r,size:s}of t){const t=r.padEnd(e);w.info(b.dim(i)+b.green(t)+b.bold(b.dim((n=s,`${D.format(n/1e3)} kB`))))}}var n;for(const t of g)console.info(t)}}}A.getPluginAPI=t=>t.find((t=>t.name===z))?.api,exports.compression=A,exports.default=A,exports.defineCompressionOption=function(t){return t},exports.tarball=function(t={}){const{dest:e,gz:n=!1}=t,i=[],r=[];let o=[],a=process.cwd();const u=function(){const t=s.createPack(),e=[],n={dests:[],root:"",gz:!1};return{add:e=>{t.add(E(e.content),{filename:e.filename})},setup:t=>{Object.assign(n,t),n.dests.forEach((t=>{const i=x(f.default.resolve(n.root,t+".tar"+(n.gz?".gz":""))),r=x(f.default.dirname(i));x(n.root)!==r&&l.default.mkdirSync(r,{recursive:!0});const s=l.default.createWriteStream(i);e.push(s)}))},done:async()=>{t.done(),await Promise.all(e.map((e=>new Promise(((i,r)=>{e.on("error",r),e.on("finish",i),n.gz?t.receiver.pipe(h.default.createGzip()).pipe(e):t.receiver.pipe(e)}))))),e.length=0}}}(),p=T(M);let d;return{name:"vite-plugin-tarball",enforce:"post",async configResolved(t){r.push(...C(t)),a=t.root,o=e?[e]:r,d=A.getPluginAPI(t.plugins),d||await I(t,(t=>{i.push(t)})),u.setup({dests:o,root:a,gz:n})},writeBundle(t,e){for(const t in e){const n=e[t];u.add({filename:t,content:"asset"===n.type?n.source:n.code})}},async closeBundle(){d&&await d.done,!i.length&&d&&d.staticOutputs.size&&i.push(...d.staticOutputs);for(const t of r)for(const e of i)p.enqueue((async()=>{const n=f.default.join(t,e),i=await c.default.readFile(n);u.add({filename:e,content:i})}));await p.wait(),await u.done()}}};

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

import t from"fs/promises";import e from"fs";import n from"os";import i from"path";import{createFilter as s}from"@rollup/pluginutils";import o from"zlib";import r from"util";import{createPack as a}from"tar-mini";function c(t){return t.length}function u(t,e){const n="function"==typeof e?e(t):e,{dir:s,base:o}=i.parse(t),r=s?s+"/":"";return n.replace(/\[path\]/,r).replace(/\[base\]/,o)}function l(t){return/^\\\\\?\\/.test(t)?t:t.replace(/\\/g,"/")}const p=new TextEncoder;function f(t){return"string"==typeof t?p.encode(t):t}function d(t){const e=t in o?t:"gzip";return{algorithm:r.promisify(o[e])}}async function m(t,e,n){try{return await e(t,n)}catch(t){return Promise.reject(t)}}const h={gzip:{level:o.constants.Z_BEST_COMPRESSION},brotliCompress:{params:{[o.constants.BROTLI_PARAM_QUALITY]:o.constants.BROTLI_MAX_QUALITY}},deflate:{level:o.constants.Z_BEST_COMPRESSION},deflateRaw:{level:o.constants.Z_BEST_COMPRESSION}};class y{constructor(t){this.maxConcurrent=t,this.queue=[],this.errors=[],this.running=0}enqueue(t){this.queue.push(t),this.run()}async run(){for(;this.running<this.maxConcurrent&&this.queue.length;){const t=this.queue.shift();this.running++;try{await t()}catch(t){this.errors.push(t)}finally{this.running--,this.run()}}}async wait(){for(;this.running;)await new Promise((t=>setTimeout(t,0)));if(c(this.errors))throw new AggregateError(this.errors,"task failed")}}function g(t){return new y(t)}const w="vite-plugin-compression",b=(()=>{const t=n.cpus()||{length:1};return 1===t.length?10:Math.max(1,t.length-1)})();function O(t){const e=new Set,n=(t,e)=>l(i.resolve(t,e));if(t.build.rollupOptions?.output){(Array.isArray(t.build.rollupOptions.output)?t.build.rollupOptions.output:[t.build.rollupOptions.output]).forEach((i=>{("object"!=typeof i||c(Object.keys(i)))&&e.add(n(t.root,i.dir||t.build.outDir))}))}else e.add(n(t.root,t.build.outDir));return e}async function v(n,s){const o=!("copyPublicDir"in n.build)||n.build.copyPublicDir;if(n.publicDir&&o&&e.existsSync(n.publicDir)){const e=await async function(e){const n=await Promise.all((await t.readdir(e)).map((t=>i.join(e,t))));let s=0;const o=[];for(;s!==c(n);){const e=n[s],r=await t.stat(e);if(r.isDirectory()){const s=await t.readdir(e);n.push(...s.map((t=>i.join(e,t))))}r.isFile()&&o.push(e),s++}return o}(n.publicDir),o=i.join(n.root,i.relative(n.root,n.publicDir));await Promise.all(e.map((async t=>{const e=l(i.relative(o,t));await s(e,t)})))}}function P(n={}){const{dest:s,gz:r=!1}=n,c=[],u=[];let p=[],d=process.cwd();const m=function(){const t=a(),n={dests:[],root:"",gz:!1};return{add:e=>{t.add(f(e.content),{filename:e.filename})},setup:async s=>{Object.assign(n,s);const r=n.dests.map((s=>{const r=l(i.resolve(n.root,s+".tar"+(n.gz?".gz":""))),a=l(i.dirname(r));return l(n.root)!==a&&e.mkdirSync(a,{recursive:!0}),new Promise(((i,s)=>{const a=e.createWriteStream(r);a.on("error",s),a.on("finish",i),n.gz?t.receiver.pipe(o.createGzip()).pipe(a):t.receiver.pipe(a)}))}));return Promise.all(r)},done:()=>t.done()}}(),h=g(b);let y;return{name:"vite-plugin-tarball",enforce:"post",async configResolved(t){u.push(...O(t)),d=t.root,p=s?[s]:u,y=j.getPluginAPI(t.plugins),y||await v(t,(async t=>{c.push(t)})),m.setup({dests:p,root:d,gz:r})},async writeBundle(t,e){for(const t in e){const n=e[t];m.add({filename:t,content:"asset"===n.type?n.source:n.code})}},async closeBundle(){!c.length&&y&&y.staticOutputs.size&&c.push(...y.staticOutputs);for(const e of u)for(const n of c)h.enqueue((async()=>{const s=i.join(e,n),o=await t.readFile(s);m.add({filename:n,content:o})}));await h.wait(),m.done()}}}function j(e={}){const{include:n=/\.(html|xml|css|json|js|mjs|svg|yaml|yml|toml)$/,exclude:o,threshold:r=0,algorithm:a="gzip",filename:l,compressionOptions:p,deleteOriginalAssets:y=!1,skipIfLargerOrEqual:P=!0}=e,j=s(n,o),z=[],S=[],A=Object.create(null);A.algorithm="string"==typeof a?d(a).algorithm:a,A.options="function"==typeof a?p:Object.assign(h[a],p),A.filename=l??("brotliCompress"===a?"[path][base].br":"[path][base].gz");const E=g(b),B=async function(t,e){for(const t in e){if(!j(t))continue;const n=e[t],i=f("asset"===n.type?n.source:n.code),s=c(i);s<r||E.enqueue((async()=>{const n=u(t,A.filename),o=await m(i,A.algorithm,A.options);P&&c(o)>=s||((y||t===n)&&Reflect.deleteProperty(e,t),this.emitFile({type:"asset",fileName:n,source:o}))}))}await E.wait().catch(this.error)},I={staticOutputs:new Set};return{name:w,apply:"build",enforce:"post",api:I,async configResolved(t){S.push(...O(t)),await v(t,(async t=>{z.push(t)}));const e=t.plugins.find((t=>"vite:build-import-analysis"===t.name));if(!e)throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0");!async function(t,e){const n=t.generateBundle;if("object"==typeof n&&n.handler){const t=n.handler;n.handler=async function(...n){await t.apply(this,n),await e.apply(this,n)}}"function"==typeof n&&(t.generateBundle=async function(...t){await n.apply(this,t),await e.apply(this,t)})}(e,B)},async closeBundle(){const e=async(e,n)=>{const s=i.join(e,n);if(!j(s)&&!I.staticOutputs.has(n))return void I.staticOutputs.add(n);const{size:o}=await t.stat(s);o<r?I.staticOutputs.has(n)||I.staticOutputs.add(n):await(async(e,n,s)=>{const o=await t.readFile(e),r=await m(o,A.algorithm,A.options);if(P&&c(r)>=c(o))return void(I.staticOutputs.has(e)||I.staticOutputs.add(e));const a=u(n,A.filename);I.staticOutputs.has(a)||I.staticOutputs.add(a);const l=i.join(s,a);y&&l!==e&&await t.rm(e,{recursive:!0,force:!0}),await t.writeFile(l,r)})(s,n,e)};for(const t of S)for(const n of z)E.enqueue((()=>e(t,n)));await E.wait().catch((t=>t))}}}function z(t){return t}j.getPluginAPI=t=>t.find((t=>t.name===w))?.api;export{j as compression,j as default,z as defineCompressionOption,P as tarball};
import{createFilter as t}from"@rollup/pluginutils";import e from"fs";import n from"fs/promises";import i from"os";import o from"path";import{createPack as s}from"tar-mini";import r from"util";import a from"zlib";function c(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var u,l={exports:{}};function p(){if(u)return l.exports;u=1;let t,e,n,{defineProperty:i,setPrototypeOf:o,create:s,keys:r}=Object,a="",{round:c,max:p}=Math,f=t=>{let e=/([a-f\d]{3,6})/i.exec(t)?.[1],n=e?.length,i=parseInt(6^n?3^n?"0":e[0]+e[0]+e[1]+e[1]+e[2]+e[2]:e,16);return[i>>16&255,i>>8&255,255&i]},d=(t,e,n)=>t^e||e^n?16+36*c(t/51)+6*c(e/51)+c(n/51):8>t?16:t>248?231:c(24*(t-8)/247)+232,h=t=>{let e,n,i,o,s;return 8>t?30+t:16>t?t-8+90:(232>t?(s=(t-=16)%36,e=(t/36|0)/5,n=(s/6|0)/5,i=s%6/5):e=n=i=(10*(t-232)+8)/255,o=2*p(e,n,i),o?30+(c(i)<<2|c(n)<<1|c(e))+(2^o?0:60):30)},m=(()=>{let n=t=>s.some((e=>t.test(e))),i=globalThis,o=i.process??{},s=o.argv??[],a=o.env??{},c=-1;try{t=","+r(a).join(",")}catch(t){a={},c=0}let u="FORCE_COLOR",l={false:0,0:0,1:1,2:2,3:3}[a[u]]??-1,p=u in a&&l||n(/^--color=?(true|always)?$/);return p&&(c=l),~c||(c=((n,i,o)=>(e=n.TERM,{"24bit":3,truecolor:3,ansi256:2,ansi:1}[n.COLORTERM]||(n.CI?/,GITHUB/.test(t)?3:1:i&&"dumb"!==e?o?3:/-256/.test(e)?2:1:0)))(a,!!a.PM2_HOME||a.NEXT_RUNTIME?.includes("edge")||!!o.stdout?.isTTY,"win32"===o.platform)),!l||a.NO_COLOR||n(/^--(no-color|color=(false|never))$/)?0:i.window?.chrome||p&&!c?3:c})(),g={open:a,close:a},w=39,y=49,b={},O=({p:t},{open:e,close:i})=>{let s=(t,...n)=>{if(!t){if(e&&e===i)return e;if((t??a)===a)return a}let o,r=t.raw?String.raw({raw:t},...n):a+t,c=s.p,u=c.o,l=c.c;if(r.includes(""))for(;c;c=c.p){let{open:t,close:e}=c,n=e.length,i=a,s=0;if(n)for(;~(o=r.indexOf(e,s));s=o+n)i+=r.slice(s,o)+t;r=i+r.slice(s)}return u+(r.includes("\n")?r.replace(/(\r?\n)/g,l+"$1"+u):r)+l},r=e,c=i;return t&&(r=t.o+e,c=i+t.c),o(s,n),s.p={open:e,close:i,o:r,c:c,p:t},s.open=r,s.close=c,s};const v=function(t=m){let e={Ansis:v,isSupported:()=>r,strip:t=>t.replace(/[›][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,a),extend(t){for(let e in t){let n=t[e],o=(typeof n)[0],s="s"===o?P(...f(n)):n;b[e]="f"===o?{get(){return(...t)=>O(this,n(...t))}}:{get(){let t=O(this,s);return i(this,e,{value:t}),t}}}return n=s({},b),o(e,n),e}},r=t>0,c=(t,e)=>r?{open:`[${t}m`,close:`[${e}m`}:g,u=t=>e=>t(...f(e)),l=(t,e)=>(n,i,o)=>c(`${t}8;2;${n};${i};${o}`,e),p=(t,e)=>(n,i,o)=>c(((t,e,n)=>h(d(t,e,n)))(n,i,o)+t,e),x=t=>(e,n,i)=>t(d(e,n,i)),P=l(3,w),E=l(4,y),R=t=>c("38;5;"+t,w),j=t=>c("48;5;"+t,y);2===t?(P=x(R),E=x(j)):1===t&&(P=p(0,w),E=p(10,y),R=t=>c(h(t),w),j=t=>c(h(t)+10,y));let S,T={fg:R,bg:j,rgb:P,bgRgb:E,hex:u(P),bgHex:u(E),visible:g,reset:c(0,0),bold:c(1,22),dim:c(2,22),italic:c(3,23),underline:c(4,24),inverse:c(7,27),hidden:c(8,28),strikethrough:c(9,29)},z="Bright";return"black,red,green,yellow,blue,magenta,cyan,white,gray".split(",").map(((t,e)=>{S="bg"+t[0].toUpperCase()+t.slice(1),8>e?(T[t+z]=c(90+e,w),T[S+z]=c(100+e,y)):e=60,T[t]=c(30+e,w),T[S]=c(40+e,y)})),e.extend(T)},x=new v;return l.exports=x,x.default=x,l.exports}var f=c(p());function d(t){return t.length}function h(t,e){const n="function"==typeof e?e(t):e,{dir:i,base:s}=o.parse(t),r=i?i+"/":"";return n.replace(/\[path\]/,r).replace(/\[base\]/,s)}function m(t){return/^\\\\\?\\/.test(t)?t:t.replace(/\\/g,"/")}const g=new TextEncoder;function w(t){return"string"==typeof t?g.encode(t):t}function y(){}function b(t){const e=t in a?t:"gzip";return{algorithm:r.promisify(a[e])}}async function O(t,e,n){try{return await e(t,n)}catch(t){return Promise.reject(t)}}const v={gzip:{level:a.constants.Z_BEST_COMPRESSION},brotliCompress:{params:{[a.constants.BROTLI_PARAM_QUALITY]:a.constants.BROTLI_MAX_QUALITY}},deflate:{level:a.constants.Z_BEST_COMPRESSION},deflateRaw:{level:a.constants.Z_BEST_COMPRESSION}};class x{constructor(t){this.maxConcurrent=t,this.queue=[],this.errors=[],this.running=0}enqueue(t){this.queue.push(t),this.run()}async run(){for(;this.running<this.maxConcurrent&&this.queue.length;){const t=this.queue.shift();this.running++;try{await t()}catch(t){this.errors.push(t)}finally{this.running--,this.run()}}}async wait(){for(;this.running;)await new Promise((t=>setTimeout(t,0)));if(d(this.errors))throw new AggregateError(this.errors,"task failed")}}function P(t){return new x(t)}const E="vite-plugin-compression",R=(()=>{const t=i.cpus()||{length:1};return 1===t.length?10:Math.max(1,t.length-1)})();function j(t){const e=new Set,n=(t,e)=>m(o.resolve(t,e));if(t.build.rollupOptions?.output){(Array.isArray(t.build.rollupOptions.output)?t.build.rollupOptions.output:[t.build.rollupOptions.output]).forEach((i=>{("object"!=typeof i||d(Object.keys(i)))&&e.add(n(t.root,i.dir||t.build.outDir))}))}else e.add(n(t.root,t.build.outDir));return e}async function S(t,i){const s=!("copyPublicDir"in t.build)||t.build.copyPublicDir;if(t.publicDir&&s&&e.existsSync(t.publicDir)){const e=await async function(t){const e=await Promise.all((await n.readdir(t)).map((e=>o.join(t,e))));let i=0;const s=[];for(;i!==d(e);){const t=e[i],r=await n.stat(t);if(r.isDirectory()){const i=await n.readdir(t);e.push(...i.map((e=>o.join(t,e))))}r.isFile()&&s.push(t),i++}return s}(t.publicDir),s=o.join(t.root,o.relative(t.root,t.publicDir));e.forEach((t=>{const e=m(o.relative(s,t));i(e,t)}))}}function T(t={}){const{dest:i,gz:r=!1}=t,c=[],u=[];let l=[],p=process.cwd();const f=function(){const t=s(),n=[],i={dests:[],root:"",gz:!1};return{add:e=>{t.add(w(e.content),{filename:e.filename})},setup:t=>{Object.assign(i,t),i.dests.forEach((t=>{const s=m(o.resolve(i.root,t+".tar"+(i.gz?".gz":""))),r=m(o.dirname(s));m(i.root)!==r&&e.mkdirSync(r,{recursive:!0});const a=e.createWriteStream(s);n.push(a)}))},done:async()=>{t.done(),await Promise.all(n.map((e=>new Promise(((n,o)=>{e.on("error",o),e.on("finish",n),i.gz?t.receiver.pipe(a.createGzip()).pipe(e):t.receiver.pipe(e)}))))),n.length=0}}}(),d=P(R);let h;return{name:"vite-plugin-tarball",enforce:"post",async configResolved(t){u.push(...j(t)),p=t.root,l=i?[i]:u,h=z.getPluginAPI(t.plugins),h||await S(t,(t=>{c.push(t)})),f.setup({dests:l,root:p,gz:r})},writeBundle(t,e){for(const t in e){const n=e[t];f.add({filename:t,content:"asset"===n.type?n.source:n.code})}},async closeBundle(){h&&await h.done,!c.length&&h&&h.staticOutputs.size&&c.push(...h.staticOutputs);for(const t of u)for(const e of c)d.enqueue((async()=>{const i=o.join(t,e),s=await n.readFile(i);f.add({filename:e,content:s})}));await d.wait(),await f.done()}}}function z(e={}){const{include:i=/\.(html|xml|css|json|js|mjs|svg|yaml|yml|toml)$/,exclude:s,threshold:r=0,algorithm:a="gzip",filename:c,compressionOptions:u,deleteOriginalAssets:l=!1,skipIfLargerOrEqual:p=!0}=e,m=t(i,s),g=[],x=[],{msgs:T,cleanup:z}=function(){const t=[],e=process.stdout.write.bind(process.stdout);return process.stdout.write=function(...n){const[i]=n,o="string"==typeof i?i:i.toString();return o.includes("built in")?(t.push(o),!1):e.apply(this,n)},{cleanup:()=>process.stdout.write=e,msgs:t}}();let _,I=process.cwd();const C={algorithm:"string"==typeof a?b(a).algorithm:a,options:"function"==typeof a?u:Object.assign({},v[a],u),filename:c??("brotliCompress"===a?"[path][base].br":"[path][base].gz")},M=P(R),A=async function(t,e){for(const t in e){if(!m(t))continue;const n=e[t],i=w("asset"===n.type?n.source:n.code),o=d(i);o<r||M.enqueue((async()=>{const n=h(t,C.filename),s=await O(i,C.algorithm,C.options);p&&d(s)>=o||((l||t===n)&&Reflect.deleteProperty(e,t),this.emitFile({type:"asset",fileName:n,source:s}))}))}await M.wait().catch(this.error)},B={resolve:y},D={staticOutputs:new Set,done:new Promise((t=>{B.resolve=t}))},$=new Intl.NumberFormat("en",{maximumFractionDigits:2,minimumFractionDigits:2});return{name:E,apply:"build",enforce:"post",api:D,async configResolved(t){x.push(...j(t)),await S(t,(t=>{g.push(t)}));const e=t.plugins.find((t=>"vite:build-import-analysis"===t.name));if(!e)throw new Error("[vite-plugin-compression] Can't be work in versions lower than vite at 2.0.0");!function(t,e){const n=t.generateBundle;if("object"==typeof n&&n.handler){const t=n.handler;n.handler=async function(...n){await t.apply(this,n),await e.apply(this,n)}}"function"==typeof n&&(t.generateBundle=async function(...t){await n.apply(this,t),await e.apply(this,t)})}(e,A),_=t.logger,I=t.root},async closeBundle(){const t=[],e=async(e,i)=>{const s=o.join(e,i);if(!m(s)&&!D.staticOutputs.has(i))return void D.staticOutputs.add(i);const{size:a}=await n.stat(s);a<r?D.staticOutputs.has(i)||D.staticOutputs.add(i):await(async(e,i,s)=>{const r=await n.readFile(e),a=await O(r,C.algorithm,C.options);if(p&&d(a)>=d(r))return void(D.staticOutputs.has(i)||D.staticOutputs.add(i));const c=h(i,C.filename);D.staticOutputs.has(c)||D.staticOutputs.add(c);const u=o.join(s,c);l&&u!==e&&await n.rm(e,{recursive:!0,force:!0}),await n.writeFile(u,a),t.push({dest:o.relative(I,s)+"/",file:c,size:d(a)})})(s,i,e)};for(const t of x)for(const n of g)M.enqueue((()=>e(t,n)));if(await M.wait().catch((t=>t)),B.resolve(),z(),_){const e=t.reduce(((t,e)=>{const n=e.dest+e.file;return Math.max(t,n.length)}),0);for(const{dest:n,file:o,size:s}of t){const t=o.padEnd(e);_.info(f.dim(n)+f.green(t)+f.bold(f.dim((i=s,`${$.format(i/1e3)} kB`))))}}var i;for(const t of T)console.info(t)}}}function _(t){return t}z.getPluginAPI=t=>t.find((t=>t.name===E))?.api;export{z as compression,z as default,_ as defineCompressionOption,T as tarball};
{
"name": "vite-plugin-compression2",
"version": "1.3.3",
"version": "1.4.0",
"description": "a fast vite compression plugin",

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

"dprint": "^0.46.3",
"eslint": "^8.57.0",
"eslint-config-kagura": "^2.1.1",
"jiek": "^1.1.3",
"eslint": "^9.16.0",
"eslint-config-kagura": "^3.0.1",
"jiek": "^1.0.14",
"memdisk": "^1.2.1",

@@ -48,3 +48,4 @@ "playwright": "^1.32.3",

"vitest": "^2.1.2",
"vite": "^6.0.0"
"vite": "^6.3.5",
"ansis": "^4.0.0"
},

@@ -51,0 +52,0 @@ "dependencies": {