@visulima/rollup-plugin-css 1.0.0-alpha.19 → 1.0.0-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## @visulima/rollup-plugin-css [1.0.0-alpha.20](https://github.com/visulima/packem/compare/@visulima/rollup-plugin-css@1.0.0-alpha.19...@visulima/rollup-plugin-css@1.0.0-alpha.20) (2026-03-05)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * **rollup-plugin-css:** update source and fix TypeScript type errors ([4ac7443](https://github.com/visulima/packem/commit/4ac7443ca3fefa97190487e54cfee5ece0eb43ce))
6
+ * update dependencies, fix linting and improve code formatting ([d78b132](https://github.com/visulima/packem/commit/d78b1325ce79dbd14deeb6311a74d81f7172a81e))
7
+
8
+
9
+ ### Dependencies
10
+
11
+ * **@visulima/packem-share:** upgraded to 1.0.0-alpha.21
12
+
1
13
  ## @visulima/rollup-plugin-css [1.0.0-alpha.19](https://github.com/visulima/packem/compare/@visulima/rollup-plugin-css@1.0.0-alpha.18...@visulima/rollup-plugin-css@1.0.0-alpha.19) (2026-02-21)
2
14
 
3
15
  ### Bug Fixes
package/dist/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import { Plugin } from 'rollup';
2
- import { S as StyleOptions } from './packem_shared/types-CA9pSumu.js';
3
- export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-CA9pSumu.js';
2
+ import { S as StyleOptions } from './packem_shared/types-BeCJXZiE.js';
3
+ export { A as AutoModules, E as ExtractedData, I as InjectOptions, a as InternalStyleOptions, L as LightningCSSOptions, P as PostCSSConfigLoaderOptions, b as PostCSSOptions } from './packem_shared/types-BeCJXZiE.js';
4
4
  import { Environment } from '@visulima/packem-share/types';
5
5
  import 'cssnano';
6
6
  import 'lightningcss';
7
7
  import 'postcss';
8
8
  import 'postcss-load-config';
9
- import 'less';
10
9
  import 'sass';
11
10
  import 'sass-embedded';
12
11
  import 'stylus';
@@ -1,9 +1,8 @@
1
- import { c as Loader, d as LESSLoaderOptions } from '../../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, d as LESSLoaderOptions } from '../../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,9 +1,8 @@
1
- import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, L as LightningCSSOptions } from '../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,9 +1,8 @@
1
- import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, a as InternalStyleOptions } from '../../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,10 +1,9 @@
1
- import { c as Loader, e as SassLoaderOptions } from '../../packem_shared/types-CA9pSumu.js';
2
- export { f as SassLoaderContext } from '../../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, e as SassLoaderOptions } from '../../packem_shared/types-BeCJXZiE.js';
2
+ export { f as SassLoaderContext } from '../../packem_shared/types-BeCJXZiE.js';
3
3
  import 'cssnano';
4
4
  import 'lightningcss';
5
5
  import 'postcss';
6
6
  import 'postcss-load-config';
7
- import 'less';
8
7
  import '@visulima/packem-share/types';
9
8
  import 'sass';
10
9
  import 'sass-embedded';
