@empjs/cli 3.0.0-alpha.26 → 3.0.0-alpha.28

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/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type { EmpOptions } from './types/config';
2
2
  import type { EmpOptions } from './types/config';
3
3
  import type { GlobalStore } from './store';
4
+ export type { EMP3PluginType, EMP3PluginFnType } from './types/plugin';
4
5
  import store from './store';
5
6
  import runScript from './script';
6
7
  import dts from './script/dts';
@@ -8,3 +9,4 @@ export type EMPConfigFn = (store: GlobalStore) => EmpOptions | Promise<EmpOption
8
9
  export type EMPConfigExport = EmpOptions | EMPConfigFn;
9
10
  export declare function defineConfig(config: EMPConfigExport): EMPConfigExport;
10
11
  export { store, runScript, dts };
12
+ export type { GlobalStore };
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- var je=Object.defineProperty;var l=(o,e)=>()=>(o&&(e=o(o=0)),e);var k=(o,e)=>{for(var t in e)je(o,t,{get:e[t],enumerable:!0})};import{fileURLToPath as Te}from"node:url";import{dirname as Fe}from"node:path";import{readFile as Le}from"node:fs/promises";var Ae,yt,P,Q=l(()=>{"use strict";Ae=Te(import.meta.url),yt=Fe(Ae),P=async o=>{try{let e=await Le(o);return JSON.parse(e)}catch(e){console.error(e)}}});import x from"@rspack/core";import Ne from"fs";var $,X,Y=l(()=>{"use strict";$=class{store;async setup(e){this.store=e;let t=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare()];await Promise.all(t)}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:e}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(e,[{}])}async define(){this.store.chain.plugin("definePlugin").use(x.DefinePlugin,[this.store.empConfig.define])}async copy(){let e=this.store.resolve("public");Ne.existsSync(e)&&this.store.chain.plugin("copyRspackPlugin").use(x.CopyRspackPlugin,[{patterns:[{from:e,to:this.store.resolve("dist")}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(x.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){if(!this.store.empConfig.empShare.name)return;let{ModuleFederationPlugin:e}=x.container;this.store.chain.plugin("empShare").use(e,[{...this.store.empConfig.empShare}])}},X=new $});var D,K,Z=l(()=>{"use strict";D=class{store;async setup(e){this.store=e;let t=[this.react(),this.files()];await Promise.all(t)}async react(){if(this.store.reactVersion&&(this.store.empConfig.react.svgr&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,issuer:/\.[jt]sx?$/,resourceQuery:/svgr/,use:[{loader:this.store.importResolve("@svgr/webpack"),options:{}}]}}}}),this.store.isDev&&this.store.empConfig.react.hmr)){let{default:e}=await import("@rspack/plugin-react-refresh"),t={};this.store.empConfig.empShare.name&&(t.library=this.store.empConfig.empShare.name),this.store.chain.plugin("plugin-react-refresh").use(e,[t])}}async files(){(!this.store.reactVersion||!this.store.empConfig.react.svgr)&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,type:"asset/resource"}}}}),this.store.chain.merge({module:{rule:{inline:{resourceQuery:/inline/,type:"asset/inline"}}}}),this.store.chain.merge({module:{rule:{image:{test:/\.(png|jpe?g|gif|webp|ico)$/i,type:"asset"},fonts:{test:/\.(|otf|ttf|eot|woff|woff2)$/i,type:"asset/resource"},svga:{test:/\.(svga)$/i,type:"asset/resource"}}}})}},K=new D});var R,ee,te=l(()=>{"use strict";R=class{store;async setup(e){this.store=e;let t=[this.common(),this.stats(),this.devServer(),this.assets(),this.optimization()];await Promise.all(t)}async common(){this.store.merge({experiments:{rspackFuture:{}},mode:this.store.mode,cache:!0,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{css:{modules:{localIdentName:this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]"}}},output:this.store.empConfig.output,resolve:this.store.empConfig.resolve,externals:this.store.empConfig.externals})}async stats(){this.store.merge({stats:{colors:!0,all:!1,assets:!1,chunks:!1,timings:!0,version:!0}})}async devServer(){this.store.merge({devServer:this.store.empConfig.server})}async assets(){this.store.chain.merge({module:{rule:{assets:{test:/\.(png|jpe?g|gif|webp|ico|otf|ttf|eot|woff|woff2|svga)$/i,type:"asset/resource"}}}})}async optimization(){this.store.chain.merge({optimization:{chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify}})}},ee=new R});import Ge from"html-webpack-plugin";import Me from"fast-glob";import C from"node:path";var j,se,oe=l(()=>{"use strict";j=class{store;entriesConfig={};async setup(e){this.store=e,await this.init(),this.toConfig()}setHtmlConfig(e,t){return e.template=this.setTemplate(e.template),e.favicon=this.setFavicion(e.favicon),e.chunks=t,e.filename=`${t[0]}.html`,this.store.empConfig.base&&(e.publicPath=this.store.empConfig.base),e}setChunk(e){return e.replace(C.extname(e),"").replace(`${this.store.empConfig.appSrc}/`,"")}setTemplate(e){return e?this.store.resolve(e):this.store.empResolve(C.join("template","index.html"))}setFavicion(e){return e?this.store.resolve(e):this.store.empResolve(C.join("template","favicon.ico"))}setEntryItem(e,t,s){s=s||this.store.resolve(C.join(this.store.empConfig.appSrc,e));let r=this.setChunk(e);this.entriesConfig[r]={entry:{[r]:s},html:this.setHtmlConfig(t,[r])}}setRspackHtmlPlugin(e,t){this.store.chain.plugin(`html-plugin-${t}`).use(Ge,[e])}setRspackEntry(e){this.store.merge({entry:e})}async init(){let e=await Me([`${this.store.appSrc}/${this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}"}`]);if(e[0]){let t=C.join(this.store.empConfig.appSrc,this.store.empConfig.appEntry||"index");this.setEntryItem(t,this.store.empConfig.html,e[0])}if(Object.keys(this.store.empConfig.entries).length>0)for(let[t,s]of Object.entries(this.store.empConfig.entries))this.setEntryItem(t,{...this.store.empConfig.html,...s})}toConfig(){for(let[e,t]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(t.html,e),this.setRspackEntry(t.entry)}},se=new j});var T,re,ie=l(()=>{"use strict";T=class{store;async setup(e){this.store=e;let t=[this.sass(),this.less(),this.css()];await Promise.all(t)}async sass(){let e={loader:this.store.importResolve("sass-loader"),options:{}};this.store.chain.merge({module:{rule:{sass:{test:/\.(sass|scss)$/,use:[this.postcss,e],type:"css/auto"}}}})}async less(){let e={loader:this.store.importResolve("less-loader"),options:{}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:[this.postcss,e],type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:[this.postcss],type:"css/auto"}}}})}get postcss(){return{loader:this.store.importResolve("postcss-loader"),options:{postcssOptions:{plugins:this.store.empConfig.css.postcss}}}}},re=new T});var F,ne,ae=l(()=>{"use strict";Y();Z();te();oe();ie();F=class{store;async setup(e){this.store=e;let t=[ee.setup(this.store),K.setup(this.store),X.setup(this.store),se.setup(this.store),re.setup(this.store)];await Promise.all(t),await this.store.empConfig.plugins(),await this.store.empConfig.chain()}},ne=new F});import h from"chalk";import{table as He}from"table";var L,n,y=l(()=>{"use strict";L=class{pname="";logLevel="debug";setup({pname:e,logLevel:t}){this.pname=e,t&&(this.logLevel=t)}debug=(...e)=>["debug"].includes(this.logLevel)&&console.log(...e);info=(...e)=>["debug","info"].includes(this.logLevel)&&console.log(...e);warn=(...e)=>["debug","info","warn"].includes(this.logLevel)&&console.warn(...e);error=(...e)=>["debug","info","warn","error"].includes(this.logLevel)&&console.error(...e);blue=e=>{console.log(`${h.white.bgBlue(this.pname)}${h.blue.bgWhite(` ${e} `)}
1
+ var Oe=Object.defineProperty;var c=(o,e)=>()=>(o&&(e=o(o=0)),e);var P=(o,e)=>{for(var t in e)Oe(o,t,{get:e[t],enumerable:!0})};import{fileURLToPath as Pe}from"node:url";import{dirname as ke}from"node:path";import{readFile as $e}from"node:fs/promises";var je,mt,k,J=c(()=>{"use strict";je=Pe(import.meta.url),mt=ke(je),k=async o=>{try{let e=await $e(o);return JSON.parse(e)}catch(e){console.error(e)}}});import x from"@rspack/core";import De from"fs";var $,q,Q=c(()=>{"use strict";$=class{store;async setup(e){this.store=e;let t=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare()];await Promise.all(t)}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:e}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(e,[{}])}async define(){this.store.chain.plugin("definePlugin").use(x.DefinePlugin,[this.store.empConfig.define])}async copy(){let e=this.store.resolve("public");De.existsSync(e)&&this.store.chain.plugin("copyRspackPlugin").use(x.CopyRspackPlugin,[{patterns:[{from:e,to:this.store.resolve("dist")}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(x.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){if(!this.store.empConfig.empShare.name)return;let{ModuleFederationPlugin:e}=x.container;this.store.chain.plugin("empShare").use(e,[{...this.store.empConfig.empShare}])}},q=new $});var j,X,Y=c(()=>{"use strict";j=class{store;async setup(e){this.store=e;let t=[this.react(),this.files(),this.scripts()];await Promise.all(t)}async scripts(){let{isDev:e}=this.store,t=this.store.reactVersion?{react:{runtime:"automatic",development:e,refresh:e}}:{};this.store.chain.merge({module:{parser:{javascript:{exportsPresence:"error",importExportsPresence:"error"}},rule:{mjs:{test:/\.m?js/,resolve:{fullySpecified:!1}},scripts:{test:/\.(jsx?|tsx?)$/,use:[{loader:"builtin:swc-loader",options:{sourceMap:!0,jsc:{parser:{syntax:"typescript",tsx:!0},transform:t}}}]}}}})}async react(){if(this.store.reactVersion&&(this.store.empConfig.react.svgr&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,issuer:/\.[jt]sx?$/,resourceQuery:/svgr/,use:[{loader:this.store.importResolve("@svgr/webpack"),options:{}}]}}}}),this.store.isDev&&this.store.empConfig.react.hmr)){let{default:e}=await import("@rspack/plugin-react-refresh"),t={};this.store.empConfig.empShare.name&&(t.library=this.store.empConfig.empShare.name),this.store.chain.plugin("plugin-react-refresh").use(e,[t])}}async files(){(!this.store.reactVersion||!this.store.empConfig.react.svgr)&&this.store.chain.merge({module:{rule:{svg:{test:/\.svg$/,type:"asset/resource"}}}}),this.store.chain.merge({module:{rule:{inline:{resourceQuery:/inline/,type:"asset/inline"}}}}),this.store.chain.merge({module:{rule:{image:{test:/\.(png|jpe?g|gif|webp|ico)$/i,type:"asset/resource"},fonts:{test:/\.(|otf|ttf|eot|woff|woff2)$/i,type:"asset/resource"},svga:{test:/\.(svga)$/i,type:"asset/resource"}}}})}},X=new j});var D,K,Z=c(()=>{"use strict";D=class{store;async setup(e){this.store=e;let t=[this.common(),this.stats(),this.devServer(),this.optimization()];await Promise.all(t)}async common(){this.store.merge({experiments:{rspackFuture:{}},mode:this.store.mode,cache:!0,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{css:{modules:{localIdentName:this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]"}}},output:this.store.empConfig.output,resolve:this.store.empConfig.resolve,externals:this.store.empConfig.externals})}async stats(){this.store.merge({stats:{colors:!0,all:!1,assets:!1,chunks:!1,timings:!0,version:!0}})}async devServer(){this.store.merge({devServer:this.store.empConfig.server})}async optimization(){this.store.chain.merge({optimization:{chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify}})}},K=new D});import Re from"html-webpack-plugin";import Te from"fast-glob";import w from"node:path";var R,ee,te=c(()=>{"use strict";R=class{store;entriesConfig={};async setup(e){this.store=e,await this.init(),this.toConfig()}setHtmlConfig(e,t){return e.template=this.setTemplate(e.template),e.favicon=this.setFavicion(e.favicon),e.chunks=t,e.filename=`${t[0]}.html`,this.store.empConfig.base&&(e.publicPath=this.store.empConfig.base),e}setChunk(e){return e.replace(w.extname(e),"").replace(`${this.store.empConfig.appSrc}/`,"")}setTemplate(e){return e?this.store.resolve(e):this.store.empResolve(w.join("template","index.html"))}setFavicion(e){return e?this.store.resolve(e):this.store.empResolve(w.join("template","favicon.ico"))}setEntryItem(e,t,s){s=s||this.store.resolve(w.join(this.store.empConfig.appSrc,e));let r=this.setChunk(e);this.entriesConfig[r]={entry:{[r]:s},html:this.setHtmlConfig(t,[r])}}setRspackHtmlPlugin(e,t){this.store.chain.plugin(`html-plugin-${t}`).use(Re,[e])}setRspackEntry(e){this.store.merge({entry:e})}async init(){let e=await Te([`${this.store.appSrc}/${this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}"}`]);if(e[0]){let t=w.join(this.store.empConfig.appSrc,Object.keys(this.store.empConfig.entries).length>0&&this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index");this.setEntryItem(t,this.store.empConfig.html,e[0])}if(Object.keys(this.store.empConfig.entries).length>0)for(let[t,s]of Object.entries(this.store.empConfig.entries))this.setEntryItem(t,{...this.store.empConfig.html,...s})}toConfig(){for(let[e,t]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(t.html,e),this.setRspackEntry(t.entry)}},ee=new R});var T,se,oe=c(()=>{"use strict";T=class{store;async setup(e){this.store=e;let t=[this.sass(),this.less(),this.css()];await Promise.all(t)}async sass(){let e={loader:this.store.importResolve("sass-loader"),options:{}};this.store.chain.merge({module:{rule:{sass:{test:/\.(sass|scss)$/,use:[this.postcss,e],type:"css/auto"}}}})}async less(){let e={loader:this.store.importResolve("less-loader"),options:{}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:[this.postcss,e],type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:[this.postcss],type:"css/auto"}}}})}get postcss(){return{loader:this.store.importResolve("postcss-loader"),options:{postcssOptions:{plugins:this.store.empConfig.css.postcss}}}}},se=new T});var F,re,ie=c(()=>{"use strict";Q();Y();Z();te();oe();F=class{store;async setup(e){this.store=e;let t=[K.setup(this.store),X.setup(this.store),q.setup(this.store),ee.setup(this.store),se.setup(this.store)];await Promise.all(t),await this.store.empConfig.plugins(),await this.store.empConfig.chain()}},re=new F});import h from"chalk";import{table as Fe}from"table";var L,n,y=c(()=>{"use strict";L=class{pname="";logLevel="debug";setup({pname:e,logLevel:t}){this.pname=e,t&&(this.logLevel=t)}debug=(...e)=>["debug"].includes(this.logLevel)&&console.log(...e);info=(...e)=>["debug","info"].includes(this.logLevel)&&console.log(...e);warn=(...e)=>["debug","info","warn"].includes(this.logLevel)&&console.warn(...e);error=(...e)=>["debug","info","warn","error"].includes(this.logLevel)&&console.error(...e);blue=e=>{console.log(`${h.white.bgBlue(this.pname)}${h.blue.bgWhite(` ${e} `)}
2
2
  `)};cyan=e=>{console.log(`${h.white.bgCyan(this.pname)}${h.cyan.bgWhite(` ${e} `)}
3
3
  `)};magenta=e=>{console.log(`${h.white.bgMagenta(this.pname)}${h.magenta.bgWhite(` ${e} `)}
4
4
  `)};green=e=>{console.log(`${h.white.bgGreen(this.pname)}${h.green.bgWhite(` ${e} `)}
5
5
  `)};yellow=e=>{console.log(`${h.white.bgYellow(this.pname)}${h.yellow.bgWhite(` ${e} `)}
6
6
  `)};red=e=>{console.log(`${h.white.bgRed(this.pname)}${h.red.bgWhite(` ${e} `)}
7
7
  `)};sysError=e=>{console.log(`${h.white.bgRed(" System Error Tips ")}${h.red.bgWhite(` ${e} `)}
8
- `)};link=e=>h.hex("#3498db")(e);tableData=[];tableConfig={border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"}};tableInput(e){this.tableData.push(e)}tableOutput(){console.log(He(this.tableData,this.tableConfig))}},n=new L});function pe(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function A(o,...e){for(let t of e)for(let s in t){let r=t[s],i=o[s];if(Object(r)==r&&Object(i)===i){o[s]=A(i,r);continue}o[s]=t[s]}return o}var le,S=l(()=>{"use strict";le=(o="",e="")=>{let t=o.replace("^","").split("."),s=e.replace("^","").split("."),r=Math.max(t.length,s.length),i=0;for(let p=0;p<r;p++){let m=t.length>p?t[p]:0,c=isNaN(Number(m))?m.charCodeAt():Number(m),u=s.length>p?s[p]:0,f=isNaN(Number(u))?u.charCodeAt():Number(u);if(c<f){i=-1;break}else if(c>f){i=1;break}}return i}});import Ie from"node:fs";var N,ce,me=l(()=>{"use strict";S();N=class{store;appSrc="src";appEntry="";base="";assign(e,t){return t=t||{},{...e,...t}}async setup(e){this.store=e,await this.syncEmpOptions();let{appSrc:t,base:s,appEntry:r}=this.store.empOptions;t&&(this.appSrc=t),s&&(this.base=s),r&&(this.appEntry=r)}async chain(){this.store.empOptions.chain&&await this.store.empOptions.chain(this.store.chain)}async plugins(){this.store.empOptions.plugins&&Array.isArray(this.store.empOptions.plugins)&&this.store.empOptions.plugins.length>0&&await Promise.all(this.store.empOptions.plugins)}get debug(){return this.assign({loggerLevel:"info",clearLog:!0,progress:!1,showRsconfig:!1},this.store.empOptions.debug)}get build(){return this.assign({outDir:"dist",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev},this.store.empOptions.build)}get html(){return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,meta:{charset:{charset:"utf-8"},"http-equiv":{"http-equiv":"X-UA-Compatible",content:"IE=edge"},viewport:{content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"}},files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get react(){return this.assign({hmr:!0,svgr:!1},this.store.empOptions.react)}get server(){return this.assign({host:"0.0.0.0",port:8e3,open:!1,hot:!0,allowedHosts:["all"],historyApiFallback:!0,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, PATCH, OPTIONS","Access-Control-Allow-Headers":"X-Requested-With, content-type, Authorization"}},this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js"},this.store.empOptions.empShare)}get css(){return this.assign({postcss:[]},this.store.empOptions.css)}get output(){let e=this.store.isDev?"":".[contenthash:8]";return this.assign({publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`js/[name]${e}.js`,cssFilename:`css/[name]${e}.css`,cssChunkFilename:`css/[name]${e}.css`,assetModuleFilename:`assets/[name]${e}[ext][query]`,path:this.store.outDir,clean:!0},this.store.empOptions.output)}get define(){return this.assign({"process.env.NODE_ENV":`'${this.store.mode}'`,"import.meta.env.NODE_ENV":`'${this.store.mode}'`},this.store.empOptions.define)}get externals(){return this.assign({},this.store.empOptions.externals)}get resolve(){return A({alias:{src:this.store.resolve("src"),"@":this.store.resolve("src")},extensions:["...",".js",".jsx",".mjs",".ts",".tsx",".css",".less",".scss",".sass",".json",".wasm",".vue",".svg",".svga"]},this.store.empOptions.resolve)}async syncEmpOptions(){let e=this.store.resolve("emp-config.js");if(!Ie.existsSync(e))return;let{default:t}=await import(e);typeof t=="function"?this.store.empOptions=await t(this.store):this.store.empOptions=t||{}}get moduleTransformRule(){let e={and:[/(node_modules|bower_components)/]},{moduleTransform:t}=this.store.empOptions;return t?.exclude&&(e.and=t.exclude),t?.include&&(e.not=t.include),e}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}},ce=new N});var G,he,ue=l(()=>{"use strict";G=class{js(e){let{isDev:t}=e,s={test:/\.(jsx?|tsx?)$/,use:[{loader:"builtin:swc-loader",options:{sourceMap:!0,jsc:{parser:{syntax:"typescript",tsx:!0},transform:{react:{runtime:"automatic",development:t,refresh:t}}}}}]};e.rsConfig.module?.rules?.push(s)}},he=new G});var M,fe,ge=l(()=>{"use strict";ue();M=class{async afterChain(e){he.js(e)}},fe=new M});import v from"node:path";import Ue from"webpack-chain";var H,a,g=l(()=>{"use strict";Q();ae();y();me();ge();H=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=import.meta.resolve("@empjs/cli").replace("/dist/index.js","").replace("file://","");empSource=v.resolve(this.empRoot,"dist");resolve=e=>v.isAbsolute(e)?e:v.resolve(this.root,e);empResolve=e=>v.resolve(this.empRoot,e);appSrc="";outDir="";publicDir="";resource={dir:"",key:"",cert:""};cacheDir="";mode="development";cliMode="dev";isDev=!0;reactVersion=void 0;cliOptions;chain;rsConfig;empOptions={};empConfig;async setup(e,t){await this.initVars(e,t),this.empConfig=ce,await this.empConfig.setup(this),this.initPaths(),this.chain=new Ue,await ne.setup(this),this.setLogger(),this.toConfig(),this.logConfig()}async initVars(e,t){this.cliOptions=t||{},this.cliMode="prod",this.mode=e==="dev"?"development":"production",this.isDev=this.mode==="development";let s=await P(this.empResolve("package.json")),r=await P(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...r},this.reactVersion=this.pkg.dependencies.react||this.pkg.devDependencies.react}initPaths(){this.appSrc=this.resolve(this.empConfig.appSrc),this.outDir=this.resolve(this.empConfig.build.outDir),this.publicDir=this.resolve(this.empConfig.build.publicDir),this.cacheDir=this.resolve(this.empConfig.cacheDir),this.resource.dir=v.join(this.empRoot,"resource"),this.resource.cert=v.join(this.resource.dir,"emp.cert"),this.resource.key=v.join(this.resource.dir,"emp.key")}setLogger(){let e=this.cliMode==="dev"?"debug":"info";this.empConfig.debug.loggerLevel&&(e=this.empConfig.debug.loggerLevel),n.setup({pname:` EMP v${this.empPkg.version} ${this.cliMode==="dev"?"DEV ":""}`,logLevel:e})}merge(e){this.chain.merge(e)}importResolve(e){return import.meta.resolve(e).replace("file://","")}toConfig(){this.rsConfig=this.chain.toConfig(),fe.afterChain(this)}logConfig(){this.empConfig.debug.showRsconfig&&console.log("[ChainConfig]",JSON.stringify(this.rsConfig,null,2))}},a=new H});import de from"node:fs/promises";var d,E=l(()=>{"use strict";y();g();S();d=class{async setup(e,t){await a.setup(e,t),a.empConfig.debug.clearLog&&pe(),n.blue(`${e} Running`),await this.run()}async run(){}get isHttps(){let{server:e,https:t}=a.rsConfig.devServer||{};return e==="https"||typeof e=="object"&&e.type==="https"||t===!0}getcert(){return Promise.all([de.readFile(a.resource.key),de.readFile(a.resource.cert)])}}});import Ve from"net";import Be from"os";async function O(o,e="localhost"){if(o!==We&&(o<ye||o>I))throw new Error(`Port number must lie between ${ye} and ${I}`);let t=o,s=_e(),r;e&&!s.has(e)?r=new Set([e]):r=s;let i=new Set(["EADDRINUSE","EACCES"]);for(;t<=I;)try{return await Je(t,r)}catch(p){if(!i.has(p.code))throw p;t+=1}throw new Error("No available ports found")}var ye,I,We,_e,ze,Je,U=l(()=>{"use strict";ye=1024,I=65535,We=443,_e=()=>{let o=Be.networkInterfaces(),e=new Set([void 0,"0.0.0.0"]);for(let t of Object.values(o))if(t)for(let s of t)e.add(s.address);return e},ze=(o,e)=>new Promise((t,s)=>{let r=Ve.createServer();r.unref(),r.on("error",s),r.listen(o,e,()=>{let{port:i}=r.address();r.close(()=>{t(i)})})}),Je=async(o,e)=>{let t=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of e)try{await ze(o,s)}catch(r){if(!t.has(r.code))throw r}return o}});var ve={};k(ve,{default:()=>Xe});import{rspack as qe}from"@rspack/core";import{RspackDevServer as Qe}from"@rspack/dev-server";var V,Xe,be=l(()=>{"use strict";g();E();y();U();V=class extends d{async run(){let e=qe(a.rsConfig);if(!a.rsConfig.devServer){n.error("devServer is not defined in config");return}let t={...a.rsConfig.devServer},{host:s,port:r}=t;if(this.isHttps&&(t.https===!0&&delete t.https,!t.server)){let[m,c]=await this.getcert();t.server={type:"https",options:{key:m,cert:c}}}let i=await O(Number(r),s);i!==r&&(a.rsConfig.devServer.port=i,t.port=i),new Qe(t,e).start()}},Xe=new V});var we={};k(we,{default:()=>Ke});import{rspack as Ye}from"@rspack/core";var B,Ke,Ce=l(()=>{"use strict";y();g();E();B=class extends d{async run(){Ye(a.rsConfig,(e,t)=>{if(e!==null){n.error(e.stack||e),e.message&&n.error(e.message);return}if(!t){n.red("Stats is Undefined.");return}let s=t.toString({all:!1,colors:!0,assets:!0,chunks:!1,entrypoints:!0,timings:!0,version:!0});t.hasErrors()&&(n.error(s),n.red("Failed to compile."),process.exit(1)),t.hasWarnings()&&(n.yellow("Compiled with warnings."),n.warn(s)),n.info(s),n.green("Compiled successfully.")})}},Ke=new B});import xe from"url";import Se from"chalk";import{ip as Ze}from"address";import{gateway4sync as et}from"default-gateway";function Ee(o,e,t,s="/"){let r=w=>xe.format({protocol:o,hostname:w,port:t,pathname:s}),i=w=>xe.format({protocol:o,hostname:w,port:Se.bold(t),pathname:s}),p=e==="0.0.0.0"||e==="::",m,c,u=Se.gray("unavailable");if(p){m="localhost";try{let{int:w}=et();c=Ze(w||""),c&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(c)?u=i(c):c=void 0)}catch{}}else m=e,c=e,u=i(c);let f=i(m),q=r(m);return{lanUrlForConfig:c,lanUrlForTerminal:u,localUrlForTerminal:f,localUrlForBrowser:q}}var Oe=l(()=>{"use strict"});var Pe={};k(Pe,{default:()=>nt});import ke from"express";import tt from"cors";import st from"compression";import ot from"https";import rt from"path";import it from"node:fs/promises";var W,nt,$e=l(()=>{"use strict";U();Oe();g();y();E();W=class extends d{app;startLogger({host:e,port:t,publicPath:s}){if(s&&(s.indexOf("http://")>-1||s.indexOf("https://")>-1))n.info(`- Network: ${n.link(s)}`);else{let r=this.isHttps?"https":"http",p=Ee(r,e||"0.0.0.0",t,s);n.info(`- Local: ${n.link(p.localUrlForTerminal)}`),n.info(`- Network: ${n.link(p.lanUrlForTerminal)}`)}}async run(){let e=ke();e.use(st()),e.use(tt()),this.app=e;let t=a.resolve(a.rsConfig.output?.path);this.app.use(ke.static(t));let s=await it.readFile(rt.join(t,"index.html"),"utf8");this.app.get("*",(u,f)=>f.send(s));let r={...a.rsConfig.devServer},{host:i,port:p}=r,m=a.rsConfig.output?.publicPath==="auto"?"/":a.rsConfig.output?.publicPath,c=await O(Number(p),i);if(this.isHttps){let[u,f]=await this.getcert();ot.createServer(typeof this.isHttps!="boolean"?this.isHttps:{key:u,cert:f},this.app).listen(c,()=>{this.startLogger({host:i,port:c,publicPath:m})})}else this.app.listen(c,()=>{this.startLogger({host:i,port:c,publicPath:m})})}},nt=new W});g();g();S();y();import{program as b}from"commander";import _,{exit as at}from"node:process";function De(){let o="20.0.0";le(o,_.versions.node)===1&&(n.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${_.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${o}`),at(0)),b.version(a.empPkg.version,"-v, --version").usage("<command> [options]"),b.command("dev").description("Dev \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-h, --hot","\u662F\u5426\u4F7F\u7528\u70ED\u66F4\u65B0 \u9ED8\u8BA4\u542F\u52A8").option("-o, --open","\u662F\u5426\u6253\u5F00\u8C03\u8BD5\u9875\u9762 \u9ED8\u8BA4\u4E0D\u6253\u5F00").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>(be(),ve));await t.setup("dev",e)}),b.command("build").description("Build \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-a, --analyze","\u751F\u6210\u5206\u6790\u62A5\u544A \u9ED8\u8BA4\u4E3A false").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>(Ce(),we));await t.setup("build",e)}),b.command("serve").description("Server \u6A21\u5F0F").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>($e(),Pe));await t.setup("serve",e)}),b.command("dts").description("\u62C9\u53D6 remote \u9879\u76EE\u7684 d.ts").option("-p, --typingsPath <typingsPath>","\u4E0B\u8F7D\u76EE\u5F55").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").action(e=>{}),b.command("init").description("\u521D\u59CB\u5316 emp \u9879\u76EE").option("-d, --data [data]","JSON\u6570\u636E http\u5730\u5740 \u6216\u8005 \u6587\u4EF6\u8DEF\u5F84\u76F8\u5BF9\u3001\u7EDD\u5BF9\u8DEF\u5F84").action(e=>{}),b.parse(_.argv)}g();import pt from"fast-glob";import Re from"node:fs/promises";import z from"node:path";var lt=/(?:(?:import|export)\s?(?:type)?\s?(?:(?:\{[^;\n]+\})|(?:[^;\n]+))\s?from\s?['"][^;\n]+['"])|(?:import\(['"][^;\n]+?['"]\))/g,ct=/(?:import|export)\s?(?:type)?\s?\{?.+\}?\s?from\s?['"](.+)['"]/,mt=/import\(['"]([^;\n]+?)['"]\)/,J=class{list=[];outDir=a.resolve("dist");aliasName="@empjs/cli";async setup(e,t){e&&(this.outDir=e),t&&(this.aliasName=t);let s=await this.readDts();await this.writeCode(s)}async readDts(){this.list=await pt(["dist/**/*.d.ts"]);let e=[];this.list.map(s=>{s=a.resolve(s),e.push(this.readFile(s))});let t=await Promise.all(e);return t=t.map(s=>this.replaceAliasPath(s)),t}async readFile(e){let t=await Re.readFile(e,{encoding:"utf-8"});return{src:e,code:t}}replaceAliasPath({src:e,code:t}){t=t.replace(lt,r=>{let i=r.match(ct);if(i||(i=r.match(mt)),i&&i[1]){let p=i[1];if(!p.startsWith("."))return r;let m=z.resolve(z.dirname(e),p).replace(this.outDir,this.aliasName);return r.replace(i[1],m)}return r});let s=e.replace(this.outDir,this.aliasName).replace(".d.ts","");return s.endsWith("/index")&&(s=s.replace("/index","")),t=this.warpDeclareModule(s,t),{code:t,src:e,mod:s}}warpDeclareModule(e,t){return`declare module '${e}' {\r
8
+ `)};link=e=>h.hex("#3498db")(e);tableData=[];tableConfig={border:{topBody:"\u2500",topJoin:"\u252C",topLeft:"\u250C",topRight:"\u2510",bottomBody:"\u2500",bottomJoin:"\u2534",bottomLeft:"\u2514",bottomRight:"\u2518",bodyLeft:"\u2502",bodyRight:"\u2502",bodyJoin:"\u2502",joinBody:"\u2500",joinLeft:"\u251C",joinRight:"\u2524",joinJoin:"\u253C"}};tableInput(e){this.tableData.push(e)}tableOutput(){console.log(Fe(this.tableData,this.tableConfig))}},n=new L});function ne(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function A(o,...e){for(let t of e)for(let s in t){let r=t[s],i=o[s];if(Object(r)==r&&Object(i)===i){o[s]=A(i,r);continue}o[s]=t[s]}return o}var pe,E=c(()=>{"use strict";pe=(o="",e="")=>{let t=o.replace("^","").split("."),s=e.replace("^","").split("."),r=Math.max(t.length,s.length),i=0;for(let a=0;a<r;a++){let m=t.length>a?t[a]:0,l=isNaN(Number(m))?m.charCodeAt():Number(m),u=s.length>a?s[a]:0,g=isNaN(Number(u))?u.charCodeAt():Number(u);if(l<g){i=-1;break}else if(l>g){i=1;break}}return i}});import Le from"node:fs";var N,ae,le=c(()=>{"use strict";E();N=class{store;appSrc="src";appEntry="";base="";assign(e,t){return t=t||{},{...e,...t}}async setup(e){this.store=e,await this.syncEmpOptions();let{appSrc:t,base:s,appEntry:r}=this.store.empOptions;t&&(this.appSrc=t),s&&(this.base=s),r&&(this.appEntry=r)}async chain(){this.store.empOptions.chain&&await this.store.empOptions.chain(this.store.chain)}async plugins(){let e=[];this.store.empOptions.plugins&&Array.isArray(this.store.empOptions.plugins)&&this.store.empOptions.plugins.length>0&&(this.store.empOptions.plugins.map(t=>{e.push(t.rsConfig(this.store))}),await Promise.all(e))}get debug(){return this.assign({loggerLevel:"info",clearLog:!0,progress:!1,showRsconfig:!1},this.store.empOptions.debug)}get build(){return this.assign({outDir:"dist",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev},this.store.empOptions.build)}get html(){return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,meta:{charset:{charset:"utf-8"},"http-equiv":{"http-equiv":"X-UA-Compatible",content:"IE=edge"},viewport:{content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"}},files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get react(){return this.assign({hmr:!0,svgr:!1},this.store.empOptions.react)}get server(){return this.assign({host:"0.0.0.0",port:8e3,open:!1,hot:!0,allowedHosts:["all"],historyApiFallback:!0,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, PATCH, OPTIONS","Access-Control-Allow-Headers":"X-Requested-With, content-type, Authorization"}},this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js"},this.store.empOptions.empShare)}get css(){return this.assign({postcss:[]},this.store.empOptions.css)}get output(){let e=(this.store.isDev,".[contenthash:8]");return this.assign({publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`js/[name]${e}.js`,cssFilename:`css/[name]${e}.css`,cssChunkFilename:`css/[name]${e}.css`,assetModuleFilename:`assets/[name]${e}[ext][query]`,path:this.store.outDir,clean:!0},this.store.empOptions.output)}get define(){return this.assign({"process.env.NODE_ENV":`'${this.store.mode}'`,"import.meta.env.NODE_ENV":`'${this.store.mode}'`},this.store.empOptions.define)}get externals(){return this.assign({},this.store.empOptions.externals)}get resolve(){return A({alias:{src:this.store.resolve("src"),"@":this.store.resolve("src")},extensions:["...",".js",".jsx",".mjs",".ts",".tsx",".css",".less",".scss",".sass",".json",".wasm",".vue",".svg",".svga"]},this.store.empOptions.resolve)}async syncEmpOptions(){let e=this.store.resolve("emp-config.js");if(!Le.existsSync(e))return;let{default:t}=await import(e);typeof t=="function"?this.store.empOptions=await t(this.store):this.store.empOptions=t||{}}get moduleTransformRule(){let e={and:[/(node_modules|bower_components)/]},{moduleTransform:t}=this.store.empOptions;return t?.exclude&&(e.and=t.exclude),t?.include&&(e.not=t.include),e}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}},ae=new N});import v from"node:path";import Ae from"webpack-chain";var M,p,f=c(()=>{"use strict";J();ie();y();le();M=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=import.meta.resolve("@empjs/cli").replace("/dist/index.js","").replace("file://","");empSource=v.resolve(this.empRoot,"dist");resolve=e=>v.isAbsolute(e)?e:v.resolve(this.root,e);empResolve=e=>v.resolve(this.empRoot,e);appSrc="";outDir="";publicDir="";resource={dir:"",key:"",cert:""};cacheDir="";mode="development";cliMode="dev";isDev=!0;reactVersion=void 0;cliOptions;chain;rsConfig;empOptions={};empConfig;async setup(e,t){await this.initVars(e,t),this.empConfig=ae,await this.empConfig.setup(this),this.initPaths(),this.chain=new Ae,await re.setup(this),this.setLogger(),this.toConfig(),this.logConfig()}async initVars(e,t){this.cliOptions=t||{},this.cliMode="prod",this.mode=e==="dev"?"development":"production",this.isDev=this.mode==="development";let s=await k(this.empResolve("package.json")),r=await k(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...r},this.reactVersion=this.pkg.dependencies.react||this.pkg.devDependencies.react}initPaths(){this.appSrc=this.resolve(this.empConfig.appSrc),this.outDir=this.resolve(this.empConfig.build.outDir),this.publicDir=this.resolve(this.empConfig.build.publicDir),this.cacheDir=this.resolve(this.empConfig.cacheDir),this.resource.dir=v.join(this.empRoot,"resource"),this.resource.cert=v.join(this.resource.dir,"emp.cert"),this.resource.key=v.join(this.resource.dir,"emp.key")}setLogger(){let e=this.cliMode==="dev"?"debug":"info";this.empConfig.debug.loggerLevel&&(e=this.empConfig.debug.loggerLevel),n.setup({pname:` EMP v${this.empPkg.version} ${this.cliMode==="dev"?"DEV ":""}`,logLevel:e})}merge(e){this.chain.merge(e)}importResolve(e){return import.meta.resolve(e).replace("file://","")}toConfig(){this.rsConfig=this.chain.toConfig()}logConfig(){this.empConfig.debug.showRsconfig&&console.log("[ChainConfig]",JSON.stringify(this.rsConfig,null,2))}},p=new M});import ce from"node:fs/promises";var d,S=c(()=>{"use strict";y();f();E();d=class{async setup(e,t){await p.setup(e,t),p.empConfig.debug.clearLog&&ne(),n.blue(`${e} Running`),await this.run()}async run(){}get isHttps(){let{server:e,https:t}=p.rsConfig.devServer||{};return e==="https"||typeof e=="object"&&e.type==="https"||t===!0}getcert(){return Promise.all([ce.readFile(p.resource.key),ce.readFile(p.resource.cert)])}}});import Ne from"net";import Me from"os";async function O(o,e="localhost"){if(o!==Ge&&(o<me||o>G))throw new Error(`Port number must lie between ${me} and ${G}`);let t=o,s=He(),r;e&&!s.has(e)?r=new Set([e]):r=s;let i=new Set(["EADDRINUSE","EACCES"]);for(;t<=G;)try{return await Ue(t,r)}catch(a){if(!i.has(a.code))throw a;t+=1}throw new Error("No available ports found")}var me,G,Ge,He,Ie,Ue,H=c(()=>{"use strict";me=1024,G=65535,Ge=443,He=()=>{let o=Me.networkInterfaces(),e=new Set([void 0,"0.0.0.0"]);for(let t of Object.values(o))if(t)for(let s of t)e.add(s.address);return e},Ie=(o,e)=>new Promise((t,s)=>{let r=Ne.createServer();r.unref(),r.on("error",s),r.listen(o,e,()=>{let{port:i}=r.address();r.close(()=>{t(i)})})}),Ue=async(o,e)=>{let t=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of e)try{await Ie(o,s)}catch(r){if(!t.has(r.code))throw r}return o}});var he={};P(he,{default:()=>We});import{rspack as Ve}from"@rspack/core";import{RspackDevServer as Be}from"@rspack/dev-server";var I,We,ue=c(()=>{"use strict";f();S();y();H();I=class extends d{async run(){let e=Ve(p.rsConfig);if(!p.rsConfig.devServer){n.error("devServer is not defined in config");return}let t=Object.assign({},p.rsConfig.devServer),{host:s,port:r}=t;if(this.isHttps&&(t.https===!0&&delete t.https,!t.server)){let[m,l]=await this.getcert();t.server={type:"https",options:{key:m,cert:l}}}let i=await O(Number(r),s);i!==r&&(p.rsConfig.devServer.port=i,t.port=i),new Be(t,e).start()}},We=new I});var ge={};P(ge,{default:()=>ze});import{rspack as _e}from"@rspack/core";var U,ze,fe=c(()=>{"use strict";y();f();S();U=class extends d{async run(){_e(p.rsConfig,(e,t)=>{if(e!==null){n.error(e.stack||e),e.message&&n.error(e.message);return}if(!t){n.red("Stats is Undefined.");return}let s=t.toString({all:!1,colors:!0,assets:!0,chunks:!1,entrypoints:!0,timings:!0,version:!0});t.hasErrors()&&(n.error(s),n.red("Failed to compile."),process.exit(1)),t.hasWarnings()&&(n.yellow("Compiled with warnings."),n.warn(s)),n.info(s),n.green("Compiled successfully.")})}},ze=new U});import de from"url";import ye from"chalk";import{ip as Je}from"address";import{gateway4sync as qe}from"default-gateway";function ve(o,e,t,s="/"){let r=C=>de.format({protocol:o,hostname:C,port:t,pathname:s}),i=C=>de.format({protocol:o,hostname:C,port:ye.bold(t),pathname:s}),a=e==="0.0.0.0"||e==="::",m,l,u=ye.gray("unavailable");if(a){m="localhost";try{let{int:C}=qe();l=Je(C||""),l&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(l)?u=i(l):l=void 0)}catch{}}else m=e,l=e,u=i(l);let g=i(m),z=r(m);return{lanUrlForConfig:l,lanUrlForTerminal:u,localUrlForTerminal:g,localUrlForBrowser:z}}var be=c(()=>{"use strict"});var we={};P(we,{default:()=>et});import Ce from"express";import Qe from"cors";import Xe from"compression";import Ye from"https";import Ke from"path";import Ze from"node:fs/promises";var V,et,xe=c(()=>{"use strict";H();be();f();y();S();V=class extends d{app;startLogger({host:e,port:t,publicPath:s}){if(s&&(s.indexOf("http://")>-1||s.indexOf("https://")>-1))n.info(`- Network: ${n.link(s)}`);else{let r=this.isHttps?"https":"http",a=ve(r,e||"0.0.0.0",t,s);n.info(`- Local: ${n.link(a.localUrlForTerminal)}`),n.info(`- Network: ${n.link(a.lanUrlForTerminal)}`)}}async run(){let e=Ce();e.use(Xe()),e.use(Qe()),this.app=e;let t=p.resolve(p.rsConfig.output?.path);this.app.use(Ce.static(t));let s=await Ze.readFile(Ke.join(t,"index.html"),"utf8");this.app.get("*",(u,g)=>g.send(s));let r=Object.assign({},p.rsConfig.devServer),{host:i,port:a}=r,m=p.rsConfig.output?.publicPath==="auto"?"/":p.rsConfig.output?.publicPath,l=await O(Number(a),i);if(this.isHttps){let[u,g]=await this.getcert();Ye.createServer(typeof this.isHttps!="boolean"?this.isHttps:{key:u,cert:g},this.app).listen(l,()=>{this.startLogger({host:i,port:l,publicPath:m})})}else this.app.listen(l,()=>{this.startLogger({host:i,port:l,publicPath:m})})}},et=new V});f();f();E();y();import{program as b}from"commander";import B,{exit as tt}from"node:process";function Ee(){let o="20.0.0";pe(o,B.versions.node)===1&&(n.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${B.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${o}`),tt(0)),b.version(p.empPkg.version,"-v, --version").usage("<command> [options]"),b.command("dev").description("Dev \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-h, --hot","\u662F\u5426\u4F7F\u7528\u70ED\u66F4\u65B0 \u9ED8\u8BA4\u542F\u52A8").option("-o, --open","\u662F\u5426\u6253\u5F00\u8C03\u8BD5\u9875\u9762 \u9ED8\u8BA4\u4E0D\u6253\u5F00").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>(ue(),he));await t.setup("dev",e)}),b.command("build").description("Build \u6A21\u5F0F").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").option("-a, --analyze","\u751F\u6210\u5206\u6790\u62A5\u544A \u9ED8\u8BA4\u4E3A false").option("-t, --ts","\u751F\u6210\u7C7B\u578B\u6587\u4EF6 \u9ED8\u8BA4\u4E3A false").option("-pr, --profile","\u7EDF\u8BA1\u6A21\u5757\u6D88\u8017").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>(fe(),ge));await t.setup("build",e)}),b.command("serve").description("Server \u6A21\u5F0F").option("-cl, --clearLog <clearLog>","\u6E05\u7A7A\u65E5\u5FD7 \u9ED8\u8BA4\u4E3A true").action(async e=>{let{default:t}=await Promise.resolve().then(()=>(xe(),we));await t.setup("serve",e)}),b.command("dts").description("\u62C9\u53D6 remote \u9879\u76EE\u7684 d.ts").option("-p, --typingsPath <typingsPath>","\u4E0B\u8F7D\u76EE\u5F55").option("-e, --env <env>","\u90E8\u7F72\u73AF\u5883 dev\u3001test\u3001prod").action(e=>{}),b.command("init").description("\u521D\u59CB\u5316 emp \u9879\u76EE").option("-d, --data [data]","JSON\u6570\u636E http\u5730\u5740 \u6216\u8005 \u6587\u4EF6\u8DEF\u5F84\u76F8\u5BF9\u3001\u7EDD\u5BF9\u8DEF\u5F84").action(e=>{}),b.parse(B.argv)}f();import st from"fast-glob";import Se from"node:fs/promises";import W from"node:path";var ot=/(?:(?:import|export)\s?(?:type)?\s?(?:(?:\{[^;\n]+\})|(?:[^;\n]+))\s?from\s?['"][^;\n]+['"])|(?:import\(['"][^;\n]+?['"]\))/g,rt=/(?:import|export)\s?(?:type)?\s?\{?.+\}?\s?from\s?['"](.+)['"]/,it=/import\(['"]([^;\n]+?)['"]\)/,_=class{list=[];outDir=p.resolve("dist");aliasName="@empjs/cli";async setup(e,t){e&&(this.outDir=e),t&&(this.aliasName=t);let s=await this.readDts();await this.writeCode(s)}async readDts(){this.list=await st(["dist/**/*.d.ts"]);let e=[];this.list.map(s=>{s=p.resolve(s),e.push(this.readFile(s))});let t=await Promise.all(e);return t=t.map(s=>this.replaceAliasPath(s)),t}async readFile(e){let t=await Se.readFile(e,{encoding:"utf-8"});return{src:e,code:t}}replaceAliasPath({src:e,code:t}){t=t.replace(ot,r=>{let i=r.match(rt);if(i||(i=r.match(it)),i&&i[1]){let a=i[1];if(!a.startsWith("."))return r;let m=W.resolve(W.dirname(e),a).replace(this.outDir,this.aliasName);return r.replace(i[1],m)}return r});let s=e.replace(this.outDir,this.aliasName).replace(".d.ts","");return s.endsWith("/index")&&(s=s.replace("/index","")),t=this.warpDeclareModule(s,t),{code:t,src:e,mod:s}}warpDeclareModule(e,t){return`declare module '${e}' {\r
9
9
  ${t}}\r
