UNPKG

@devup-ui/next-plugin

Version:

Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor

2 lines (1 loc) 3.36 kB
import{existsSync as K,mkdirSync as w,readFileSync as p,writeFileSync as y}from"node:fs";import{join as H,relative as c,resolve as C}from"node:path";import{exportClassMap as g,exportFileMap as n,exportSheet as e,getDefaultTheme as i,getThemeInterface as mm,registerTheme as Lm,setPrefix as Nm}from"@devup-ui/wasm";import{DevupUIWebpackPlugin as Em}from"@devup-ui/webpack-plugin";import{readFileSync as D,realpathSync as l,writeFileSync as I}from"node:fs";import{basename as h,dirname as a,join as P,relative as s}from"node:path";import{codeExtract as o,getCss as d}from"@devup-ui/wasm";import{globSync as W}from"tinyglobby";import{existsSync as t}from"node:fs";import{dirname as u,join as F}from"node:path";function j(m=process.cwd()){let L=m,O=null;while(!0){if(t(F(L,"package.json")))O=L;let $=u(L);if($===L)break;L=$}return O??m}import{readFileSync as f}from"node:fs";function q(m){let L=f(m,"utf-8");return JSON.parse(L).name}import{readFileSync as k}from"node:fs";import{join as r}from"node:path";function b(){let m=k(r(process.cwd(),"package.json"),"utf-8"),L=JSON.parse(m);return Object.values(L.dependencies??{}).some((O)=>typeof O==="string"&&O.includes("workspace:"))}function U(m,L,O,$,E,N=process.cwd(),A=!1){if(E.length>0&&b()){let B=j(),z=W(["package.json","!**/node_modules/**"],{followSymbolicLinks:!0,absolute:!0,cwd:B}).filter((J)=>E.includes(q(J))).map((J)=>a(J));for(let J of z)U(m,L,O,$,E,J,!0);if(A)return}let G=W(["**/*.tsx","**/*.ts","**/*.js","**/*.mjs"],{followSymbolicLinks:!0,absolute:!0,cwd:N});G.sort();for(let B of G){let z=s(process.cwd(),l(B));if(/\.(test(-d)?|d|spec)\.(tsx|ts|js|mjs)$/.test(z)||/^(out|.next)[/\\]/.test(z)||m.test(z))continue;let{cssFile:J,css:Q}=o(z,D(z,"utf-8"),L,$,O,!1,!0);if(J)I(P($,h(J)),Q??"","utf-8")}I(P($,"devup-ui.css"),d(null,!1),"utf-8")}function Jm(m,L={}){if(process.env.TURBOPACK==="1"||process.env.TURBOPACK==="auto"){m??={},m.turbopack??={},m.turbopack.rules??={};let{package:E="@devup-ui/react",distDir:N="df",cssDir:A=C(N,"devup-ui"),singleCss:G=!1,devupFile:B="devup.json",include:z=[],prefix:J}=L;if(J)Nm(J);let Q=H(N,"sheet.json"),S=H(N,"classMap.json"),T=H(N,"fileMap.json"),V=H(N,".gitignore");if(!K(N))w(N,{recursive:!0});if(!K(A))w(A,{recursive:!0});if(!K(V))y(V,"*");let X=K(B)?JSON.parse(p(B,"utf-8"))?.theme:{};Lm(X);let Y=mm(E,"CustomColors","DevupThemeTypography","DevupTheme");if(Y)y(H(N,"theme.d.ts"),Y);let Z=new RegExp(`(node_modules(?!.*(${["@devup-ui",...z].join("|").replaceAll("/","[\\/\\\\_]")})([\\/\\\\.]|$)))|(.mdx.[tj]sx?$)`);U(Z,E,G,A,z);let v=JSON.parse(e()),M=JSON.parse(g()),_=JSON.parse(n()),R=i();if(R)process.env.DEVUP_UI_DEFAULT_THEME=R,m.env??={},Object.assign(m.env,{DEVUP_UI_DEFAULT_THEME:R});let x={[`./${c(process.cwd(),A).replaceAll("\\","/")}/*.css`]:[{loader:"@devup-ui/next-plugin/css-loader",options:{watch:!1}}],"*.{tsx,ts,js,mjs}":{loaders:[{loader:"@devup-ui/next-plugin/loader",options:{package:E,cssDir:A,sheetFile:Q,classMapFile:S,fileMapFile:T,themeFile:B,defaultSheet:v,defaultClassMap:M,defaultFileMap:_,watch:!1,singleCss:G,theme:X}}],condition:{not:{path:Z}}}};return Object.assign(m.turbopack.rules,x),m}let{webpack:$}=m;return m.webpack=(E,N)=>{if(L.cssDir??=C(N.dev?L.distDir??"df":".next/cache",`devup-ui_${N.buildId}`),E.plugins.push(new Em({...L,watch:N.dev})),typeof $==="function")return $(E,N);return E},m}export{Jm as DevupUI};