@@ -1,8 +1,8 @@
1
- var U=Object.defineProperty;var u=(e,t)=>U(e,"name",{value:t,configurable:!0});import{fileURLToPath as g}from"node:url";import{extname as v,dirname as x,isAbsolute as y,join as O}from"@visulima/path";import{readFileSync as A}from"@visulima/fs";import{pathToFileURL as S}from"mlly";import{resolve as D}from"../../packem_shared/resolve-anj9ucIq.js";import{normalizeUrl as L,getUrlOfPartial as j}from"../../packem_shared/hasModuleSpecifier-DIZeev_W.js";import{isWindows as R}from"@visulima/path/utils";var C=Object.defineProperty,k=u((e,t)=>C(e,"name",{value:t,configurable:!0}),"e$1");const $=k(e=>{switch(e.toLowerCase()){case".css":return"css";case".sass":return"indented";case".scss":return"scss";default:return}},"resolveSyntax");var E=Object.defineProperty,F=u((e,t)=>E(e,"name",{value:t,configurable:!0}),"i$1");const M=[".scss",".sass",".css"],T=["sass","style"],W=F((e,t)=>({canonicalize(r,s){const m=s.containingUrl?g(s.containingUrl.toString()):e;let n;const p=L(r),o=j(p);try{n=D([o,p],{baseDirs:[x(m)],caller:"Sass modern importer",extensions:M,mainFields:T})}catch{return null}return new URL(S(n))},load(r){const s=v(r.pathname),m=s?$(s.toLowerCase())??"scss":"scss";try{let n=A(r);return t&&(n=`/* ${r.pathname} */
2
- ${n}`),{contents:n,sourceMapUrl:r,syntax:m}}catch{return null}}}),"importer");var z=Object.defineProperty,H=u((e,t)=>z(e,"name",{value:t,configurable:!0}),"d");const N=H(async e=>{let t;if(e===void 0||e==="sass-embedded")try{t=await import("sass-embedded").then(r=>r.compileString)}catch{}if(t===void 0&&(e===void 0||e==="sass"))try{t=await import("sass").then(r=>r.compileString)}catch{}if(t===void 0)throw new Error("No supported Sass implementation found. Please install 'sass-embedded' or 'sass'.");return r=>{const{data:s,...m}=r;return t(s,m)}},"getSassCompiler");var _=Object.defineProperty,f=u((e,t)=>_(e,"name",{value:t,configurable:!0}),"p$1");const B=f(async(e,t,r,s,m)=>{const{warnRuleAsWarning:n,...p}=r;let o=s;r.additionalData&&(o=typeof r.additionalData=="function"?await r.additionalData(s,e):`${r.additionalData}
1
+ var U=Object.defineProperty;var u=(e,t)=>U(e,"name",{value:t,configurable:!0});import{fileURLToPath as g}from"node:url";import{extname as v,dirname as x,isAbsolute as y,join as O}from"@visulima/path";import{readFileSync as A}from"@visulima/fs";import{pathToFileURL as S}from"mlly";import{resolve as D}from"../../packem_shared/resolve-anj9ucIq.js";import{normalizeUrl as L,getUrlOfPartial as j}from"../../packem_shared/hasModuleSpecifier-DIZeev_W.js";import{isWindows as R}from"@visulima/path/utils";var C=Object.defineProperty,k=u((e,t)=>C(e,"name",{value:t,configurable:!0}),"e$1");const $=k(e=>{switch(e.toLowerCase()){case".css":return"css";case".sass":return"indented";case".scss":return"scss";default:return}},"resolveSyntax");var E=Object.defineProperty,F=u((e,t)=>E(e,"name",{value:t,configurable:!0}),"i$1");const M=[".scss",".sass",".css"],T=["sass","style"],W=F((e,t)=>({canonicalize(r,s){const l=s.containingUrl?g(s.containingUrl.toString()):e;let n;const p=L(r),o=j(p);try{n=D([o,p],{baseDirs:[x(l)],caller:"Sass modern importer",extensions:M,mainFields:T})}catch{return null}return new URL(S(n))},load(r){const s=v(r.pathname),l=s?$(s.toLowerCase())??"scss":"scss";try{let n=A(r);return t&&(n=`/* ${r.pathname} */
2
+ ${n}`),{contents:n,sourceMapUrl:r,syntax:l}}catch{return null}}}),"importer");var z=Object.defineProperty,H=u((e,t)=>z(e,"name",{value:t,configurable:!0}),"d");const N=H(async e=>{let t;if(e===void 0||e==="sass-embedded")try{t=await import("sass-embedded").then(r=>r.compileString)}catch{}if(t===void 0&&(e===void 0||e==="sass"))try{t=await import("sass").then(r=>r.compileString)}catch{}if(t===void 0)throw new Error("No supported Sass implementation found. Please install 'sass-embedded' or 'sass'.");return r=>{const{data:s,...l}=r;return t(s,l)}},"getSassCompiler");var _=Object.defineProperty,f=u((e,t)=>_(e,"name",{value:t,configurable:!0}),"p$1");const B=f(async(e,t,r,s,l)=>{const{warnRuleAsWarning:n,...p}=r;let o=s;r.additionalData&&(o=typeof r.additionalData=="function"?await r.additionalData(s,e):`${r.additionalData}
3
3
  ${s}`);const a={...p,data:o};if(!a.logger){const d=n!==!1,b=f(i=>`Warning on line ${i.start.line}, column ${i.start.column} of ${i.url??"-"}:${i.start.line}:${i.start.column}:
4
- `,"formatSpan"),P=f(i=>`[debug:${i.start.line}:${i.start.column}] `,"formatDebugSpan");a.logger={debug(i,c){let l="";c.span&&(l=P(c.span)),l+=i,t.info({message:l})},warn(i,c){let l="";c.deprecation&&(l+="Deprecation "),c.span&&(l+=b(c.span)),l+=i,c.span?.context&&(l+=`
4
+ `,"formatSpan"),P=f(i=>`[debug:${i.start.line}:${i.start.column}] `,"formatDebugSpan");a.logger={debug(i,c){let m="";c.span&&(m=P(c.span)),m+=i,t.info({message:m})},warn(i,c){let m="";c.deprecation&&(m+="Deprecation "),c.span&&(m+=b(c.span)),m+=i,c.span?.context&&(m+=`
5
5
 
6
- ${c.span.start.line} | ${c.span.context}`),c.stack&&c.stack!=="undefined"&&(l+=`
6
+ ${c.span.start.line} | ${c.span.context}`),c.stack&&c.stack!=="undefined"&&(m+=`
7
7
 
8
- ${c.stack}`),d?t.warn({message:l,name:"SassWarning"}):t.info({message:l})}}}const{resourcePath:h}=e;if(a.url=new URL(S(h)),m&&(a.sourceMap=!0),a.syntax===void 0){const d=v(h);d&&(a.syntax=$(d.toLowerCase()))}const w=R()?";":":";return a.loadPaths=[...(a.loadPaths?[...a.loadPaths]:[]).map(d=>y(d)?d:O(process.cwd(),d)),...process.env.SASS_PATH?process.env.SASS_PATH.split(w):[]],a.importers?Array.isArray(a.importers)?a.importers=[...a.importers]:a.importers=a.importers:a.importers=[],a},"getSassOptions");var J=Object.defineProperty,q=u((e,t)=>J(e,"name",{value:t,configurable:!0}),"r$1");const G=q(e=>{const t=e;return t.file!==void 0&&delete t.file,t.sourceRoot="",t},"normalizeSourceMap");var I=Object.defineProperty,K=u((e,t)=>I(e,"name",{value:t,configurable:!0}),"r");const Q=K((e,t)=>{const r=(e.formatted??e.message??String(e)).replace(/^.*?Error:\s*/i,""),s=new Error(r,{cause:e});return s.name=e.name,s.stack=void 0,s.id=t,e.span?.start&&(s.line=e.span.start.line+1,s.column=e.span.start.column+1),s},"errorFactory"),ae={name:"sass",async process({code:e,map:t}){const r=this.options.implementation,s=await N(r),m=await B({environment:this.environment,resourcePath:this.id,rootContext:this.cwd},this.logger,this.options,e,this.useSourcemap);m.importers.push(W(this.id,this.debug??!1));let n;try{n=await s(m)}catch(o){throw o.span&&o.span.url!==void 0&&this.deps.add(g(o.span.url)),Q(o,this.id)}let p=n.sourceMap;return p&&this.useSourcemap&&(p=G(p)),n.loadedUrls&&n.loadedUrls.filter(o=>o.protocol==="file:").forEach(o=>{const a=g(o);y(a)&&this.deps.add(a)}),{code:Buffer.from(n.css).toString(),map:p?JSON.stringify(p):t}},test:/\.(sass|scss)$/i};export{ae as default};
8
+ ${c.stack}`),d?t.warn({message:m,name:"SassWarning"}):t.info({message:m})}}}const{resourcePath:h}=e;if(a.url=new URL(S(h)),l&&(a.sourceMap=!0),a.syntax===void 0){const d=v(h);d&&(a.syntax=$(d.toLowerCase()))}const w=R()?";":":";return a.loadPaths=[...(a.loadPaths?[...a.loadPaths]:[]).map(d=>y(d)?d:O(process.cwd(),d)),...process.env.SASS_PATH?process.env.SASS_PATH.split(w):[]],a.importers?Array.isArray(a.importers)?a.importers=[...a.importers]:a.importers=a.importers:a.importers=[],a},"getSassOptions");var J=Object.defineProperty,q=u((e,t)=>J(e,"name",{value:t,configurable:!0}),"r$1");const G=q(e=>{const t=e;return t.file!==void 0&&delete t.file,t.sourceRoot="",t},"normalizeSourceMap");var I=Object.defineProperty,K=u((e,t)=>I(e,"name",{value:t,configurable:!0}),"r");const Q=K((e,t)=>{const r=(e.formatted??e.message??String(e)).replace(/^.*?Error:\s*/i,""),s=new Error(r,{cause:e});return s.name=e.name,s.stack=void 0,s.id=t,e.span?.start&&(s.line=e.span.start.line+1,s.column=e.span.start.column+1),s},"errorFactory"),ae={name:"sass",async process({code:e,map:t}){const r=this.options.implementation,s=await N(r),l=await B({environment:this.environment,resourcePath:this.id,rootContext:this.cwd},this.logger,this.options,e,this.useSourcemap);l.importers??=[],l.importers.push(W(this.id,this.debug??!1));let n;try{n=await s(l)}catch(o){throw o.span&&o.span.url!==void 0&&this.deps.add(g(o.span.url)),Q(o,this.id)}let p=n.sourceMap;return p&&this.useSourcemap&&(p=G(p)),n.loadedUrls&&n.loadedUrls.filter(o=>o.protocol==="file:").forEach(o=>{const a=g(o);y(a)&&this.deps.add(a)}),{code:Buffer.from(n.css).toString(),map:p?JSON.stringify(p):t}},test:/\.(sass|scss)$/i};export{ae as default};
@@ -1,9 +1,8 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader } from '../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,9 +1,8 @@
1
- import { c as Loader, g as StylusLoaderOptions } from '../../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader, g as StylusLoaderOptions } from '../../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,9 +1,8 @@
1
- import { c as Loader } from '../packem_shared/types-CA9pSumu.js';
1
+ import { c as Loader } from '../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1 +1 @@
1
- var J=Object.defineProperty;var y=(d,r)=>J(d,"name",{value:r,configurable:!0});import{stat as v}from"node:fs/promises";import{compile as P,Features as i,toSourceMap as x,optimize as z}from"@tailwindcss/node";import{clearRequireCache as M}from"@tailwindcss/node/require-cache";import{Scanner as $}from"@tailwindcss/oxide";import{findPackageJson as R}from"@visulima/package";import{resolve as w,dirname as C,relative as E,join as S,normalize as T}from"@visulima/path";import{resolveAlias as F}from"@visulima/path/utils";import{g as U}from"../packem_shared/generate-js-exports-BhS4eLrN.js";import{resolve as A}from"../packem_shared/resolve-anj9ucIq.js";var k=Object.defineProperty,f=y((d,r)=>k(d,"name",{value:r,configurable:!0}),"m");class j{static{y(this,"U")}constructor(r,n,g,l,h,t){this.id=r,this.base=n,this.enableSourceMaps=g,this.customCssResolver=l,this.customJsResolver=h,this.logger=t}static{f(this,"TailwindRoot")}compiler;scanner;candidates=new Set;buildDependencies=new Map;async generate(r,n){const g=w(this.id.replace(/\?.*$/u,"")),l=f(e=>{e!==g&&(/[#?].*\.svg$/u.test(e)||n(e))},"addWatchFileWrapper"),h=this.requiresBuild(),t=C(w(g));if(!this.compiler||!this.scanner||await h){M([...this.buildDependencies.keys()]),this.buildDependencies.clear(),this.addBuildDependency(g),this.logger.debug({message:"Setup compiler"});const e=[];this.compiler=await P(r,{base:t,customCssResolver:this.customCssResolver,customJsResolver:this.customJsResolver,from:this.enableSourceMaps?this.id:void 0,onDependency:f(m=>{l(m),e.push(this.addBuildDependency(m))},"onDependency"),shouldRewriteUrls:!0}),await Promise.all(e),this.logger.debug({message:"Setup scanner"});const a=[...this.compiler.root==="none"?[]:this.compiler.root===null?[{base:this.base,negated:!1,pattern:"**/*"}]:[{...this.compiler.root,negated:!1}],...this.compiler.sources];this.scanner=new $({sources:a})}else for(const e of this.buildDependencies.keys())l(e);const c=this.compiler.features&(i.AtApply|i.JsPluginCompat|i.ThemeFunction|i.Utilities);if(this.logger.debug({data:{availableFeatures:this.compiler.features,hasAtApply:!!(this.compiler.features&i.AtApply),hasJsPluginCompat:!!(this.compiler.features&i.JsPluginCompat),hasRequiredFeatures:!!c,hasThemeFunction:!!(this.compiler.features&i.ThemeFunction),hasUtilities:!!(this.compiler.features&i.Utilities),requiredFeatures:i.AtApply|i.JsPluginCompat|i.ThemeFunction|i.Utilities},message:"Feature analysis"}),!c)return this.logger.debug({data:{missingFeatures:{AtApply:!(this.compiler.features&i.AtApply),JsPluginCompat:!(this.compiler.features&i.JsPluginCompat),ThemeFunction:!(this.compiler.features&i.ThemeFunction),Utilities:!(this.compiler.features&i.Utilities)}},message:"Missing required features, returning false"}),!1;if(this.compiler.features&i.Utilities)if(this.logger.debug({data:{candidatesCountBefore:this.candidates.size,scannerExists:!!this.scanner,scannerHasScan:!!(this.scanner&&typeof this.scanner.scan=="function")},message:"Scan for candidates - Utilities feature enabled"}),this.scanner){const e=this.scanner.scan();this.logger.debug({data:{scannedCandidates:e.slice(0,10),scannedCandidatesCount:e.length},message:"Scanner results"});for(const a of e)this.candidates.add(a);this.logger.debug({data:{candidatesCountAfter:this.candidates.size,newCandidatesAdded:e.length},message:"Candidates updated"})}else this.logger.debug({data:{hasScanMethod:!!(this.scanner&&typeof this.scanner.scan=="function"),scannerType:typeof this.scanner},message:"Scanner not available or missing scan method"});else this.logger.debug({message:"Utilities feature not enabled, skipping candidate scanning"});if(this.compiler.features&i.Utilities){if(this.scanner&&this.scanner.files){this.logger.debug({data:{files:this.scanner.files.slice(0,5),filesCount:this.scanner.files.length},message:"Watching individual files from scanner"});for(const e of this.scanner.files)l(e)}else this.logger.debug({message:"No individual files to watch from scanner"});if(this.scanner&&this.scanner.globs){this.logger.debug({data:{globs:this.scanner.globs.slice(0,3),globsCount:this.scanner.globs.length},message:"Processing globs from scanner"});for await(const e of this.scanner.globs){if(e.pattern[0]==="!"){this.logger.debug({data:{pattern:e.pattern},message:"Skipping negated glob pattern"});continue}let a=E(this.base,e.base);a[0]!=="."&&(a=`./${a}`);const m=S(a,e.pattern);this.logger.debug({data:{base:e.base,glob:e.pattern,watchPath:m},message:"Adding glob to watch list"}),l(m);const{root:b}=this.compiler;if(b!=="none"&&b!==null){const p=w(b.base,b.pattern);try{const u=await v(p);if(u.isDirectory())this.logger.debug({data:{basePath:p,isDirectory:u.isDirectory()},message:"Valid source directory confirmed"});else{const D=`The path given to \`source(…)\` must be a directory but got \`source(${p})\` instead.`;throw this.logger.debug({data:{basePath:p,error:D,isDirectory:u.isDirectory()},message:"Invalid source path detected"}),new Error(D)}}catch(u){this.logger.debug({data:{basePath:p,error:u instanceof Error?u.message:String(u)},message:"Error checking source directory"})}}}}else this.logger.debug({message:"No globs to process from scanner"})}else this.logger.debug({message:"Utilities feature not enabled, skipping file watching"});this.logger.debug({data:{candidates:[...this.candidates].slice(0,10),candidatesCount:this.candidates.size},message:"Build CSS"});const s=this.compiler.build([...this.candidates]);this.logger.debug({data:{cssLength:s.length,cssPreview:s.slice(0,200)+(s.length>200?"...":"")},message:"CSS build completed"}),this.logger.debug({data:{enableSourceMaps:this.enableSourceMaps},message:"Build Source Map"});const o=(this.enableSourceMaps?x(this.compiler.buildSourceMap()):void 0)?.raw;return o?this.logger.debug({data:{hasMappings:!!o.mappings,mapSize:JSON.stringify(o).length,sourcesCount:o.sources?.length||0},message:"Source map generated"}):this.logger.debug({message:"No source map generated"}),{code:s,map:o}}async addBuildDependency(r){let n;try{n=(await v(r)).mtimeMs}catch{}this.buildDependencies.set(r,n)}async requiresBuild(){for await(const[r,n]of this.buildDependencies){if(n===void 0)return!0;try{if((await v(r)).mtimeMs>n)return!0}catch{return!0}}return!1}}const V={name:"tailwindcss",async process({code:d,map:r}){const n=this.alias,g=f(async(s,o)=>{try{const e=await R(o),a=A([s,F(s,n??{})],{baseDirs:[o,S(C(e.path),"node_modules")],caller:"Tailwind CSS Resolver",conditionNames:["style","development|production"],extensions:[".css"],mainFields:["style"],preferRelative:!0});if(a)return this.logger.debug({message:`Resolved CSS import: ${s} -> ${a}`}),a}catch{}return this.logger.debug({message:`Failed to resolve CSS import: ${s} from ${o}`}),!1},"customCssResolver"),l=f(async(s,o)=>{try{const e=await R(o),a=A([s,F(s,n??{})],{baseDirs:[o,S(C(e.path),"node_modules")],caller:"Tailwind JS Resolver",extensions:[".js",".mjs",".cjs",".ts",".tsx",".jsx"]});if(a)return this.logger.debug({message:`Resolved JS import: ${s} -> ${a}`}),a}catch{}return this.logger.debug({message:`Failed to resolve JS import: ${s} from ${o}`}),!1},"customJsResolver"),h=this.cwd?this.sourceDir?S(this.cwd,this.sourceDir):this.cwd:this.sourceDir||process.cwd();let t=await new j(this.id,h,this.useSourcemap,g,l,this.logger).generate(d,s=>this.deps.add(T(s)));if(!t)return this.logger.debug({data:{returningOriginalContent:!0},message:"Tailwind generation returned false - not a Tailwind file or missing features"}),{code:d,map:r};if(this.logger.debug({message:"[@tailwindcss/rollup] Generate CSS"}),this.environment==="production"){this.logger.debug({data:{minify:!0,originalSize:t.code.length},message:"[@tailwindcss/rollup] Optimize CSS"});const s=z(t.code,{file:this.id,map:t.map,minify:!0});this.logger.debug({data:{optimizedSize:s.code.length,originalSize:t.code.length,sizeReduction:t.code.length-s.code.length,sizeReductionPercent:`${((t.code.length-s.code.length)/t.code.length*100).toFixed(2)}%`},message:"CSS optimization completed"}),t=s}else this.logger.debug({data:{environment:this.environment},message:"Development mode - skipping CSS optimization"});if(this.emit)return{...t,meta:{moduleContents:t,types:void 0},moduleSideEffects:!0};const c=U({css:t.code,cwd:this.cwd,dts:this.dts,emit:this.emit,extract:this.extract,icssDependencies:[],id:this.id,inject:this.inject,logger:this.logger,map:t.map,modulesExports:{},namedExports:this.namedExports,supportModules:!1});return this.extract?{code:c.code,extracted:{css:t.code,id:this.id,map:t.map},map:c.map,meta:c.meta,moduleSideEffects:c.moduleSideEffects}:{code:c.code,map:c.map,meta:c.meta,moduleSideEffects:c.moduleSideEffects}},test:/\.css$/i};export{V as default};
1
+ var J=Object.defineProperty;var y=(d,r)=>J(d,"name",{value:r,configurable:!0});import{stat as v}from"node:fs/promises";import{compile as P,Features as i,toSourceMap as x,optimize as z}from"@tailwindcss/node";import{clearRequireCache as M}from"@tailwindcss/node/require-cache";import{Scanner as $}from"@tailwindcss/oxide";import{findPackageJson as R}from"@visulima/package";import{resolve as w,dirname as C,relative as E,join as S,normalize as T}from"@visulima/path";import{resolveAlias as F}from"@visulima/path/utils";import{g as U}from"../packem_shared/generate-js-exports-BhS4eLrN.js";import{resolve as A}from"../packem_shared/resolve-anj9ucIq.js";var k=Object.defineProperty,f=y((d,r)=>k(d,"name",{value:r,configurable:!0}),"m");class j{static{y(this,"U")}constructor(r,n,g,l,h,t){this.id=r,this.base=n,this.enableSourceMaps=g,this.customCssResolver=l,this.customJsResolver=h,this.logger=t}static{f(this,"TailwindRoot")}compiler;scanner;candidates=new Set;buildDependencies=new Map;async generate(r,n){const g=w(this.id.replace(/\?.*$/u,"")),l=f(e=>{e!==g&&(/[#?].*\.svg$/u.test(e)||n(e))},"addWatchFileWrapper"),h=this.requiresBuild(),t=C(w(g));if(!this.compiler||!this.scanner||await h){M([...this.buildDependencies.keys()]),this.buildDependencies.clear(),this.addBuildDependency(g),this.logger.debug({message:"Setup compiler"});const e=[];this.compiler=await P(r,{base:t,customCssResolver:this.customCssResolver,customJsResolver:this.customJsResolver,from:this.enableSourceMaps?this.id:void 0,onDependency:f(m=>{l(m),e.push(this.addBuildDependency(m))},"onDependency"),shouldRewriteUrls:!0}),await Promise.all(e),this.logger.debug({message:"Setup scanner"});const a=[...this.compiler.root==="none"?[]:this.compiler.root===null?[{base:this.base,negated:!1,pattern:"**/*"}]:[{...this.compiler.root,negated:!1}],...this.compiler.sources];this.scanner=new $({sources:a})}else for(const e of this.buildDependencies.keys())l(e);const c=this.compiler.features&(i.AtApply|i.JsPluginCompat|i.ThemeFunction|i.Utilities);if(this.logger.debug({data:{availableFeatures:this.compiler.features,hasAtApply:!!(this.compiler.features&i.AtApply),hasJsPluginCompat:!!(this.compiler.features&i.JsPluginCompat),hasRequiredFeatures:!!c,hasThemeFunction:!!(this.compiler.features&i.ThemeFunction),hasUtilities:!!(this.compiler.features&i.Utilities),requiredFeatures:i.AtApply|i.JsPluginCompat|i.ThemeFunction|i.Utilities},message:"Feature analysis"}),!c)return this.logger.debug({data:{missingFeatures:{AtApply:!(this.compiler.features&i.AtApply),JsPluginCompat:!(this.compiler.features&i.JsPluginCompat),ThemeFunction:!(this.compiler.features&i.ThemeFunction),Utilities:!(this.compiler.features&i.Utilities)}},message:"Missing required features, returning false"}),!1;if(this.compiler.features&i.Utilities)if(this.logger.debug({data:{candidatesCountBefore:this.candidates.size,scannerExists:!!this.scanner,scannerHasScan:!!(this.scanner&&typeof this.scanner.scan=="function")},message:"Scan for candidates - Utilities feature enabled"}),this.scanner){const e=this.scanner.scan();this.logger.debug({data:{scannedCandidates:e.slice(0,10),scannedCandidatesCount:e.length},message:"Scanner results"});for(const a of e)this.candidates.add(a);this.logger.debug({data:{candidatesCountAfter:this.candidates.size,newCandidatesAdded:e.length},message:"Candidates updated"})}else this.logger.debug({data:{hasScanMethod:!!(this.scanner&&typeof this.scanner.scan=="function"),scannerType:typeof this.scanner},message:"Scanner not available or missing scan method"});else this.logger.debug({message:"Utilities feature not enabled, skipping candidate scanning"});if(this.compiler.features&i.Utilities){if(this.scanner&&this.scanner.files){this.logger.debug({data:{files:this.scanner.files.slice(0,5),filesCount:this.scanner.files.length},message:"Watching individual files from scanner"});for(const e of this.scanner.files)l(e)}else this.logger.debug({message:"No individual files to watch from scanner"});if(this.scanner&&this.scanner.globs){this.logger.debug({data:{globs:this.scanner.globs.slice(0,3),globsCount:this.scanner.globs.length},message:"Processing globs from scanner"});for await(const e of this.scanner.globs){if(e.pattern[0]==="!"){this.logger.debug({data:{pattern:e.pattern},message:"Skipping negated glob pattern"});continue}let a=E(this.base,e.base);a[0]!=="."&&(a=`./${a}`);const m=S(a,e.pattern);this.logger.debug({data:{base:e.base,glob:e.pattern,watchPath:m},message:"Adding glob to watch list"}),l(m);const{root:b}=this.compiler;if(b!=="none"&&b!==null){const p=w(b.base,b.pattern);try{const u=await v(p);if(u.isDirectory())this.logger.debug({data:{basePath:p,isDirectory:u.isDirectory()},message:"Valid source directory confirmed"});else{const D=`The path given to \`source(…)\` must be a directory but got \`source(${p})\` instead.`;throw this.logger.debug({data:{basePath:p,error:D,isDirectory:u.isDirectory()},message:"Invalid source path detected"}),new Error(D)}}catch(u){this.logger.debug({data:{basePath:p,error:u instanceof Error?u.message:String(u)},message:"Error checking source directory"})}}}}else this.logger.debug({message:"No globs to process from scanner"})}else this.logger.debug({message:"Utilities feature not enabled, skipping file watching"});this.logger.debug({data:{candidates:[...this.candidates].slice(0,10),candidatesCount:this.candidates.size},message:"Build CSS"});const s=this.compiler.build([...this.candidates]);this.logger.debug({data:{cssLength:s.length,cssPreview:s.slice(0,200)+(s.length>200?"...":"")},message:"CSS build completed"}),this.logger.debug({data:{enableSourceMaps:this.enableSourceMaps},message:"Build Source Map"});const o=(this.enableSourceMaps?x(this.compiler.buildSourceMap()):void 0)?.raw;if(o){const e=o;this.logger.debug({data:{hasMappings:!!e.mappings,mapSize:JSON.stringify(o).length,sourcesCount:e.sources?.length||0},message:"Source map generated"})}else this.logger.debug({message:"No source map generated"});return{code:s,map:o}}async addBuildDependency(r){let n;try{n=(await v(r)).mtimeMs}catch{}this.buildDependencies.set(r,n)}async requiresBuild(){for await(const[r,n]of this.buildDependencies){if(n===void 0)return!0;try{if((await v(r)).mtimeMs>n)return!0}catch{return!0}}return!1}}const V={name:"tailwindcss",async process({code:d,map:r}){const n=this.alias,g=f(async(s,o)=>{try{const e=await R(o),a=A([s,F(s,n??{})],{baseDirs:[o,S(C(e.path),"node_modules")],caller:"Tailwind CSS Resolver",conditionNames:["style","development|production"],extensions:[".css"],mainFields:["style"],preferRelative:!0});if(a)return this.logger.debug({message:`Resolved CSS import: ${s} -> ${a}`}),a}catch{}return this.logger.debug({message:`Failed to resolve CSS import: ${s} from ${o}`}),!1},"customCssResolver"),l=f(async(s,o)=>{try{const e=await R(o),a=A([s,F(s,n??{})],{baseDirs:[o,S(C(e.path),"node_modules")],caller:"Tailwind JS Resolver",extensions:[".js",".mjs",".cjs",".ts",".tsx",".jsx"]});if(a)return this.logger.debug({message:`Resolved JS import: ${s} -> ${a}`}),a}catch{}return this.logger.debug({message:`Failed to resolve JS import: ${s} from ${o}`}),!1},"customJsResolver"),h=this.cwd?this.sourceDir?S(this.cwd,this.sourceDir):this.cwd:this.sourceDir||process.cwd();let t=await new j(this.id,h,this.useSourcemap,g,l,this.logger).generate(d,s=>this.deps.add(T(s)));if(!t)return this.logger.debug({data:{returningOriginalContent:!0},message:"Tailwind generation returned false - not a Tailwind file or missing features"}),{code:d,map:r};if(this.logger.debug({message:"[@tailwindcss/rollup] Generate CSS"}),this.environment==="production"){this.logger.debug({data:{minify:!0,originalSize:t.code.length},message:"[@tailwindcss/rollup] Optimize CSS"});const s=z(t.code,{file:this.id,map:t.map,minify:!0});this.logger.debug({data:{optimizedSize:s.code.length,originalSize:t.code.length,sizeReduction:t.code.length-s.code.length,sizeReductionPercent:`${((t.code.length-s.code.length)/t.code.length*100).toFixed(2)}%`},message:"CSS optimization completed"}),t=s}else this.logger.debug({data:{environment:this.environment},message:"Development mode - skipping CSS optimization"});if(this.emit)return{...t,meta:{moduleContents:t,types:void 0},moduleSideEffects:!0};const c=U({css:t.code,cwd:this.cwd,dts:this.dts,emit:this.emit,extract:this.extract,icssDependencies:[],id:this.id,inject:this.inject,inline:this.inline,logger:this.logger,map:t.map,modulesExports:{},namedExports:this.namedExports,supportModules:!1});return this.extract?{code:c.code,extracted:{css:t.code,id:this.id,map:t.map},map:c.map,meta:c.meta,moduleSideEffects:c.moduleSideEffects}:{code:c.code,map:c.map,meta:c.meta,moduleSideEffects:c.moduleSideEffects}},test:/\.css$/i};export{V as default};
@@ -1,9 +1,8 @@
1
1
  import { Options } from 'cssnano';
2
- import { M as Minifier } from '../packem_shared/types-CA9pSumu.js';
2
+ import { M as Minifier } from '../packem_shared/types-BeCJXZiE.js';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -1,9 +1,8 @@
1
- import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-CA9pSumu.js';
1
+ import { M as Minifier, a as InternalStyleOptions } from '../packem_shared/types-BeCJXZiE.js';
2
2
  import 'cssnano';
3
3
  import 'lightningcss';
4
4
  import 'postcss';
5
5
  import 'postcss-load-config';
6
- import 'less';
7
6
  import '@visulima/packem-share/types';
8
7
  import 'sass';
9
8
  import 'sass-embedded';
@@ -2,7 +2,6 @@ import { Options } from 'cssnano';
2
2
  import { TransformOptions, CustomAtRules } from 'lightningcss';
3
3
  import { Node, AcceptedPlugin, PluginCreator } from 'postcss';
4
4
  import { Config } from 'postcss-load-config';
5
- import less from 'less';
6
5
  import { Environment } from '@visulima/packem-share/types';
7
6
  import { StringOptions as StringOptions$1 } from 'sass';
8
7
  import { StringOptions } from 'sass-embedded';
@@ -11,7 +10,7 @@ import { RollupLogger } from '@visulima/packem-share/utils';
11
10
  import { PluginContext, CustomPluginOptions } from 'rollup';
12
11
  import { RawSourceMap } from 'source-map-js';
13
12
 
14
- type LESSLoaderOptions = typeof less.options;
13
+ type LESSLoaderOptions = Less.Options;
15
14
 
16
15
  type ImportResolve = (url: string, basedir: string, extensions: string[], atRule: Node) => Promise<string> | string;
17
16
 
@@ -1,12 +1,11 @@
1
1
  import { SourceMapGenerator, RawSourceMap, SourceMapConsumer } from 'source-map-js';
2
- import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-CA9pSumu.js';
2
+ import { h as Extracted, b as PostCSSOptions, S as StyleOptions, a as InternalStyleOptions, i as LoaderContext } from '../packem_shared/types-BeCJXZiE.js';
3
3
  import { RollupLogger } from '@visulima/packem-share/utils';
4
4
  import { Result } from 'postcss-load-config';
5
5
  import { NapiResolveOptions } from 'oxc-resolver';
6
6
  import 'cssnano';
7
7
  import 'lightningcss';
8
8
  import 'postcss';
9
- import 'less';
10
9
  import '@visulima/packem-share/types';
11
10
  import 'sass';
12
11
  import 'sass-embedded';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/rollup-plugin-css",
3
- "version": "1.0.0-alpha.19",
3
+ "version": "1.0.0-alpha.20",
4
4
  "description": "CSS processing plugin for packem",
5
5
  "keywords": [
6
6
  "visulima",
@@ -99,10 +99,10 @@
99
99
  "@rollup/pluginutils": "5.3.0",
100
100
  "@visulima/fs": "4.1.0",
101
101
  "@visulima/package": "4.1.7",
102
- "@visulima/packem-share": "1.0.0-alpha.20",
102
+ "@visulima/packem-share": "1.0.0-alpha.21",
103
103
  "@visulima/path": "2.0.5",
104
- "mlly": "1.8.0",
105
- "oxc-resolver": "11.17.1",
104
+ "mlly": "1.8.1",
105
+ "oxc-resolver": "11.19.1",
106
106
  "p-queue": "9.1.0",
107
107
  "source-map-js": "^1.2.1"
108
108
  },