10
- `}async writeCode(e){let t="";e.map(s=>{t+=s.code}),await Re.writeFile(z.join(this.outDir.replace("dist","types"),"type.d.ts"),t)}},ht=new J;function Xs(o){return o}export{Xs as defineConfig,ht as dts,De as runScript,a as store};
10
+ `}async writeCode(e){let t="";e.map(s=>{t+=s.code}),await Se.writeFile(W.join(this.outDir.replace("dist","types"),"type.d.ts"),t)}},nt=new _;function Is(o){return o}export{Is as defineConfig,nt as dts,Ee as runScript,p as store};
@@ -5,7 +5,6 @@ declare class RspackCommon {
5
5
  common(): Promise<void>;
6
6
  stats(): Promise<void>;
7
7
  devServer(): Promise<void>;
8
- assets(): Promise<void>;
9
8
  optimization(): Promise<void>;
10
9
  }
11
10
  declare const _default: RspackCommon;
@@ -2,6 +2,7 @@ import type { GlobalStore } from '../../store';
2
2
  declare class RspackModule {
3
3
  store: GlobalStore;
4
4
  setup(store: GlobalStore): Promise<void>;
5
+ scripts(): Promise<void>;
5
6
  react(): Promise<void>;
6
7
  files(): Promise<void>;
7
8
  }
@@ -1,6 +1,7 @@
1
1
  import { Configuration as devServerConfig } from '@rspack/dev-server';
2
2
  import Chain from 'webpack-chain';
3
3
  import { Externals, HtmlRspackPluginOptions, ModuleFederationPluginOptions, Output, Resolve, RuleSetRule } from '@rspack/core';
4
+ import { EMP3PluginType } from './plugin';
4
5
  export type LoggerType = 'debug' | 'info' | 'warn' | 'error';
5
6
  export type DebugType = {
6
7
  loggerLevel: LoggerType;
@@ -57,7 +58,6 @@ export type BuildType = {
57
58
  */
58
59
  minify?: boolean;
59
60
  };
60
- type PluginsFnType = () => void | Promise<void>;
61
61
  export interface HtmlType extends HtmlRspackPluginOptions {
62
62
  /**
63
63
  * 基于项目的根目录 index.html url
@@ -134,7 +134,7 @@ export type EmpOptions = {
134
134
  */
135
135
  appEntry?: string;
136
136
  build?: BuildType;
137
- plugins?: PluginsFnType[];
137
+ plugins?: EMP3PluginType[];
138
138
  html?: HtmlType;
139
139
  entries?: EntriesType;
140
140
  server?: ServerType;
@@ -173,4 +173,3 @@ export type EmpOptions = {
173
173
  */
174
174
  output?: Output;
175
175
  };
176
- export {};
@@ -0,0 +1,6 @@
1
+ import type { GlobalStore } from '../store';
2
+ export type EMP3PluginType = {
3
+ name: string;
4
+ rsConfig: (store: GlobalStore) => Promise<void>;
5
+ };
6
+ export type EMP3PluginFnType = (o: any) => EMP3PluginType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@empjs/cli",
3
- "version": "3.0.0-alpha.26",
3
+ "version": "3.0.0-alpha.28",
4
4
  "description": "emp",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -76,9 +76,10 @@
76
76
  "tsc-alias": "^1.8.8"
77
77
  },
78
78
  "dependencies": {
79
- "@rspack/core": "^0.5.3",
80
- "@rspack/dev-server": "^0.5.3",
81
- "@rspack/plugin-react-refresh": "^0.5.3",
79
+ "@rspack/core": "^0.5.4",
80
+ "@rspack/dev-server": "^0.5.4",
81
+ "@rspack/plugin-react-refresh": "^0.5.4",
82
+ "react-refresh": "^0.14.0",
82
83
  "@svgr/webpack": "^8.1.0",
83
84
  "@types/node": "^20.8.7",
84
85
  "@types/react": "^18.2.30",
@@ -99,9 +100,5 @@
99
100
  "typescript-plugin-css-modules": "^5.0.2",
100
101
  "webpack-bundle-analyzer": "^4.9.1",
101
102
  "webpack-chain": "^6.5.1"
102
- },
103
- "peerDependencies": {
104
- "@swc/helpers": "^0.5.3",
105
- "react-refresh": "^0.14.0"
106
103
  }
107
104
  }