@empjs/cli 3.0.0-rc.2-4 → 3.0.0-rc.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/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- // files
2
+ /// <reference types="react" />
3
3
  declare module '*.svga' {
4
4
  const src: string
5
5
  export default src
@@ -19,9 +19,6 @@ declare module '*.gif' {
19
19
  const src: string
20
20
  export default src
21
21
  }
22
-
23
- /// <reference types="node" />
24
- //
25
22
  declare module '*.jpg' {
26
23
  const src: string
27
24
  export default src
@@ -0,0 +1,3 @@
1
+ export * as chalk from 'chalk';
2
+ export * as utils from './utils';
3
+ export { default as logger } from './logger';
@@ -1,6 +1,7 @@
1
1
  export type LoggerType = 'debug' | 'info' | 'warn' | 'error';
2
2
  declare class Logger {
3
3
  pname: string;
4
+ brandName: string;
4
5
  logLevel: string;
5
6
  setup({ pname, logLevel }: any): void;
6
7
  debug: (...args: any[]) => false | void;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  export type { EmpOptions } from './types/config';
2
- import type { EmpOptions } from './types/config';
3
2
  import type { GlobalStore } from './store';
3
+ import type { EmpOptions } from './types/config';
4
4
  export type { EMP3PluginType, EMP3PluginFnType } from './types/plugin';
5
- import store from './store';
5
+ import { rspack } from '@rspack/core';
6
6
  import runScript from './script';
7
7
  import dts from './script/dts';
8
+ import store from './store';
8
9
  export type EMPConfigFn = (store: GlobalStore) => EmpOptions | Promise<EmpOptions>;
9
10
  export type EMPConfigExport = EmpOptions | EMPConfigFn;
10
11
  export declare function defineConfig(config: EMPConfigExport): EMPConfigExport;
11
- export { store, runScript, dts };
12
+ export { store, runScript, dts, rspack };
12
13
  export type { GlobalStore };
14
+ export * as empHelper from './helper';
package/dist/index.js CHANGED
@@ -1,16 +1,17 @@
1
- var dt=Object.defineProperty;var l=(i,e)=>()=>(i&&(e=i(i=0)),e);var J=(i,e)=>{for(var t in e)dt(i,t,{get:e[t],enumerable:!0})};import{fileURLToPath as yt}from"node:url";import{dirname as bt}from"node:path";import{readFile as vt}from"node:fs/promises";import be from"node:module";import _ from"node:path";var ve,Ct,V,T,Ce,we,W=l(()=>{"use strict";ve=yt(import.meta.url),Ct=bt(ve),V=async i=>{try{let e=await vt(i);return JSON.parse(e)}catch(e){console.error(e)}},T=be.createRequire(import.meta.url),Ce=(i,e)=>{let t=T;return e&&(t=be.createRequire(e)),t.resolve(i)},we=_.resolve(Ct,ve).replace(`${_.sep}dist${_.sep}index.js`,"")});import k from"@rspack/core";import xe from"fs";import{ModuleFederationPlugin as wt}from"@module-federation/enhanced/rspack";var X,Se,Ee=l(()=>{"use strict";X=class{store;async setup(e){this.store=e;let t=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare(),this.minify()];await this.store.empConfig.lifeCycle.beforePlugin(),await Promise.all(t),await this.store.empConfig.lifeCycle.afterPlugin()}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:e}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(e,[{analyzerPort:this.store.empConfig.server.port,defaultSizes:"gzip",analyzerHost:this.store.getLanIp()||"127.0.0.1"}])}async define(){this.store.chain.plugin("definePlugin").use(k.DefinePlugin,[this.store.empConfig.define])}async copy(){let e=this.store.resolve("public");xe.existsSync(e)&&xe.readdirSync(e).length>0&&this.store.chain.plugin("copyRspackPlugin").use(k.CopyRspackPlugin,[{patterns:[{from:e,to:this.store.resolve("dist")}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(k.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){let{isEmpshare:e}=this.store.empConfig.empShareLib;if(!e)return;let t=wt;this.store.chain.plugin("empShare").use(t,[this.store.empConfig.empShareLib.pluginConfig])}minify(){this.store.chain.optimization.minimize(this.store.mode==="production"),this.store.chain.optimization.minimizer("minJs").use(k.SwcJsMinimizerRspackPlugin,[this.store.empConfig.build.minOptions]),this.store.chain.optimization.minimizer("minCss").use(k.SwcCssMinimizerRspackPlugin,[{}])}},Se=new X});import xt from"chalk";import St from"fs-extra";import{ip as Et}from"address";import{gateway4sync as Ot}from"default-gateway";function Pe(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function h(i,...e){for(let t of e)for(let s in t){let r=t[s],o=i[s];if(Object(r)==r&&Object(o)===o){i[s]=h(o,r);continue}i[s]=t[s]}return i}var j,Oe,D,ke,$e,y=l(()=>{"use strict";j=()=>{let{int:i}=Ot();return Et(i||"")||"127.0.0.1"},Oe=i=>{try{let{version:e}=St.readJSONSync(i);return e}catch{return}};D=(i="",e="")=>{let t=i.replace("^","").split("."),s=e.replace("^","").split("."),r=Math.max(t.length,s.length),o=0;for(let p=0;p<r;p++){let m=t.length>p?t[p]:0,g=isNaN(Number(m))?m.charCodeAt():Number(m),O=s.length>p?s[p]:0,c=isNaN(Number(O))?O.charCodeAt():Number(O);if(g<c){o=-1;break}else if(g>c){o=1;break}}return o},ke=i=>{i=i/1e3;let e=s=>xt.bold(s);if(i<1)return`${i*1e3} ms`;if(i<10){let s=i>=.01?2:3;return`${e(i.toFixed(s))} s`}if(i<60)return`${e(i.toFixed(1))} s`;let t=i/60;return`${e(t.toFixed(2))} m`},$e=i=>`data:text/javascript,${i}`});import Te from"node:path";var q,je,De=l(()=>{"use strict";W();y();q=class{store;swcJsOptions={};swcTsOptions={};coreJs={version:"3",alias:"",path:""};async setup(e){this.store=e;let t=[this.files(),this.scripts(),this.rspackGenerator(),this.rspackParser()];await Promise.all(t)}rspackGenerator(){let e=this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]";this.store.chain.merge({module:{generator:{css:{localIdentName:e},"css/auto":{localIdentName:e},"css/module":{localIdentName:e}}}})}rspackParser(){this.store.chain.merge({module:{parser:{css:{namedExports:!1},"css/auto":{namedExports:!1},"css/module":{namedExports:!1}}}})}get isPolyfill(){return this.store.empConfig.build.polyfill}swcParser(e){switch(e){case"js":return{syntax:"ecmascript",jsx:!0,decorators:!0,decoratorsBeforeExport:!1};case"ts":return{syntax:"typescript",decorators:!0,tsx:!0,dynamicImport:!0}}}swcJsc(e){let{target:t,externalHelpers:s}=this.store.empConfig.build;return{parser:this.swcParser(e),transform:{useDefineForClassFields:this.store.empConfig?.build?.swcConfig?.transform?.useDefineForClassFields??!0},target:t,externalHelpers:s,preserveAllComments:!0}}get swcCoreVersion(){let[e,t]=this.coreJs.version.split(".");return`${e}.${t}`}swcOptions(e){let t={jsc:h(this.swcJsc(e),{...this.store.empConfig.build.swcConfig}),isModule:"unknown"};return this.isPolyfill&&(delete t.jsc.target,t.env={coreJs:this.swcCoreVersion,targets:this.store.empConfig.build.browserslist},this.store.empConfig.isESM||(t.env.mode=this.store.empConfig.build.polyfill),this.store.empConfig.build.polyfill==="usage"&&(t.env.shippedProposals=!0,t.env.include=["es.object.values","es.array.flat"])),t}swcInitOptions(){let{externalHelpers:e}=this.store.empConfig.build;e&&this.store.chain.resolve.alias.set("@swc/helpers",Te.dirname(T.resolve("@swc/helpers/package.json"))),this.coreJs.path=T.resolve("core-js/package.json");let t=Oe(this.coreJs.path);t&&(this.coreJs.version=t),this.coreJs.alias=Te.dirname(this.coreJs.path),this.store.empConfig.build.polyfill&&(this.store.chain.resolve.alias.set("core-js",this.coreJs.alias),this.store.chain.module.rule("javascript").exclude.add(/core-js/),this.store.chain.module.rule("typescript").exclude.add(/core-js/)),this.swcTsOptions=this.swcOptions("ts"),this.swcJsOptions=this.swcOptions("js")}async scripts(){this.swcInitOptions();let e=!1,t=[];this.store.chain.merge({module:{parser:{javascript:{exportsPresence:"error",importExportsPresence:"error"}},rule:{mjs:{test:/\.m?js/,resolve:{fullySpecified:!1}},typescript:{test:/\.(ts|tsx)$/,exclude:t,sideEffects:e,use:{swc:{loader:"builtin:swc-loader",options:this.swcTsOptions}}},javascript:{test:/\.(js|jsx)$/,exclude:t,sideEffects:e,use:{swc:{loader:"builtin:swc-loader",options:this.swcJsOptions}}}}}})}async files(){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"}}}})}},je=new q});var Q,Le,Fe=l(()=>{"use strict";Q=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({node:{global:!0},experiments:{rspackFuture:{newTreeshaking:this.store.empConfig.debug.newTreeshaking},outputModule:this.store.empConfig.isESM,topLevelAwait:!0},target:this.store.empConfig.target,infrastructureLogging:this.store.empConfig.debug.infrastructureLogging,context:this.store.root,mode:this.store.mode,cache:this.store.empConfig.debug.rspackCache,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{},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(){let e={moduleIds:this.store.empConfig.build.moduleIds,chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify,splitChunks:{chunks:"async",cacheGroups:{}}};this.store.empConfig.build.polyfill&&(e.splitChunks.cacheGroups={}),this.store.chain.merge({optimization:e})}},Le=new Q});import Ae from"html-webpack-plugin";var Me,L,Re,F,Pt,M,Y=l(()=>{"use strict";y();u();Me="HtmlImportMapPlugin",L=class{importMap;chunk;constructor(e,t){this.importMap=e,this.chunk=t}apply(e){e.hooks.compilation.tap(Me,t=>{Ae.getHooks(t).alterAssetTagGroups.tapAsync(Me,(s,r)=>{if(!s.plugin.userOptions.chunks?.includes(this.chunk))return r(null,s);s.headTags.push({tagName:"script",attributes:{type:"importmap"},innerHTML:`${JSON.stringify(this.importMap,null,2)}`,voidTag:!1,meta:{plugin:void 0}}),r(null,s)})})}},Re="HtmlEmpShareLibPlugin",F=class{chunk;files;constructor(e,t){this.files=h({js:[],css:[]},e),this.chunk=t}apply(e){e.hooks.compilation.tap(Re,t=>{let s=this.files;Ae.getHooks(t).alterAssetTagGroups.tapAsync(Re,(r,o)=>{if(!r.plugin.userOptions.chunks?.includes(this.chunk))return o(null,r);s.js.map(p=>{r.headTags.push({tagName:"script",attributes:{src:p},voidTag:!1,meta:{plugin:void 0}})}),s.css.map(p=>{r.headTags.push({tagName:"link",attributes:{rel:"stylesheet",href:p},voidTag:!1,meta:{plugin:void 0}})}),o(null,r)})})}},Pt=()=>{let i=[`import 'core-js/${n.empConfig.build.coreJsFeatures}'`].join(`
2
- `);return $e(i)},M=class{constructor(){}apply(e){let{webpack:t}=e;new t.EntryPlugin(e.context,Pt(),{name:void 0}).apply(e)}}});import kt from"html-webpack-plugin";import $t from"fast-glob";import x from"node:path";var Z,Be,ze=l(()=>{"use strict";y();Y();Z=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.tags=e.tags||{},e}setChunk(e){return e.replace(x.extname(e),"").replace(`${this.store.empConfig.appSrc}${x.sep}`,"")}setTemplate(e){return e?this.store.resolve(e):this.store.empResolve(x.join("template","index.html"))}setFavicion(e){return e?this.store.resolve(e):this.store.empResolve(x.join("template","favicon.ico"))}setEntryItem(e,t,s){s=s||this.store.resolve(x.join(this.store.empConfig.appSrc,e));let r=this.setChunk(e),o=[s];this.entriesConfig[r]={entry:{[r]:o},html:this.setHtmlConfig(t,[r])}}setRspackHtmlPlugin(e,t){this.store.chain.plugin(`html-plugin-${t}`).use(kt,[e]),this.store.empConfig.empShareLib&&(e.files=h(e.files,this.store.empConfig.empShareLib.externalAssets)),this.store.chain.plugin(`html-plugin-empShare-${t}`).use(F,[e.files,t]),this.store.empConfig.empShareLib.useImportMap&&this.store.chain.plugin(`html-plugin-import-map-${t}`).use(L,[this.store.empConfig.empShareLib.importMap,t])}setRspackEntry(e){this.store.merge({entry:e})}async init(){let e=x.join(this.store.appSrc,this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}").replace(/\\/g,"/"),t=await $t([e]);if(t[0]){let s=x.join(this.store.empConfig.appSrc,Object.keys(this.store.empConfig.entries).length>0&&this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index");this.setEntryItem(s,this.store.empConfig.html,t[0])}if(Object.keys(this.store.empConfig.entries).length>0)for(let[s,r]of Object.entries(this.store.empConfig.entries))this.setEntryItem(s,{...this.store.empConfig.html,...r})}toConfig(){for(let[e,t]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(t.html,e),this.setRspackEntry(t.entry)}},Be=new Z});var K,Ge,Ie=l(()=>{"use strict";K=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:{sassLoader:e},type:"css/auto"}}}})}async less(){let e={loader:this.store.importResolve("less-loader"),options:{lessOptions:{javascriptEnabled:!0}}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:{lessLoader:e},type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:{},type:"css/auto"}}}})}},Ge=new K});var ee,He,Ue=l(()=>{"use strict";Ee();De();Fe();ze();Ie();ee=class{store;async setup(e){this.store=e;let t=[Le.setup(this.store),je.setup(this.store),Se.setup(this.store),Be.setup(this.store),Ge.setup(this.store)];await Promise.all(t),await this.store.empConfig.plugins(),await this.store.empConfig.chain()}},He=new ee});import f from"chalk";var te,a,b=l(()=>{"use strict";te=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(`${f.white.bgBlue(this.pname)}${f.blue.bgWhite(` ${e} `)}
3
- `)};cyan=e=>{console.log(`${f.white.bgCyan(this.pname)}${f.cyan.bgWhite(` ${e} `)}
4
- `)};magenta=e=>{console.log(`${f.white.bgMagenta(this.pname)}${f.magenta.bgWhite(` ${e} `)}
5
- `)};green=e=>{console.log(`${f.white.bgGreen(this.pname)}${f.green.bgWhite(` ${e} `)}
6
- `)};yellow=e=>{console.log(`${f.white.bgYellow(this.pname)}${f.yellow.bgWhite(` ${e} `)}
7
- `)};red=e=>{console.log(`${f.white.bgRed(this.pname)}${f.red.bgWhite(` ${e} `)}
8
- `)};sysError=e=>{console.log(`${f.white.bgRed(" System Error Tips ")}${f.red.bgWhite(` ${e} `)}
9
- `)};link=e=>f.hex("#3498db")(e);title=e=>{console.log(`${f.greenBright.bold(`${this.pname}`)} ${f.bgGreenBright(` ${e} `)}
10
- `)}},a=new te});var R,Ne=l(()=>{"use strict";u();R=class{externals={};externalAssets={js:[],css:[]};exp=/^([0-9a-zA-Z_\s]+)@(.*)/;config;importMap={imports:{}};version;isEmpshare=!1;async setup(){this.config=n.empConfig.empShare,this.version=n.empConfig.empShare.mfVersion,this.isEmpshare=!!n.empConfig.empShare.name,this.config.shareLib&&this.setShareLib(),this.prepareEsm()}get useImportMap(){return this.config.useImportMap&&n.empConfig.isESM}get pluginConfig(){let e={...this.config};return delete e.mfVersion,delete e.shareLib,delete e.useImportMap,{manifest:!1,dts:!1,dev:!1,...e}}prepareEsm(){if(n.empConfig.isESM){this.config.library={type:"module"};let e=this.config.remotes||{};for(let[t,s]of Object.entries(e))if(typeof s=="string"){let r=s.match(this.exp)||[];r.length>0&&(e[t]=r[2])}this.config.remotes=e}}async setShareLib(){let e=this.config,t=[];if(typeof e.shareLib=="object")for(let[s,r]of Object.entries(e.shareLib)){let o={};if(o.module=s,typeof r=="string"){let p=r.match(this.exp)||[];p.length>0?(o.global=p[1],o.entry=p[2],o.type="js",t.push(o),o={}):(o.global="",o.entry=r,o.type="js",t.push(o),o={})}else Array.isArray(r)?r.map(p=>{if(!p)return;if(p.split("?")[0].endsWith(".css"))o.entry=p,o.type="css";else{let g=p.match(this.exp)||[];g.length>0?(o.global=g[1],o.entry=g[2],o.type="js"):(o.global="",o.entry=p,o.type="js")}t.push(o),o={}}):typeof r=="object"&&r.entry&&(o.entry=r.entry,o.global=r.global,o.type=r.type,t.push(o),o={})}await Promise.all([this.setExternalAssets(t)])}async setExternalAssets(e=[]){if(e.length>0){let t=[];t=t.concat(e),t.map(s=>{s.type=s.type||"js",s.type==="js"&&s.module?(s.global?this.externals[s.module]=s.global:n.empConfig.isESM&&(this.useImportMap?(this.externals[s.module]=s.module,this.importMap.imports[s.module]=s.entry):this.externals[s.module]=s.entry),s.entry&&!n.empConfig.isESM&&this.externalAssets.js.push(s.entry)):s.type==="css"&&s.entry&&this.externalAssets.css.push(s.entry)})}}}});import Je from"url";import _e from"chalk";var se,E,ie=l(()=>{"use strict";y();se=class{imf={protocol:"",port:8e3,pathname:"/"};host="0.0.0.0";urls={lanUrlForConfig:"",lanUrlForTerminal:_e.gray("unavailable"),localUrlForTerminal:"",localUrlForBrowser:""};setup(e){e.host&&(this.host=e.host),e.protocol&&(this.imf.protocol=e.protocol),e.pathname&&(this.imf.pathname=e.pathname),e.port&&(this.imf.port=e.port),this.setupUrls()}setupUrls(){let{host:e}=this,t=e==="0.0.0.0"||e==="::",s;if(t){s="localhost";try{this.urls.lanUrlForConfig=this.getLanIp(),this.urls.lanUrlForConfig&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(this.urls.lanUrlForConfig)?this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig):this.urls.lanUrlForConfig="")}catch{}}else s=e,this.urls.lanUrlForConfig=e,this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig);this.urls.localUrlForTerminal=this.prettyPrintUrl(s),this.urls.localUrlForBrowser=this.formatUrl(s)}getLanIp=j;formatUrl(e){let{protocol:t,port:s,pathname:r}=this.imf;return Je.format({protocol:t,hostname:e,port:s,pathname:r})}prettyPrintUrl(e){let{protocol:t,port:s,pathname:r}=this.imf;return Je.format({protocol:t,hostname:e,port:_e.bold(s),pathname:r})}},E=new se});var re,A,oe=l(()=>{"use strict";ie();y();u();re=class{isADB=!1;isHttps=!1;get isHttpBase(){let e=n.empOptions.base||"";return e.indexOf("http://")>-1||e.indexOf("https://")>-1}setup(){if(this.isADB=!!n.empOptions.autoDevBase&&n.mode==="development"&&!this.isHttpBase,!this.isADB)return;let{server:e,https:t}=n.empOptions.server||{};this.isHttps=e==="https"||typeof e=="object"&&e.type==="https"||t===!0;let s=E.getLanIp(),r=this.isHttps?"https":"http",o=n.empOptions.server?.port||8e3;n.empOptions.base=`${r}://${s}:${o}/`,n.empOptions.server=h({port:o,client:{webSocketURL:`${this.isHttps?"wss":"ws"}://${s}:${o}/ws`}},n.empOptions.server)}},A=new re});var B,Ve=l(()=>{"use strict";oe();u();Y();B=class{op={};constructor(e={}){this.op=e}async afterGetEmpOptions(){A.setup(),this.op.afterGetEmpOptions&&await this.op.afterGetEmpOptions()}async beforePlugin(){n.empConfig.build.polyfill==="entry"&&n.chain.plugin("empPolyfill").use(M),this.op.beforePlugin&&await this.op.beforePlugin()}async afterPlugin(){this.op.afterPlugin&&await this.op.afterPlugin()}async beforeBuild(){this.op.beforeBuild&&await this.op.beforeBuild()}async afterBulid(){this.op.afterBulid&&await this.op.afterBulid()}async beforeDevServe(){console.log(this.op),this.op.beforeDevServe&&await this.op.beforeDevServe()}async afterDevServe(){this.op.afterDevServe&&await this.op.afterDevServe()}async beforeServe(){this.op.beforeServe&&await this.op.beforeServe()}async afterServe(){this.op.afterServe&&await this.op.afterServe()}}});import Tt from"node:fs";var ne,We,Xe=l(()=>{"use strict";y();Ne();Ve();ne=class{store;appSrc="src";appEntry="";base="";target=[];assign(e,t){return t=t||{},h(e,t)}empShareLib=new R;isESM=!1;async autoDevSet(){this.store.mode==="development"&&this.store.empOptions.autoDevBase}checkIsESM(e){return["es3","es5"].indexOf(e)===-1}lifeCycle;async setup(e){this.store=e,await this.syncEmpOptions(),this.lifeCycle=new B(this.store.empOptions.lifeCycle),await this.lifeCycle.afterGetEmpOptions(),this.isESM=this.checkIsESM(this.build.target),this.store.empOptions.target?(this.target=this.store.empOptions.target,Array.isArray(this.target)&&!this.target.includes(this.build.target)&&this.target.push(this.build.target)):this.target=["web",this.build.target];let{appSrc:t,base:s,appEntry:r}=this.store.empOptions;t&&(this.appSrc=t),s&&(this.base=s),r&&(this.appEntry=r),this.store.empConfig.empShare&&await this.empShareLib.setup()}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:!0,showRsconfig:!1,showPerformance:!1,rspackCache:!0,infrastructureLogging:{appendOnly:!0,level:"warn"},newTreeshaking:this.store.empConfig.isESM},this.store.empOptions.debug)}get build(){let e=this.store.empOptions.build?.staticDir?`${this.store.empOptions.build?.staticDir}/`:"";return this.assign({outDir:"dist",staticDir:e,assetsDir:"assets",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",moduleIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev,minOptions:{},target:"es5",polyfill:!1,coreJsFeatures:"stable",externalHelpers:!1,browserslist:this.store.browserslistOptions.default,swcConfig:{}},{...this.store.empOptions.build,staticDir:e})}get html(){let e=this.store.empOptions.html?.template?{}:{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"},keywords:{keywords:""},description:{description:""}};return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,scriptLoading:this.isESM?"module":"defer",meta:e,files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get server(){let e={host:"0.0.0.0",port:8e3,open:process.platform==="darwin",hot:!0,watchFiles:["src/**/*.html"],static:[{directory:this.store.publicDir,watch:this.store.isDev}],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"}};return this.assign(e,this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js",shared:{},mfVersion:1.5},this.store.empOptions.empShare)}get css(){return this.assign({postcss:[]},this.store.empOptions.css)}get output(){let e=(this.store.isDev,".[contenthash:8]"),t=this.store.isDev?"":".[contenthash:8]",{assetsDir:s,staticDir:r}=this.store.empConfig.build,o={publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`${r}js/[name]${e}.js`,cssFilename:`${r}css/[name]${t}.css`,cssChunkFilename:`${r}css/[name]${t}.css`,assetModuleFilename:`${r}${s}/[name]${e}[ext][query]`,path:this.store.outDir,clean:!0};return this.assign(o,this.store.empOptions.output)}get define(){let e={mode:this.store.mode,env:this.store.cliOptions.env};return this.store.empOptions.define&&(e={...e,...this.store.empOptions.define}),this.setDefine(e)}setDefine(e){let t=this.store.empOptions.defineFix?this.store.empOptions.defineFix:this.isESM?"esm":"cjs",s={};return Object.keys(e).map(r=>{(t==="all"||t==="esm")&&(s[`import.meta.env.${r}`]=JSON.stringify(e[r])),(t==="all"||t==="cjs")&&(s[`process.env.${r}`]=JSON.stringify(e[r])),s[`${r}`]=JSON.stringify(e[r])}),s}get externals(){return this.assign(this.empShareLib.externals,this.store.empOptions.externals)}get resolve(){return h({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(!Tt.existsSync(e))return;let{default:t}=await import(this.store.importFileUrl(e));typeof t=="function"?this.store.empOptions=await t(this.store):this.store.empOptions=t||{}}get moduleTransformRule(){let{moduleTransform:e}=this.store.empOptions,t=this.assign({defaultExclude:!1},e),s={and:[],not:[]};return t.defaultExclude===!0&&s.and.push(/(node_modules|bower_components)/),t?.exclude&&(s.and=s.and.concat(t.exclude)),e?.include&&(s.not=t.include),s}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}},We=new ne});import v from"node:path";import jt from"node:fs/promises";import Dt from"webpack-chain";import{pathToFileURL as Lt}from"node:url";import Ft from"node:util";var pe,n,u=l(()=>{"use strict";W();Ue();b();Xe();y();pe=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=we;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;cliOptions;chain;rsConfig;empOptions={};empConfig;vCompare=D;deepAssign=h;getLanIp=j;async setup(e,t){await this.initVars(e,t),this.empConfig=We,await this.empConfig.setup(this),this.initPaths(),this.chain=new Dt,await He.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 V(this.empResolve("package.json")),r=await V(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...r}}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),a.setup({pname:`EMP\u26A1${this.empPkg.version}${this.cliMode==="dev"?".DEV":""}`,logLevel:e})}merge(e){this.chain.merge(e)}importResolve(e,t){return Ce(e,t)}importFileUrl(e){return Lt(e).toString()}toConfig(){this.rsConfig=this.chain.toConfig()}logConfig(){if(this.empConfig.debug.showRsconfig)if(typeof this.empConfig.debug.showRsconfig=="string"){let e=v.join(this.root,this.empConfig.debug.showRsconfig);jt.writeFile(e,JSON.stringify(this.rsConfig,null,2))}else{let e={colors:!0,depth:null},t=typeof this.empConfig.debug.showRsconfig=="object"?h(e,this.empConfig.debug.showRsconfig):e;console.log(a.link("[Compile Config]")),console.log(Ft.inspect(this.rsConfig,t))}}get browserslistOptions(){return{default:["chrome >= 87","edge >= 88","firefox >= 78","safari >= 14"],h5:["iOS >= 9","Android >= 4.4","last 2 versions","> 0.2%","not dead"],node:["node >= 20"]}}},n=new pe});import{exec as Mt}from"node:child_process";import{promisify as Rt}from"node:util";var Qe,qe,At,Bt,Ye,Ze=l(()=>{"use strict";b();u();Qe=Rt(Mt),qe=["Google Chrome Canary","Google Chrome Dev","Google Chrome Beta","Google Chrome","Microsoft Edge","Brave Browser","Vivaldi","Chromium"],At=async()=>{let i=process.env.BROWSER;if(!i||!qe.includes(i)){let{stdout:e}=await Qe("ps cax");i=qe.find(t=>e.includes(t))}return i},Bt=async i=>{if(process.platform==="darwin")try{let t=await At();if(t){let s=`osascript openChrome.applescript "${encodeURI(i)}" "${t}"`;return await Qe(s,{cwd:n.resource.dir}),!0}}catch(t){a.debug(t)}try{let{default:t}=await import("open");return await t(i),!0}catch(t){return a.error("Failed to open start URL."),a.error(t),!1}},Ye=Bt});import zt from"net";import Gt from"os";async function et(i,e="localhost"){if(i!==It&&(i<Ke||i>ae))throw new Error(`Port number must lie between ${Ke} and ${ae}`);let t=i,s=Ht(),r;e&&!s.has(e)?r=new Set([e]):r=s;let o=new Set(["EADDRINUSE","EACCES"]);for(;t<=ae;)try{return await Nt(t,r)}catch(p){if(!o.has(p.code))throw p;t+=1}throw new Error("No available ports found")}var Ke,ae,It,Ht,Ut,Nt,tt=l(()=>{"use strict";Ke=1024,ae=65535,It=443,Ht=()=>{let i=Gt.networkInterfaces(),e=new Set([void 0,"0.0.0.0"]);for(let t of Object.values(i))if(t)for(let s of t)e.add(s.address);return e},Ut=(i,e)=>new Promise((t,s)=>{let r=zt.createServer();r.unref(),r.on("error",s),r.listen(i,e,()=>{let{port:o}=r.address();r.close(()=>{t(o)})})}),Nt=async(i,e)=>{let t=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of e)try{await Ut(i,s)}catch(r){if(!t.has(r.code))throw r}return i}});import st from"node:fs/promises";import z from"chalk";var C,G=l(()=>{"use strict";b();u();y();ie();Ze();tt();oe();C=class{sf={protocol:"http",host:"0.0.0.0",port:8e3,publicPath:"",publicHasHttp:!1,isOpenBrower:!1,url:"",urls:{localUrlForBrowser:"",localUrlForTerminal:"",lanUrlForTerminal:"",lanUrlForConfig:""}};async adaptServer(){this.sf.publicPath=n.rsConfig.output?.publicPath==="auto"?"/":n.rsConfig.output?.publicPath||"/",this.sf.isOpenBrower=!!n.empConfig.server.open,this.sf.protocol=this.isHttps?"https":"http",this.sf.host=n.empConfig.server.host?n.empConfig.server.host:this.sf.host,this.sf.port=n.empConfig.server.port,await this.serverPort(),E.setup(this.sf),this.sf.publicPath&&(this.sf.publicPath.indexOf("http://")>-1||this.sf.publicPath.indexOf("https://")>-1)?(this.sf.url=this.sf.publicPath,this.sf.publicHasHttp=!0,this.sf.urls.localUrlForTerminal=E.prettyPrintUrl("localhost")):(this.sf.urls=E.urls,this.sf.url=this.sf.urls.localUrlForBrowser)}startOpen(){let{urls:e}=this.sf;this.sf.publicHasHttp?(a.info(`${z.greenBright("\u279C")} Local: ${a.link(e.localUrlForTerminal)}`),a.info(`${z.greenBright("\u279C")} Network: ${a.link(this.sf.publicPath)}`)):(a.info(`${z.greenBright("\u279C")} Local: ${a.link(e.localUrlForTerminal)}`),a.info(`${z.greenBright("\u279C")} Network: ${a.link(e.lanUrlForTerminal)}
11
- `)),this.sf.isOpenBrower&&Ye(this.sf.url)}async setup(e,t){await n.setup(e,t),n.empConfig.debug.clearLog&&Pe(),a.title(`${e}`),await this.adaptServer(),await this.run(),this.afterRun()}async run(){}afterRun(){process.on("SIGINT",function(){process.exit()})}get isHttps(){let{server:e,https:t}=n.empConfig.server||{};return e==="https"||typeof e=="object"&&e.type==="https"||t===!0}getcert(){return Promise.all([st.readFile(n.resource.key),st.readFile(n.resource.cert)])}async serverPort(){if(A.isADB)return;let{port:e,host:t}=this.sf,s=await et(e,t);s!==e&&(this.sf.port=s,n.rsConfig.devServer?.port&&(n.rsConfig.devServer.port=s))}}});import d from"chalk";import w from"node:path";import{gzipSizeSync as Jt}from"gzip-size";import _t from"node:fs";function Zt(i,e){let t=[i,e],s=["File","Size","Gzipped"].reduce((r,o,p)=>{let m=t[p],g=o;return m&&(g=o.length<m?o+" ".repeat(m-o.length):o),`${r+g} `}," ");console.log(d.bold.blue(s))}async function it(i){let e=i.toJson({all:!1,assets:!0,timings:!0});$(e.time);let s=e.assets.filter(c=>qt(c.name)).map(Yt);s.sort((c,P)=>c.size-P.size);let r=Math.max(...s.map(c=>c.sizeLabel.length)),o=Math.max(...s.map(c=>(c.folder+w.sep+c.name).length));Zt(o,r);let p=0,m=0;s.forEach(c=>{let{sizeLabel:P}=c,{name:ft,folder:ut,gzipSizeLabel:gt}=c,ge=(ut+w.sep+ft).length,de=P.length;if(p+=c.size,m+=c.gzippedSize,de<r){let N=" ".repeat(r-de);P+=N}let ye=d.gray(c.folder+w.sep)+Kt(c.name);if(ge<o){let N=" ".repeat(o-ge);ye+=N}a.info(` ${ye} ${d.gray(P)} ${gt}`)});let g=`${d.bold.blue("Total size:")} ${I(p)}`,O=`${d.bold.blue("Gzipped size:")} ${I(m)}`;a.info(`
12
- ${g}
13
- ${O}
14
- `)}function $(i=0){a.info(`${d.greenBright("\u2713")} Ready in ${ke(Number(i))}`)}var Vt,Wt,Xt,qt,Qt,Yt,I,Kt,H=l(()=>{"use strict";u();b();y();Vt=/\.html$/,Wt=/\.(?:js|mjs|cjs|jsx)$/,Xt=/\.css$/,qt=i=>!/\.map$/.test(i)&&!/\.LICENSE\.txt$/.test(i),Qt=i=>i>300*1e3?d.red:i>100*1e3?d.yellow:d.white,Yt=i=>{let e=i.name.split("?")[0],t=I(i.size),s=w.basename(e),r=w.join(w.basename(n.empConfig.build.outDir),w.dirname(e)),o=_t.readFileSync(w.join(n.empConfig.build.outDir,e)),p=o.length,m=Jt(o),g=Qt(m)(I(m));return{size:p,folder:r,name:s,gzippedSize:m,sizeLabel:t,gzipSizeLabel:g}};I=i=>{let e=i/1e3;return`${e.toFixed(e<1?2:1)} kB`},Kt=i=>Wt.test(i)?d.yellowBright(i):Xt.test(i)?d.greenBright(i):Vt.test(i)?d.blueBright(i):d.magenta(i)});var rt={};J(rt,{default:()=>ss});import{rspack as es}from"@rspack/core";import{RspackDevServer as ts}from"@rspack/dev-server";var le,ss,ot=l(()=>{"use strict";u();G();b();y();H();le=class extends C{get rspackDevConfig(){return h(n.rsConfig,{stats:{all:!1,colors:!0,assets:!1,chunks:!1,entrypoints:!1,timings:!1,version:!1,errors:!0,warnings:!0},devServer:{open:!1,setupExitSignals:!0}})}async devServerConfig(){let e=Object.assign({},n.rsConfig.devServer);if(this.isHttps&&(e.https===!0&&delete e.https,!e.server)){let[t,s]=await this.getcert();e.server={type:"https",options:{key:t,cert:s}}}return e}async run(){let e=es(this.rspackDevConfig);if(!n.rsConfig.devServer){a.error("devServer is not defined in config");return}let t=await this.devServerConfig(),s=new ts(t,e);this.startOpen(),n.empConfig.lifeCycle.beforeDevServe&&await n.empConfig.lifeCycle.beforeDevServe(),await s.start();let r=o=>{let p=o?.toJson({all:!1,colors:!1,assets:!1,chunks:!1,timings:!0});$(p.time)};n.empConfig.debug.showPerformance&&e.hooks.afterDone.tap("done",r),s.middleware?.waitUntilValid(o=>{n.empConfig.debug.showPerformance||r(o),n.empConfig.lifeCycle.afterDevServe&&n.empConfig.lifeCycle.afterDevServe()})}},ss=new le});var nt={};J(nt,{default:()=>rs});import{rspack as is}from"@rspack/core";var ce,rs,pt=l(()=>{"use strict";b();u();G();H();ce=class extends C{async run(){n.empConfig.lifeCycle.beforeBuild&&await n.empConfig.lifeCycle.beforeBuild(),is(n.rsConfig,async(e,t)=>{if(e!==null){a.error(e.stack||e),e.message&&a.error(e.message);return}if(!t){a.red("Stats is Undefined.");return}t.hasErrors()&&(a.error(t.toString({colors:!0,children:!0})),a.red("Failed to compile."),process.exit(1)),t.hasWarnings()&&(a.yellow("Compiled with warnings."),a.warn(t.toString({colors:!0,children:!0}))),await it(t),n.empConfig.lifeCycle.afterBulid&&await n.empConfig.lifeCycle.afterBulid()})}},rs=new ce});import os from"express";import ns from"cors";import ps from"compression";import as from"https";var U,at=l(()=>{"use strict";G();U=class extends C{app;async init(){let e=os();e.use(ps()),e.use(ns()),this.app=e}async server(){if(this.isHttps){let[e,t]=await this.getcert();as.createServer(typeof this.isHttps!="boolean"?this.isHttps:{key:e,cert:t},this.app).listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}else this.app.listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}async onReady(){}async middleware(){}async start(){await this.init(),await this.middleware(),await this.server()}}});var lt={};J(lt,{default:()=>fs});import ls from"express";import cs from"path";import ms from"node:fs/promises";import hs from"node:fs";var me,fs,ct=l(()=>{"use strict";at();u();b();H();me=class extends U{timing=0;async run(){if(this.timing=Date.now(),!hs.existsSync(n.outDir))return a.sysError(`emp serve must be executed after emp build,${n.outDir} not exist!`);n.empConfig.lifeCycle.beforeServe&&await n.empConfig.lifeCycle.beforeServe(),this.start()}async middleware(){let e=n.resolve(n.rsConfig.output?.path);this.app.use(ls.static(e));let t=await ms.readFile(cs.join(e,"index.html"),"utf8");this.app.get("*",(s,r)=>r.send(t))}async onReady(){$(Date.now()-this.timing),n.empConfig.lifeCycle.afterServe&&await n.empConfig.lifeCycle.afterServe()}},fs=new me});u();u();y();b();import{program as S}from"commander";import he,{exit as us}from"node:process";function mt(){let i="20.0.0";D(i,he.versions.node)===1&&(a.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${he.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${i}`),us(0)),S.version(n.empPkg.version,"-v, --version").usage("<command> [options]"),S.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").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(e,t)=>{let[s,r]=e.split("=");return t[s]=r,t},{}).action(async e=>{let{default:t}=await Promise.resolve().then(()=>(ot(),rt));await t.setup("dev",e)}),S.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").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(e,t)=>{let[s,r]=e.split("=");return t[s]=r,t},{}).action(async e=>{let{default:t}=await Promise.resolve().then(()=>(pt(),nt));await t.setup("build",e)}),S.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(()=>(ct(),lt));await t.setup("serve",e)}),S.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=>{}),S.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=>{}),S.parse(he.argv)}u();import gs from"fast-glob";import ht from"node:fs/promises";import fe from"node:path";var ds=/(?:(?:import|export)\s?(?:type)?\s?(?:(?:\{[^;\n]+\})|(?:[^;\n]+))\s?from\s?['"][^;\n]+['"])|(?:import\(['"][^;\n]+?['"]\))/g,ys=/(?:import|export)\s?(?:type)?\s?\{?.+\}?\s?from\s?['"](.+)['"]/,bs=/import\(['"]([^;\n]+?)['"]\)/,ue=class{list=[];outDir=n.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 gs([`${n.empConfig.build.outDir}/**/*.d.ts`]);let e=[];this.list.map(s=>{s=n.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 ht.readFile(e,{encoding:"utf-8"});return{src:e,code:t}}replaceAliasPath({src:e,code:t}){t=t.replace(ds,r=>{let o=r.match(ys);if(o||(o=r.match(bs)),o&&o[1]){let p=o[1];if(!p.startsWith("."))return r;let m=fe.resolve(fe.dirname(e),p).replace(this.outDir,this.aliasName);return r.replace(o[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
1
+ var Ct=Object.defineProperty;var l=(i,e)=>()=>(i&&(e=i(i=0)),e);var $=(i,e)=>{for(var t in e)Ct(i,t,{get:e[t],enumerable:!0})};import h from"chalk";var X,p,v=l(()=>{"use strict";X=class{pname="";brandName="";logLevel="debug";setup({pname:e,logLevel:t}){this.pname=e,this.brandName=` ${this.pname} `,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.brandName)}${h.blue.bgWhite(` ${e} `)}
2
+ `)};cyan=e=>{console.log(`${h.white.bgCyan(this.brandName)}${h.cyan.bgWhite(` ${e} `)}
3
+ `)};magenta=e=>{console.log(`${h.white.bgMagenta(this.brandName)}${h.magenta.bgWhite(` ${e} `)}
4
+ `)};green=e=>{console.log(`${h.white.bgGreen(this.brandName)}${h.green.bgWhite(` ${e} `)}
5
+ `)};yellow=e=>{console.log(`${h.white.bgYellow(this.brandName)}${h.yellow.bgWhite(` ${e} `)}
6
+ `)};red=e=>{console.log(`${h.white.bgRed(this.brandName)}${h.red.bgWhite(` ${e} `)}
7
+ `)};sysError=e=>{console.log(`${h.white.bgRed(" System Error Tips ")}${h.red.bgWhite(` ${e} `)}
8
+ `)};link=e=>h.hex("#3498db")(e);title=e=>{console.log(`${h.greenBright.bold(this.brandName)} ${h.yellowBright.underline(`${e}`)}
9
+ `)}},p=new X});var Z={};$(Z,{clearConsole:()=>Q,deepAssign:()=>m,ensureArray:()=>Pt,getLanIp:()=>M,getPkgVersion:()=>K,importJsVm:()=>Y,jsonFilter:()=>kt,timeFormat:()=>T,vCompare:()=>j});import{ip as xt}from"address";import St from"chalk";import{gateway4sync as Et}from"default-gateway";import Ot from"fs-extra";function Q(){process.stdout.write(process.platform==="win32"?"\x1B[2J\x1B[0f":"\x1B[2J\x1B[3J\x1B[H")}function m(i,...e){for(let t of e)for(let s in t){let r=t[s],o=i[s];if(Object(r)==r&&Object(o)===o){i[s]=m(o,r);continue}i[s]=t[s]}return i}var M,K,Pt,kt,j,T,Y,y=l(()=>{"use strict";M=()=>{let{int:i}=Et();return xt(i||"")||"127.0.0.1"},K=i=>{try{let{version:e}=Ot.readJSONSync(i);return e}catch{return}};Pt=i=>Array.isArray(i)?i:[i],kt=(i={},e=[])=>Object.keys(i).filter(t=>!e.includes(t)).reduce((t,s)=>(t[s]=i[s],t),{}),j=(i="",e="")=>{let t=i.replace("^","").split("."),s=e.replace("^","").split("."),r=Math.max(t.length,s.length),o=0;for(let a=0;a<r;a++){let f=t.length>a?t[a]:0,d=isNaN(Number(f))?f.charCodeAt():Number(f),P=s.length>a?s[a]:0,c=isNaN(Number(P))?P.charCodeAt():Number(P);if(d<c){o=-1;break}else if(d>c){o=1;break}}return o},T=i=>{i=i/1e3;let e=s=>St.bold(s);if(i<1)return`${i*1e3} ms`;if(i<10){let s=i>=.01?2:3;return`${e(i.toFixed(s))} s`}if(i<60)return`${e(i.toFixed(1))} s`;let t=i/60;return`${e(t.toFixed(2))} m`},Y=i=>`data:text/javascript,${i}`});import{readFile as $t}from"node:fs/promises";import Pe from"node:module";import{dirname as Mt}from"node:path";import ee from"node:path";import{fileURLToPath as jt}from"node:url";var ke,Lt,te,S,$e,Me,D=l(()=>{"use strict";ke=jt(import.meta.url),Lt=Mt(ke),te=async i=>{try{let e=await $t(i);return JSON.parse(e)}catch(e){console.error(e)}},S=Pe.createRequire(import.meta.url),$e=(i,e)=>{let t=S;return e&&(t=Pe.createRequire(e)),t.resolve(i)},Me=ee.resolve(Lt,ke).replace(`${ee.sep}dist${ee.sep}index.js`,"")});var R,je=l(()=>{"use strict";u();R=class{externals={};externalAssets={js:[],css:[]};exp=/^([0-9a-zA-Z_\s]+)@(.*)/;config;importMap={imports:{}};isEmpshare=!1;async setup(){this.config=n.empConfig.empShare,this.isEmpshare=!!n.empConfig.empShare.name,n.empConfig.empShare.fastMode&&n.empConfig.empShareFastMode.setup(),this.config.shareLib&&this.setShareLib(),this.prepareEsm()}get useImportMap(){return this.config.useImportMap&&n.empConfig.isESM}get pluginConfig(){let e={...this.config};return delete e.shareLib,delete e.useImportMap,delete e.fastMode,{manifest:!1,dts:!1,...e}}prepareEsm(){if(n.empConfig.isESM){this.config.library={type:"module"};let e=this.config.remotes||{};for(let[t,s]of Object.entries(e))if(typeof s=="string"){let r=s.match(this.exp)||[];r.length>0&&(e[t]=r[2])}this.config.remotes=e}}async setShareLib(){let e=this.config,t=[];if(typeof e.shareLib=="object")for(let[s,r]of Object.entries(e.shareLib)){let o={};if(o.module=s,typeof r=="string"){let a=r.match(this.exp)||[];a.length>0?(o.global=a[1],o.entry=a[2],o.type="js",t.push(o),o={}):(o.global="",o.entry=r,o.type="js",t.push(o),o={})}else Array.isArray(r)?r.map(a=>{if(!a)return;if(a.split("?")[0].endsWith(".css"))o.entry=a,o.type="css";else{let d=a.match(this.exp)||[];d.length>0?(o.global=d[1],o.entry=d[2],o.type="js"):(o.global="",o.entry=a,o.type="js")}t.push(o),o={}}):typeof r=="object"&&r.entry&&(o.entry=r.entry,o.global=r.global,o.type=r.type,t.push(o),o={})}await Promise.all([this.setExternalAssets(t)])}async setExternalAssets(e=[]){if(e.length>0){let t=[];t=t.concat(e),t.map(s=>{s.type=s.type||"js",s.type==="js"&&s.module?(s.global?this.externals[s.module]=s.global:n.empConfig.isESM&&(this.useImportMap?(this.externals[s.module]=s.module,this.importMap.imports[s.module]=s.entry):this.externals[s.module]=s.entry),s.entry&&!n.empConfig.isESM&&this.externalAssets.js.push(s.entry)):s.type==="css"&&s.entry&&this.externalAssets.css.push(s.entry)})}}}});var F,Le=l(()=>{"use strict";u();F=class{fastMode={runtimeHost:"",runtimeLib:"",externals:{},globalVal:"EmpShareLib",framework:"react"};externalMF={"@module-federation/runtime":"MFRuntime","@module-federation/sdk":"MFSDK"};externalReact={react:"React","react-dom":"ReactDOM","react-router-dom":"ReactRouterDOM"};externals={};getRuntimeLib(e){return`${e}/runtime${n.mode==="development"?".development":""}.umd.js`}setup(){this.fastMode=n.deepAssign(this.fastMode,n.empConfig.empShare.fastMode),this.injectLib(),this.setExternals()}injectLib(){let{runtimeHost:e,runtimeLib:t}=this.fastMode;if(e||t){let s=t||this.getRuntimeLib(e);n.empConfig.empShareLib.externalAssets.js.push(s)}}setExternals(){for(let[e,t]of Object.entries(this.externalMF))this.externals[e]=`${this.fastMode.globalVal}.${t}`;if(this.fastMode.framework==="react")for(let[e,t]of Object.entries(this.externalReact))this.externals[e]=`${this.fastMode.globalVal}.${t}`;Object.entries(this.fastMode.externals).length>0&&(this.externals=n.deepAssign(this.externals,this.fastMode.externals)),n.empConfig.empShareLib.externals=n.deepAssign(n.empConfig.empShareLib.externals,this.externals)}}});import Tt from"net";import Dt from"os";async function A(i,e="localhost"){if(i!==Rt&&(i<Te||i>se))throw new Error(`Port number must lie between ${Te} and ${se}`);let t=i,s=Ft(),r;e&&!s.has(e)?r=new Set([e]):r=s;let o=new Set(["EADDRINUSE","EACCES"]);for(;t<=se;)try{return await Bt(t,r)}catch(a){if(!o.has(a.code))throw a;t+=1}throw new Error("No available ports found")}var Te,se,Rt,Ft,At,Bt,ie=l(()=>{"use strict";Te=1024,se=65535,Rt=443,Ft=()=>{let i=Dt.networkInterfaces(),e=new Set([void 0,"0.0.0.0"]);for(let t of Object.values(i))if(t)for(let s of t)e.add(s.address);return e},At=(i,e)=>new Promise((t,s)=>{let r=Tt.createServer();r.unref(),r.on("error",s),r.listen(i,e,()=>{let{port:o}=r.address();r.close(()=>{t(o)})})}),Bt=async(i,e)=>{let t=new Set(["EADDRNOTAVAIL","EINVAL"]);for(let s of e)try{await At(i,s)}catch(r){if(!t.has(r.code))throw r}return i}});import De from"url";import Re from"chalk";var re,O,oe=l(()=>{"use strict";y();re=class{imf={protocol:"",port:8e3,pathname:"/"};host="0.0.0.0";urls={lanUrlForConfig:"",lanUrlForTerminal:Re.gray("unavailable"),localUrlForTerminal:"",localUrlForBrowser:""};setup(e){e.host&&(this.host=e.host),e.protocol&&(this.imf.protocol=e.protocol),e.pathname&&(this.imf.pathname=e.pathname),e.port&&(this.imf.port=e.port),this.setupUrls()}setupUrls(){let{host:e}=this,t=e==="0.0.0.0"||e==="::",s;if(t){s="localhost";try{this.urls.lanUrlForConfig=this.getLanIp(),this.urls.lanUrlForConfig&&(/^10[.]|^172[.](1[6-9]|2[0-9]|3[0-1])[.]|^192[.]168[.]/.test(this.urls.lanUrlForConfig)?this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig):this.urls.lanUrlForConfig="")}catch{}}else s=e,this.urls.lanUrlForConfig=e,this.urls.lanUrlForTerminal=this.prettyPrintUrl(this.urls.lanUrlForConfig);this.urls.localUrlForTerminal=this.prettyPrintUrl(s),this.urls.localUrlForBrowser=this.formatUrl(s)}getLanIp=M;formatUrl(e){let{protocol:t,port:s,pathname:r}=this.imf;return De.format({protocol:t,hostname:e,port:s,pathname:r})}prettyPrintUrl(e){let{protocol:t,port:s,pathname:r}=this.imf;return De.format({protocol:t,hostname:e,port:Re.bold(s),pathname:r})}},O=new re});var ne,B,ae=l(()=>{"use strict";ie();oe();y();u();ne=class{isADB=!1;isHttps=!1;get isHttpBase(){let e=n.empOptions.base||"";return e.indexOf("http://")>-1||e.indexOf("https://")>-1}async setup(){if(this.isADB=!!n.empOptions.autoDevBase&&n.mode==="development"&&!this.isHttpBase,!this.isADB)return;let{server:e,https:t}=n.empOptions.server||{};this.isHttps=e==="https"||typeof e=="object"&&e.type==="https"||t===!0;let s=O.getLanIp(),r=this.isHttps?"https":"http",o=n.empOptions.server?.port||8e3;o=await A(o,s),n.empOptions.base=`${r}://${s}:${o}/`,n.empOptions.server=m({port:o,client:{webSocketURL:`${this.isHttps?"wss":"ws"}://${s}:${o}/ws`}},n.empOptions.server)}},B=new ne});import Be from"html-webpack-plugin";var Fe,z,Ae,I,zt,N,pe=l(()=>{"use strict";y();u();Fe="HtmlImportMapPlugin",z=class{importMap;chunk;constructor(e,t){this.importMap=e,this.chunk=t}apply(e){e.hooks.compilation.tap(Fe,t=>{Be.getHooks(t).alterAssetTagGroups.tapAsync(Fe,(s,r)=>{if(!s.plugin.userOptions.chunks?.includes(this.chunk))return r(null,s);s.headTags.push({tagName:"script",attributes:{type:"importmap"},innerHTML:`${JSON.stringify(this.importMap,null,2)}`,voidTag:!1,meta:{plugin:void 0}}),r(null,s)})})}},Ae="HtmlEmpShareLibPlugin",I=class{chunk;files;constructor(e,t){this.files=m({js:[],css:[]},e),this.chunk=t}apply(e){e.hooks.compilation.tap(Ae,t=>{let s=this.files;Be.getHooks(t).alterAssetTagGroups.tapAsync(Ae,(r,o)=>{if(!r.plugin.userOptions.chunks?.includes(this.chunk))return o(null,r);s.js.map(a=>{r.headTags.push({tagName:"script",attributes:{src:a},voidTag:!1,meta:{plugin:void 0}})}),s.css.map(a=>{r.headTags.push({tagName:"link",attributes:{rel:"stylesheet",href:a},voidTag:!1,meta:{plugin:void 0}})}),o(null,r)})})}},zt=()=>{let i=[`import 'core-js/${n.empConfig.build.coreJsFeatures}'`].join(`
10
+ `);return Y(i)},N=class{constructor(){}apply(e){let{webpack:t}=e;new t.EntryPlugin(e.context,zt(),{name:void 0}).apply(e)}}});var G,ze=l(()=>{"use strict";u();ae();pe();G=class{op={};constructor(e={}){this.op=e}async afterGetEmpOptions(){await B.setup(),this.op.afterGetEmpOptions&&await this.op.afterGetEmpOptions()}async beforePlugin(){n.empConfig.build.polyfill==="entry"&&n.chain.plugin("empPolyfill").use(N),this.op.beforePlugin&&await this.op.beforePlugin()}async afterPlugin(){this.op.afterPlugin&&await this.op.afterPlugin()}async beforeModule(){this.op.beforeModule&&await this.op.beforeModule()}async afterModule(){this.op.afterModule&&await this.op.afterModule()}async beforeEmpPlugin(){this.op.beforeEmpPlugin&&await this.op.beforeEmpPlugin()}async afterEmpPlugin(){this.op.afterEmpPlugin&&await this.op.afterEmpPlugin()}async beforeBuild(){this.op.beforeBuild&&await this.op.beforeBuild()}async afterBulid(){this.op.afterBulid&&await this.op.afterBulid()}async beforeDevServe(){this.op.beforeDevServe&&await this.op.beforeDevServe()}async afterDevServe(){this.op.afterDevServe&&await this.op.afterDevServe()}async beforeServe(){this.op.beforeServe&&await this.op.beforeServe()}async afterServe(){this.op.afterServe&&await this.op.afterServe()}}});import It from"node:fs";var le,Ie,Ne=l(()=>{"use strict";y();je();Le();ze();le=class{store;appSrc="src";appEntry="";base="";target=[];assign(e,t){return t=t||{},m(e,t)}empShareFastMode=new F;empShareLib=new R;isESM=!1;async autoDevSet(){this.store.mode==="development"&&this.store.empOptions.autoDevBase}checkIsESM(e){return["es3","es5"].indexOf(e)===-1}lifeCycle;async setup(e){this.store=e,await this.syncEmpOptions(),this.lifeCycle=new G(this.store.empOptions.lifeCycle),await this.lifeCycle.afterGetEmpOptions(),this.isESM=this.checkIsESM(this.build.target),this.store.empOptions.target?(this.target=this.store.empOptions.target,Array.isArray(this.target)&&!this.target.includes(this.build.target)&&this.target.push(this.build.target)):this.target=["web",this.build.target];let{appSrc:t,base:s,appEntry:r}=this.store.empOptions;t&&(this.appSrc=t),s&&(this.base=s),r&&(this.appEntry=r),this.store.empConfig.empShare&&await this.empShareLib.setup()}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:!0,showRsconfig:!1,showPerformance:!1,rspackCache:!0,infrastructureLogging:{appendOnly:!0,level:"warn"},newTreeshaking:this.store.empConfig.isESM},this.store.empOptions.debug)}get build(){let e=this.store.empOptions.build?.staticDir?`${this.store.empOptions.build?.staticDir}/`:"";return this.assign({outDir:"dist",staticDir:e,assetsDir:"assets",publicDir:"public",chunkIds:this.store.isDev?"named":"deterministic",moduleIds:this.store.isDev?"named":"deterministic",sourcemap:!0,minify:!this.store.isDev,minOptions:{},target:"es5",polyfill:!1,polyfillInclude:["es.object.values","es.object.entries","es.array.flat"],coreJsFeatures:"stable",externalHelpers:!1,browserslist:this.store.browserslistOptions.default,swcConfig:{}},{...this.store.empOptions.build,staticDir:e})}get html(){let e=this.store.empOptions.html?.template?{}:{charset:{charset:"utf-8"},"http-equiv":{"http-equiv":"X-UA-Compatible",content:"IE=edge"},viewport:{name:"viewport",content:"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"},keywords:{keywords:""},description:{description:""}};return this.assign({lang:"zh-CN",title:"EMP",inject:"body",minify:!this.store.isDev,scriptLoading:this.isESM?"module":"defer",meta:e,files:{css:[],js:[]},tags:{headTags:[],bodyTags:[]}},this.store.empOptions.html)}get entries(){return this.store.empOptions.entries?this.store.empOptions.entries:{}}get server(){let e={host:"0.0.0.0",port:8e3,open:process.platform==="darwin",hot:!0,watchFiles:["src/**/*.html"],static:[{directory:this.store.publicDir,watch:this.store.isDev}],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"}};return this.assign(e,this.store.empOptions.server)}get empShare(){return this.assign({name:"",filename:"emp.js",shared:{}},this.store.empOptions.empShare)}get css(){return this.assign({sass:{mode:"modern",api:"modern-compiler"}},this.store.empOptions.css)}get output(){let e=(this.store.isDev,".[contenthash:8]"),t=this.store.isDev?"":".[contenthash:8]",{assetsDir:s,staticDir:r}=this.store.empConfig.build,o={publicPath:this.store.empConfig.base?this.store.empConfig.base:"auto",crossOriginLoading:"anonymous",filename:`${r}js/[name]${e}.js`,cssFilename:`${r}css/[name]${t}.css`,cssChunkFilename:`${r}css/[name]${t}.css`,assetModuleFilename:`${r}${s}/[name]${e}[ext][query]`,path:this.store.outDir,clean:!0};return this.store.isDev&&this.store.empConfig.empShare.dts!==!1&&(o.clean=!1),this.assign(o,this.store.empOptions.output)}get define(){let e={mode:this.store.mode,env:this.store.cliOptions.env};return this.store.empOptions.define&&(e={...e,...this.store.empOptions.define}),this.setDefine(e)}setDefine(e){let t=this.store.empOptions.defineFix?this.store.empOptions.defineFix:this.isESM?"esm":"cjs",s={};return Object.keys(e).map(r=>{(t==="all"||t==="esm")&&(s[`import.meta.env.${r}`]=JSON.stringify(e[r])),(t==="all"||t==="cjs")&&(s[`process.env.${r}`]=JSON.stringify(e[r])),s[`${r}`]=JSON.stringify(e[r])}),s}get externals(){return this.assign(this.empShareLib.externals,this.store.empOptions.externals)}get resolve(){return m({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(!It.existsSync(e))return;let{default:t}=await import(this.store.importFileUrl(e));typeof t=="function"?this.store.empOptions=await t(this.store):this.store.empOptions=t||{}}get moduleTransformRule(){let{moduleTransform:e}=this.store.empOptions,t=this.assign({defaultExclude:!1},e),s={and:[],not:[]};return t.defaultExclude===!0&&s.and.push(/(node_modules|bower_components)/),t?.exclude&&(s.and=s.and.concat(t.exclude)),e?.include&&(s.not=t.include),s}get cacheDir(){return this.store.empOptions.cacheDir?this.store.empOptions.cacheDir:"node_modules/.emp-cache"}get ignoreWarnings(){return this.store.empOptions.ignoreWarnings?this.store.empOptions.ignoreWarnings:[/Conflicting order/]}get autoPages(){let e;return this.store.empOptions.autoPages&&(e=typeof this.store.empOptions.autoPages=="boolean"?{}:this.store.empOptions.autoPages,e=this.assign({path:"pages"},e)),e}},Ie=new le});import Nt from"fs-extra";var ce,Ge,He=l(()=>{"use strict";ce=class{store;async setup(e){this.store=e;let t=[this.common(),this.stats(),this.devServer(),this.optimization(),this.checkTsconfig()];await Promise.all(t)}async common(){this.store.merge({node:{global:!0},experiments:{rspackFuture:{newTreeshaking:this.store.empConfig.debug.newTreeshaking},outputModule:this.store.empConfig.isESM,topLevelAwait:!0},target:this.store.empConfig.target,infrastructureLogging:this.store.empConfig.debug.infrastructureLogging,context:this.store.root,mode:this.store.mode,cache:this.store.empConfig.debug.rspackCache,devtool:this.store.empConfig.build.sourcemap?"source-map":!1,builtins:{},output:this.store.empConfig.output,resolve:this.store.empConfig.resolve,externals:this.store.empConfig.externals,ignoreWarnings:this.store.empConfig.ignoreWarnings})}async checkTsconfig(){let e=this.store.resolve("tsconfig.json");if(await Nt.exists(e)){let s={tsConfigPath:e};this.store.merge({resolve:s})}}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(){let e={moduleIds:this.store.empConfig.build.moduleIds,chunkIds:this.store.empConfig.build.chunkIds,minimize:this.store.empConfig.build.minify,splitChunks:{chunks:"async",cacheGroups:{}}};this.store.empConfig.build.polyfill&&(e.splitChunks.cacheGroups={}),this.store.chain.merge({optimization:e})}},Ge=new ce});var me,Ue,Je=l(()=>{"use strict";D();me=class{store;async setup(e){this.store=e;let t=[this.sass(),this.less(),this.css()];await Promise.all(t)}async sass(){let e={},t=this.store.empConfig.css?.sass;t&&t.mode==="modern"&&(e.implementation=t.implementation?t.implementation:S.resolve("sass-embedded"),e.api=t.api,t.sassOptions&&(e.sassOptions=t.sassOptions));let s={loader:S.resolve("sass-loader"),options:e};this.store.chain.merge({module:{rule:{sass:{test:/\.(sass|scss)$/,use:{sassLoader:s},type:"css/auto"}}}})}async less(){let e={loader:this.store.importResolve("less-loader"),options:{lessOptions:{javascriptEnabled:!0}}};this.store.chain.merge({module:{rule:{less:{test:/\.less$/,use:{lessLoader:e},type:"css/auto"}}}})}async css(){this.store.chain.merge({module:{rule:{css:{test:/\.css$/,use:{},type:"css/auto"}}}})}},Ue=new me});import b from"node:path";import{glob as _e}from"glob";import Gt from"html-webpack-plugin";var fe,We,Ve=l(()=>{"use strict";y();pe();fe=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.tags=e.tags||{},e}setChunk(e){return e.replace(b.extname(e),"").replace(`${this.store.empConfig.appSrc}${b.sep}`,"")}setTemplate(e){return e?this.store.resolve(e):this.store.empResolve(b.join("template","index.html"))}setFavicion(e){return e?this.store.resolve(e):this.store.empResolve(b.join("template","favicon.ico"))}setEntryItem(e,t,s){s=s||this.store.resolve(b.join(this.store.empConfig.appSrc,e));let r=this.setChunk(e),o=[s];this.entriesConfig[r]={entry:{[r]:o},html:this.setHtmlConfig(t,[r])},this.store.entries[r]=o}setRspackHtmlPlugin(e,t){this.store.chain.plugin(`html-plugin-${t}`).use(Gt,[e]),this.store.empConfig.empShareLib&&(e.files=m(e.files,this.store.empConfig.empShareLib.externalAssets)),this.store.chain.plugin(`html-plugin-empShare-${t}`).use(I,[e.files,t]),this.store.empConfig.empShareLib.useImportMap&&this.store.chain.plugin(`html-plugin-import-map-${t}`).use(z,[this.store.empConfig.empShareLib.importMap,t])}setRspackEntry(e){this.store.merge({entry:e})}async init(){this.store.empConfig.autoPages?await this.setAutoPage():(await this.setDefaultEntry(),this.setEntryByConfig())}async setAutoPage(){let e=this.store.empConfig.autoPages?.path||"pages",t=b.join(this.store.appSrc,e),s=b.join(t,"**","*.{ts,tsx,jsx,js}"),r=await _e([s],{windowsPathsNoEscape:!0});r=r.map(o=>o.replace(`${t}${b.sep}`,"")),r.map(o=>{let a=this.store.empConfig.entries[o]||{};this.setEntryItem(o,{...this.store.empConfig.html,...a},b.join(t,o))})}async setDefaultEntry(){let e=b.join(this.store.appSrc,this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index.{ts,tsx,jsx,js}"),t=await _e([e],{windowsPathsNoEscape:!0});if(t[0]){let s=b.join(this.store.empConfig.appSrc,Object.keys(this.store.empConfig.entries).length>0&&this.store.empConfig.appEntry?this.store.empConfig.appEntry:"index");this.setEntryItem(s,this.store.empConfig.html,t[0])}}setEntryByConfig(){if(Object.keys(this.store.empConfig.entries).length>0)for(let[e,t]of Object.entries(this.store.empConfig.entries))this.setEntryItem(e,{...this.store.empConfig.html,...t})}toConfig(){for(let[e,t]of Object.entries(this.entriesConfig))this.setRspackHtmlPlugin(t.html,e),this.setRspackEntry(t.entry)}},We=new fe});import qe from"node:path";var he,Xe,Ke=l(()=>{"use strict";D();y();he=class{store;swcJsOptions={};swcTsOptions={};coreJs={version:"3",alias:"",path:""};async setup(e){this.store=e;let t=[this.files(),this.scripts(),this.rspackGenerator(),this.rspackParser()];await this.store.empConfig.lifeCycle.beforeModule(),await Promise.all(t),await this.store.empConfig.lifeCycle.afterModule()}rspackGenerator(){let e=this.store.isDev?"[path][name]-[local]-[hash:5]":"[local]-[hash:5]";this.store.chain.merge({module:{generator:{css:{localIdentName:e},"css/auto":{localIdentName:e},"css/module":{localIdentName:e}}}})}rspackParser(){this.store.chain.merge({module:{parser:{css:{namedExports:!1},"css/auto":{namedExports:!1},"css/module":{namedExports:!1}}}})}get isPolyfill(){return this.store.empConfig.build.polyfill}swcParser(e){switch(e){case"js":return{syntax:"ecmascript",jsx:!0,decorators:!0,decoratorsBeforeExport:!1};case"ts":return{syntax:"typescript",decorators:!0,tsx:!0,dynamicImport:!0}}}swcJsc(e){let{target:t,externalHelpers:s}=this.store.empConfig.build;return{parser:this.swcParser(e),transform:{},target:t,externalHelpers:s,preserveAllComments:!0}}get swcCoreVersion(){let[e,t]=this.coreJs.version.split(".");return`${e}.${t}`}swcOptions(e){let t={jsc:m(this.swcJsc(e),{...this.store.empConfig.build.swcConfig}),isModule:"unknown"};return this.isPolyfill&&(delete t.jsc.target,t.env={coreJs:this.swcCoreVersion,targets:this.store.empConfig.build.browserslist},this.store.empConfig.isESM||(t.env.mode=this.store.empConfig.build.polyfill),this.store.empConfig.build.polyfill==="usage"&&(t.env.shippedProposals=!0,t.env.include=this.store.empConfig.build.polyfillInclude)),t}swcInitOptions(){let{externalHelpers:e}=this.store.empConfig.build;e&&this.store.chain.resolve.alias.set("@swc/helpers",qe.dirname(S.resolve("@swc/helpers/package.json"))),this.coreJs.path=S.resolve("core-js/package.json");let t=K(this.coreJs.path);t&&(this.coreJs.version=t),this.coreJs.alias=qe.dirname(this.coreJs.path),this.store.empConfig.build.polyfill&&(this.store.chain.resolve.alias.set("core-js",this.coreJs.alias),this.store.chain.module.rule("javascript").exclude.add(/core-js/),this.store.chain.module.rule("typescript").exclude.add(/core-js/)),this.swcTsOptions=this.swcOptions("ts"),this.swcJsOptions=this.swcOptions("js")}async scripts(){this.swcInitOptions();let e=!1,t=[];this.store.chain.merge({module:{parser:{javascript:{exportsPresence:"error",importExportsPresence:"error"}},rule:{mjs:{test:/\.m?js/,resolve:{fullySpecified:!1}},typescript:{test:/\.(ts|tsx)$/,exclude:t,sideEffects:e,use:{swc:{loader:"builtin:swc-loader",options:this.swcTsOptions}}},javascript:{test:/\.((m|c)?js|jsx)$/,exclude:t,sideEffects:e,use:{swc:{loader:"builtin:swc-loader",options:this.swcJsOptions}}}}}})}async files(){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"}}}})}},Xe=new he});import Qe from"fs";import{ModuleFederationPlugin as Ht}from"@module-federation/enhanced/rspack";import L from"@rspack/core";var ue,Ye,Ze=l(()=>{"use strict";ue=class{store;async setup(e){this.store=e;let t=[this.define(),this.anylayze(),this.progress(),this.copy(),this.empShare(),this.minify()];await this.store.empConfig.lifeCycle.beforePlugin(),await Promise.all(t),await this.store.empConfig.lifeCycle.afterPlugin()}async anylayze(){if(!this.store.cliOptions.analyze)return;let{default:{BundleAnalyzerPlugin:e}}=await import("webpack-bundle-analyzer");this.store.chain.plugin("bundleAnalyzerPlugin").use(e,[{analyzerPort:this.store.empConfig.server.port,defaultSizes:"gzip",analyzerHost:this.store.getLanIp()||"127.0.0.1"}])}async define(){this.store.chain.plugin("definePlugin").use(L.DefinePlugin,[this.store.empConfig.define])}async copy(){let e=this.store.resolve("public");Qe.existsSync(e)&&Qe.readdirSync(e).length>0&&this.store.chain.plugin("copyRspackPlugin").use(L.CopyRspackPlugin,[{patterns:[{from:e,to:this.store.resolve(this.store.empConfig.build.outDir)}]}])}async progress(){this.store.empConfig.debug.progress&&this.store.chain.plugin("progressPlugin").use(L.ProgressPlugin,[{prefix:"EMP"}])}async empShare(){let{isEmpshare:e}=this.store.empConfig.empShareLib;if(!e)return;let t=Ht;this.store.chain.plugin("empShare").use(t,[this.store.empConfig.empShareLib.pluginConfig])}minify(){this.store.chain.optimization.minimize(this.store.mode==="production"),this.store.chain.optimization.minimizer("minJs").use(L.SwcJsMinimizerRspackPlugin,[this.store.empConfig.build.minOptions]),this.store.chain.optimization.minimizer("minCss").use(L.SwcCssMinimizerRspackPlugin,[{}])}},Ye=new ue});var ge,et,tt=l(()=>{"use strict";He();Je();Ve();Ke();Ze();ge=class{store;async setup(e){this.store=e;let t=[Ge.setup(this.store),Xe.setup(this.store),Ye.setup(this.store),We.setup(this.store),Ue.setup(this.store)];await Promise.all(t),await this.store.empConfig.lifeCycle.beforeEmpPlugin(),await this.store.empConfig.plugins(),await this.store.empConfig.lifeCycle.afterEmpPlugin(),await this.store.empConfig.chain()}},et=new ge});import Ut from"node:fs/promises";import w from"node:path";import{pathToFileURL as Jt}from"node:url";import _t from"node:util";import Wt from"webpack-chain";var de,n,u=l(()=>{"use strict";v();D();y();Ne();tt();de=class{empPkg={dependencies:{},devDependencies:{},version:"2.0.0",name:""};pkg={dependencies:{},devDependencies:{},version:"0.0.0",name:""};root=process.cwd();empRoot=Me;empSource=w.resolve(this.empRoot,"dist");resolve=e=>w.isAbsolute(e)?e:w.resolve(this.root,e);empResolve=e=>w.resolve(this.empRoot,e);appSrc="";outDir="";publicDir="";resource={dir:"",key:"",cert:""};cacheDir="";mode="development";cliMode="dev";isDev=!0;cliOptions;chain;rsConfig;empOptions={};empConfig;vCompare=j;deepAssign=m;getLanIp=M;entries={};debug;async setup(e,t){await this.initVars(e,t),this.empConfig=Ie,await this.empConfig.setup(this),this.debug={...this.empConfig.debug},this.initPaths(),this.chain=new Wt,await et.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",process.env.NODE_ENV=e==="dev"?"development":"production";let s=await te(this.empResolve("package.json")),r=await te(this.resolve("package.json"));this.empPkg={...this.empPkg,...s},this.pkg={...this.pkg,...r}}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=w.join(this.empRoot,"resource"),this.resource.cert=w.join(this.resource.dir,"emp.cert"),this.resource.key=w.join(this.resource.dir,"emp.key")}setLogger(){let e=this.cliMode==="dev"?"debug":"info";this.debug.loggerLevel&&(e=this.debug.loggerLevel),p.setup({pname:`EMP\u26A1${this.empPkg.version}${this.cliMode==="dev"?".DEV":""}`,logLevel:e})}merge(e){this.chain.merge(e)}importResolve(e,t){return $e(e,t)}importFileUrl(e){return Jt(e).toString()}toConfig(){this.rsConfig=this.chain.toConfig()}logConfig(){if(this.debug.showRsconfig)if(typeof this.debug.showRsconfig=="string"){let e=w.join(this.root,this.debug.showRsconfig);Ut.writeFile(e,JSON.stringify(this.rsConfig,null,2))}else{this.debug.clearLog=!1;let e={colors:!0,depth:null},t=typeof this.debug.showRsconfig=="object"?m(e,this.debug.showRsconfig):e;console.log(p.link("[Compile Config]")),console.log(_t.inspect(this.rsConfig,t))}}get browserslistOptions(){return{default:["chrome >= 87","edge >= 88","firefox >= 78","safari >= 14"],h5:["iOS >= 9","Android >= 4.4","last 2 versions","> 0.2%","not dead"],node:["node >= 20"]}}},n=new de});import Vt from"node:fs";import C from"node:path";import g from"chalk";import{gzipSizeSync as qt}from"gzip-size";function ts(i,e){let t=[i,e],s=["File","Size","Gzipped"].reduce((r,o,a)=>{let f=t[a],d=o;return f&&(d=o.length<f?o+" ".repeat(f-o.length):o),`${r+d} `}," ");console.log(g.bold.blue(s))}async function st(i){let e=i.toJson({all:!1,assets:!0,timings:!0}),s=e.assets.filter(c=>Yt(c.name)).map(es);s.sort((c,k)=>c.size-k.size);let r=Math.max(...s.map(c=>c.sizeLabel.length)),o=Math.max(...s.map(c=>(c.folder+C.sep+c.name).length));ts(o,r);let a=0,f=0;s.forEach(c=>{let{sizeLabel:k}=c,{name:bt,folder:vt,gzipSizeLabel:wt}=c,Se=(vt+C.sep+bt).length,Ee=k.length;if(a+=c.size,f+=c.gzippedSize,Ee<r){let q=" ".repeat(r-Ee);k+=q}let Oe=g.gray(c.folder+C.sep)+ss(c.name);if(Se<o){let q=" ".repeat(o-Se);Oe+=q}p.info(` ${Oe} ${g.gray(k)} ${wt}`)});let d=`${g.bold.blue("Total size:")} ${H(a)}`,P=`${g.bold.blue("Gzipped size:")} ${H(f)}`;p.info(`
11
+ ${d}
12
+ ${P}
13
+ `),p.info(`${g.greenBright("\u2713")} Ready in ${T(Number(e.time))}
14
+ `)}function U(i=0){p.info(`${g.greenBright("\u2713")} Ready in ${T(Number(i))}`)}var Xt,Kt,Qt,Yt,Zt,es,H,ss,J=l(()=>{"use strict";u();v();y();Xt=/\.html$/,Kt=/\.(?:js|mjs|cjs|jsx)$/,Qt=/\.css$/,Yt=i=>!/\.map$/.test(i)&&!/\.LICENSE\.txt$/.test(i),Zt=i=>i>300*1e3?g.red:i>100*1e3?g.yellow:g.white,es=i=>{let e=i.name.split("?")[0],t=H(i.size),s=C.basename(e),r=C.join(C.basename(n.empConfig.build.outDir),C.dirname(e)),o=Vt.readFileSync(C.join(n.empConfig.build.outDir,e)),a=o.length,f=qt(o),d=Zt(f)(H(f));return{size:a,folder:r,name:s,gzippedSize:f,sizeLabel:t,gzipSizeLabel:d}};H=i=>{let e=i/1e3;return`${e.toFixed(e<1?2:1)} kB`},ss=i=>Kt.test(i)?g.yellowBright(i):Qt.test(i)?g.greenBright(i):Xt.test(i)?g.blueBright(i):g.magenta(i)});import{exec as is}from"node:child_process";import{promisify as rs}from"node:util";var rt,it,os,ns,ot,nt=l(()=>{"use strict";u();v();rt=rs(is),it=["Google Chrome Canary","Google Chrome Dev","Google Chrome Beta","Google Chrome","Microsoft Edge","Brave Browser","Vivaldi","Chromium"],os=async()=>{let i=process.env.BROWSER;if(!i||!it.includes(i)){let{stdout:e}=await rt("ps cax");i=it.find(t=>e.includes(t))}return i},ns=async i=>{if(process.platform==="darwin")try{let t=await os();if(t){let s=`osascript openChrome.applescript "${encodeURI(i)}" "${t}"`;return await rt(s,{cwd:n.resource.dir}),!0}}catch(t){p.debug(t)}try{let{default:t}=await import("open");return await t(i),!0}catch(t){return p.error("Failed to open start URL."),p.error(t),!1}},ot=ns});import at from"node:fs/promises";import _ from"chalk";var x,W=l(()=>{"use strict";ie();oe();v();nt();y();u();ae();x=class{sf={protocol:"http",host:"0.0.0.0",port:8e3,publicPath:"",publicHasHttp:!1,isOpenBrower:!1,url:"",urls:{localUrlForBrowser:"",localUrlForTerminal:"",lanUrlForTerminal:"",lanUrlForConfig:""}};async adaptServer(){this.sf.publicPath=n.rsConfig.output?.publicPath==="auto"?"/":n.rsConfig.output?.publicPath||"/",this.sf.isOpenBrower=!!n.empConfig.server.open,this.sf.protocol=this.isHttps?"https":"http",this.sf.host=n.empConfig.server.host?n.empConfig.server.host:this.sf.host,this.sf.port=n.empConfig.server.port,await this.serverPort(),O.setup(this.sf),this.sf.publicPath&&(this.sf.publicPath.indexOf("http://")>-1||this.sf.publicPath.indexOf("https://")>-1)?(this.sf.url=this.sf.publicPath,this.sf.publicHasHttp=!0,this.sf.urls.localUrlForTerminal=O.prettyPrintUrl("localhost")):(this.sf.urls=O.urls,this.sf.url=this.sf.urls.localUrlForBrowser)}startOpen(){let{urls:e}=this.sf;this.sf.publicHasHttp?(p.info(`${_.greenBright("\u279C")} Local: ${p.link(e.localUrlForTerminal)}`),p.info(`${_.greenBright("\u279C")} Network: ${p.link(this.sf.publicPath)}`)):(p.info(`${_.greenBright("\u279C")} Local: ${p.link(e.localUrlForTerminal)}`),p.info(`${_.greenBright("\u279C")} Network: ${p.link(e.lanUrlForTerminal)}
15
+ `)),this.sf.isOpenBrower&&ot(this.sf.url)}async setup(e,t){await n.setup(e,t),n.debug.clearLog&&Q(),p.title(`${e}`),await this.adaptServer(),await this.run(),this.afterRun()}async run(){}afterRun(){process.on("SIGINT",function(){process.exit()})}get isHttps(){let{server:e,https:t}=n.empConfig.server||{};return e==="https"||typeof e=="object"&&e.type==="https"||t===!0}getcert(){return Promise.all([at.readFile(n.resource.key),at.readFile(n.resource.cert)])}async serverPort(){if(B.isADB)return;let{port:e,host:t}=this.sf,s=await A(e,t);s!==e&&(this.sf.port=s,n.rsConfig.devServer?.port&&(n.rsConfig.devServer.port=s))}}});var pt={};$(pt,{default:()=>ls});import{rspack as as}from"@rspack/core";import{RspackDevServer as ps}from"@rspack/dev-server";var ye,ls,lt=l(()=>{"use strict";J();v();y();W();u();ye=class extends x{get rspackDevConfig(){return m(n.rsConfig,{stats:{all:!1,colors:!0,assets:!1,chunks:!1,entrypoints:!1,timings:!1,version:!1,errors:!0,warnings:!0},devServer:{open:!1,setupExitSignals:!0}})}async devServerConfig(){let e=Object.assign({},n.rsConfig.devServer);if(this.isHttps&&(e.https===!0&&delete e.https,!e.server)){let[t,s]=await this.getcert();e.server={type:"https",options:{key:t,cert:s}}}return e}async run(){let e=as(this.rspackDevConfig);if(!n.rsConfig.devServer){p.error("devServer is not defined in config");return}let t=await this.devServerConfig(),s=new ps(t,e);this.startOpen(),n.empConfig.lifeCycle.beforeDevServe&&await n.empConfig.lifeCycle.beforeDevServe(),await s.start();let r=o=>{let a=o?.toJson({all:!1,colors:!1,assets:!1,chunks:!1,timings:!0});U(a.time)};n.debug.showPerformance&&e.hooks.afterDone.tap("done",r),s.middleware?.waitUntilValid(o=>{n.debug.showPerformance||r(o),n.empConfig.lifeCycle.afterDevServe&&n.empConfig.lifeCycle.afterDevServe()})}},ls=new ye});var ct={};$(ct,{default:()=>ms});import{rspack as cs}from"@rspack/core";var be,ms,mt=l(()=>{"use strict";J();v();W();u();be=class extends x{async run(){n.empConfig.lifeCycle.beforeBuild&&await n.empConfig.lifeCycle.beforeBuild(),cs(n.rsConfig,async(e,t)=>{if(e!==null){p.error(e.stack||e),e.message&&p.error(e.message);return}if(!t){p.red("Stats is Undefined.");return}t.hasErrors()&&(p.error(t.toString({colors:!0,children:!0})),p.red("Failed to compile."),process.exit(1)),t.hasWarnings()&&(p.yellow("Compiled with warnings."),p.warn(t.toString({chunks:!1,assets:!1,colors:!0,children:!0,errors:!0,warnings:!0}))),await st(t),n.empConfig.lifeCycle.afterBulid&&await n.empConfig.lifeCycle.afterBulid()})}},ms=new be});import fs from"https";import hs from"compression";import us from"cors";import gs from"express";var V,ft=l(()=>{"use strict";W();V=class extends x{app;async init(){let e=gs();e.use(hs()),e.use(us()),this.app=e}async server(){if(this.isHttps){let[e,t]=await this.getcert();fs.createServer(typeof this.isHttps!="boolean"?this.isHttps:{key:e,cert:t},this.app).listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}else this.app.listen(this.sf.port,async()=>{this.startOpen(),await this.onReady()})}async onReady(){}async middleware(){}async start(){await this.init(),await this.middleware(),await this.server()}}});var ht={};$(ht,{default:()=>ws});import ds from"node:fs";import ys from"node:fs/promises";import bs from"path";import vs from"express";var ve,ws,ut=l(()=>{"use strict";J();v();u();ft();ve=class extends V{timing=0;async run(){if(this.timing=Date.now(),!ds.existsSync(n.outDir))return p.sysError(`emp serve must be executed after emp build,${n.outDir} not exist!`);n.empConfig.lifeCycle.beforeServe&&await n.empConfig.lifeCycle.beforeServe(),this.start()}async middleware(){let e=n.resolve(n.rsConfig.output?.path);this.app.use(vs.static(e));let t=await ys.readFile(bs.join(e,"index.html"),"utf8");this.app.get("*",(s,r)=>r.send(t))}async onReady(){U(Date.now()-this.timing),n.empConfig.lifeCycle.afterServe&&await n.empConfig.lifeCycle.afterServe()}},ws=new ve});import{rspack as ao}from"@rspack/core";v();y();u();import we,{exit as Cs}from"node:process";import{program as E}from"commander";function gt(){let i="20.0.0";j(i,we.versions.node)===1&&(p.sysError(`\u5F53\u524D\u7248\u672C\u4E3Av${we.versions.node} \u6700\u4F4E\u8981\u6C42\u4E3Av${i}`),Cs(0)),E.version(n.empPkg.version,"-v, --version").usage("<command> [options]"),E.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").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(e,t)=>{let[s,r]=e.split("=");return t[s]=r,t},{}).action(async e=>{let{default:t}=await Promise.resolve().then(()=>(lt(),pt));await t.setup("dev",e)}),E.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").option("-ev, --env-vars <key=value>","\u5B9A\u4E49\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF -ev key=value \u591A\u4E2A\u73AF\u5883\u53D8\u91CF\u91CD\u590D\u8C03\u7528 -ev key=value -ev key=value",(e,t)=>{let[s,r]=e.split("=");return t[s]=r,t},{}).action(async e=>{let{default:t}=await Promise.resolve().then(()=>(mt(),ct));await t.setup("build",e)}),E.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(()=>(ut(),ht));await t.setup("serve",e)}),E.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=>{}),E.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=>{}),E.parse(we.argv)}u();import dt from"node:fs/promises";import Ce from"node:path";import{glob as xs}from"glob";var Ss=/(?:(?:import|export)\s?(?:type)?\s?(?:(?:\{[^;\n]+\})|(?:[^;\n]+))\s?from\s?['"][^;\n]+['"])|(?:import\(['"][^;\n]+?['"]\))/g,Es=/(?:import|export)\s?(?:type)?\s?\{?.+\}?\s?from\s?['"](.+)['"]/,Os=/import\(['"]([^;\n]+?)['"]\)/,xe=class{list=[];outDir=n.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 xs([`${n.empConfig.build.outDir}/**/*.d.ts`],{windowsPathsNoEscape:!0});let e=[];this.list.map(s=>{s=n.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 dt.readFile(e,{encoding:"utf-8"});return{src:e,code:t}}replaceAliasPath({src:e,code:t}){t=t.replace(Ss,r=>{let o=r.match(Es);if(o||(o=r.match(Os)),o&&o[1]){let a=o[1];if(!a.startsWith("."))return r;let f=Ce.resolve(Ce.dirname(e),a).replace(this.outDir,this.aliasName);return r.replace(o[1],f)}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
15
16
  ${t}}\r
16
- `}async writeCode(e){let t="";e.map(s=>{t+=s.code}),await ht.writeFile(fe.join(this.outDir.replace("dist","types"),"type.d.ts"),t)}},vs=new ue;function Zr(i){return i}export{Zr as defineConfig,vs as dts,mt as runScript,n as store};
17
+ `}async writeCode(e){let t="";e.map(s=>{t+=s.code}),await dt.writeFile(Ce.join(this.outDir.replace("dist","types"),"type.d.ts"),t)}},Ps=new xe;u();var yt={};$(yt,{chalk:()=>ks,logger:()=>p,utils:()=>Z});y();v();import*as ks from"chalk";function mo(i){return i}export{mo as defineConfig,Ps as dts,yt as empHelper,ao as rspack,gt as runScript,n as store};
@@ -1,4 +1,4 @@
1
- import { RspackOptions } from '@rspack/core';
1
+ import { type RspackOptions } from '@rspack/core';
2
2
  import { BaseScript } from '../script/base';
3
3
  declare class DevScript extends BaseScript {
4
4
  get rspackDevConfig(): RspackOptions;
@@ -1,4 +1,4 @@
1
- import { Express } from 'express';
1
+ import { type Express } from 'express';
2
2
  import { BaseScript } from '../script/base';
3
3
  export declare class HttpServer extends BaseScript {
4
4
  app: Express;
@@ -2,7 +2,7 @@ declare class AutoDevBase {
2
2
  isADB: boolean;
3
3
  isHttps: boolean;
4
4
  get isHttpBase(): boolean;
5
- setup(): void;
5
+ setup(): Promise<void>;
6
6
  }
7
7
  declare const _default: AutoDevBase;
8
8
  export default _default;
@@ -1,7 +1,8 @@
1
- import { GlobalStore } from '../store';
2
- import { BuildType, DebugType, EMPShareType, HtmlType, RsTarget, ServerType } from '../types/config';
3
- import { Output } from '@rspack/core';
4
- import { EMPShareLib } from '../store/empShareLib';
1
+ import type { GlobalStore } from '../store';
2
+ import type { BuildType, DebugType, EMPShareType, EmpOptions, HtmlType, RsTarget, ServerType } from '../types/config';
3
+ import type { Output } from '@rspack/core';
4
+ import { EMPShareLib } from '../store/empShare';
5
+ import { EmpShareFastMode } from '../store/empShare/fastMode';
5
6
  import { LifeCycle } from '../store/lifeCycle';
6
7
  export declare class EmpConfig {
7
8
  private store;
@@ -25,6 +26,7 @@ export declare class EmpConfig {
25
26
  base: string;
26
27
  target: RsTarget;
27
28
  private assign;
29
+ empShareFastMode: EmpShareFastMode;
28
30
  empShareLib: EMPShareLib;
29
31
  /**
30
32
  * 是否启动 esm 模块
@@ -43,9 +45,7 @@ export declare class EmpConfig {
43
45
  get entries(): import("../types/config").EntriesType;
44
46
  get server(): ServerType;
45
47
  get empShare(): EMPShareType;
46
- get css(): {
47
- postcss: never[];
48
- };
48
+ get css(): Required<EmpOptions['css']>;
49
49
  get output(): Output;
50
50
  get define(): {
51
51
  [k: string]: string;
@@ -56,6 +56,10 @@ export declare class EmpConfig {
56
56
  syncEmpOptions(): Promise<void>;
57
57
  get moduleTransformRule(): any;
58
58
  get cacheDir(): string;
59
+ get ignoreWarnings(): (RegExp | ((args_0: Error, args_1: import("@rspack/core").Compilation, ...args_2: unknown[]) => boolean))[];
60
+ get autoPages(): {
61
+ path: string;
62
+ } | undefined;
59
63
  }
60
64
  declare const _default: EmpConfig;
61
65
  export default _default;
@@ -0,0 +1,18 @@
1
+ import type { EMPShareFastModeType } from '../../types/config';
2
+ export declare class EmpShareFastMode {
3
+ fastMode: Required<EMPShareFastModeType>;
4
+ externalMF: {
5
+ '@module-federation/runtime': string;
6
+ '@module-federation/sdk': string;
7
+ };
8
+ externalReact: {
9
+ react: string;
10
+ 'react-dom': string;
11
+ 'react-router-dom': string;
12
+ };
13
+ externals: any;
14
+ getRuntimeLib(runtimeHost: string): string;
15
+ setup(): void;
16
+ injectLib(): void;
17
+ setExternals(): void;
18
+ }
@@ -1,6 +1,6 @@
1
- import { Configuration } from '@rspack/core';
2
- import type { EMPShareType } from '../types/config';
3
- import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';
1
+ import type { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';
2
+ import type { Configuration } from '@rspack/core';
3
+ import type { EMPShareType } from '../../types/config';
4
4
  export type externalAssetsType = {
5
5
  js: string[];
6
6
  css: string[];
@@ -17,7 +17,6 @@ export declare class EMPShareLib {
17
17
  private exp;
18
18
  config: EMPShareType;
19
19
  importMap: ImportMapType;
20
- version: EMPShareType['mfVersion'];
21
20
  isEmpshare: boolean;
22
21
  setup(): Promise<void>;
23
22
  /**
@@ -1,9 +1,9 @@
1
- import { EMPModeType } from '../types/env';
2
- import WPChain from 'webpack-chain';
3
1
  import type { Configuration as RsConfig, RspackOptions } from '@rspack/core';
4
- import type { EmpOptions } from '../types/config';
5
- import { EmpConfig } from '../store/empConfig';
6
2
  import { deepAssign } from '../helper/utils';
3
+ import { type EmpConfig } from '../store/empConfig';
4
+ import type { EmpOptions } from '../types/config';
5
+ import type { EMPModeType } from '../types/env';
6
+ import WPChain from 'webpack-chain';
7
7
  export declare class GlobalStore {
8
8
  /**
9
9
  * EMP Version
@@ -79,6 +79,10 @@ export declare class GlobalStore {
79
79
  vCompare: (preVersion?: string, lastVersion?: string) => number;
80
80
  deepAssign: typeof deepAssign;
81
81
  getLanIp: () => string;
82
+ entries: {
83
+ [chunkName: string]: RspackOptions['entry'];
84
+ };
85
+ debug: EmpConfig['debug'];
82
86
  setup(mode: string, cliOptions: any): Promise<void>;
83
87
  /**
84
88
  * 初始化 基础变量
@@ -1,10 +1,14 @@
1
- export type LifeCycleType = Partial<LifeCycle>;
1
+ export type LifeCycleOptions = Partial<LifeCycle>;
2
2
  export declare class LifeCycle {
3
- op: LifeCycleType;
4
- constructor(op?: LifeCycleType);
3
+ op: LifeCycleOptions;
4
+ constructor(op?: LifeCycleOptions);
5
5
  afterGetEmpOptions(): Promise<void>;
6
6
  beforePlugin(): Promise<void>;
7
7
  afterPlugin(): Promise<void>;
8
+ beforeModule(): Promise<void>;
9
+ afterModule(): Promise<void>;
10
+ beforeEmpPlugin(): Promise<void>;
11
+ afterEmpPlugin(): Promise<void>;
8
12
  beforeBuild(): Promise<void>;
9
13
  afterBulid(): Promise<void>;
10
14
  beforeDevServe(): Promise<void>;
@@ -3,6 +3,7 @@ declare class RspackCommon {
3
3
  store: GlobalStore;
4
4
  setup(store: GlobalStore): Promise<void>;
5
5
  common(): Promise<void>;
6
+ checkTsconfig(): Promise<void>;
6
7
  stats(): Promise<void>;
7
8
  devServer(): Promise<void>;
8
9
  optimization(): Promise<void>;
@@ -1,6 +1,6 @@
1
+ import type { RspackOptions } from '@rspack/core';
1
2
  import type { GlobalStore } from '../../store';
2
- import { EmpConfig } from '../empConfig';
3
- import { RspackOptions } from '@rspack/core';
3
+ import type { EmpConfig } from '../empConfig';
4
4
  type EntriesConfigType = {
5
5
  [chunk: string]: {
6
6
  html: EmpConfig['html'];
@@ -12,13 +12,27 @@ declare class RspackEntries {
12
12
  entriesConfig: EntriesConfigType;
13
13
  setup(store: GlobalStore): Promise<void>;
14
14
  private setHtmlConfig;
15
+ /**
16
+ * chunk name 格式化 去除 后缀
17
+ * @param filename
18
+ * @returns
19
+ */
15
20
  private setChunk;
16
21
  private setTemplate;
17
22
  private setFavicion;
23
+ /**
24
+ *
25
+ * @param filename 文件名
26
+ * @param op html plugin 配置
27
+ * @param absPath 文件 绝对路径
28
+ */
18
29
  private setEntryItem;
19
30
  setRspackHtmlPlugin(config: EmpConfig['html'], chunk: string): void;
20
31
  setRspackEntry(entry: RspackOptions['entry']): void;
21
32
  init(): Promise<void>;
33
+ setAutoPage(): Promise<void>;
34
+ setDefaultEntry(): Promise<void>;
35
+ setEntryByConfig(): void;
22
36
  toConfig(): void;
23
37
  }
24
38
  declare const _default: RspackEntries;
@@ -1,6 +1,6 @@
1
- import { HtmlType } from '../../types/config';
2
- import { EMPShareLib } from '../empShareLib';
3
- import { type Compiler } from '@rspack/core';
1
+ import type { Compiler } from '@rspack/core';
2
+ import type { EMPShareLib } from '../../store/empShare';
3
+ import type { HtmlType } from '../../types/config';
4
4
  export declare const HtmlImportMapPluginName = "HtmlImportMapPlugin";
5
5
  export declare class HtmlImportMapPlugin {
6
6
  importMap: EMPShareLib['importMap'];
@@ -1,12 +1,13 @@
1
1
  /// <reference types="node" />
2
+ import type { InspectOptions } from 'node:util';
2
3
  import type { Configuration as RsConfig } from '@rspack/core';
3
- import { Configuration as devServerConfig } from '@rspack/dev-server';
4
- import Chain from 'webpack-chain';
5
- import { Externals, HtmlRspackPluginOptions, Output, Resolve, RuleSetRule, SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
6
- import { EMP3PluginType } from './plugin';
7
- import { InspectOptions } from 'node:util';
8
- import type { LifeCycle } from '../store/lifeCycle';
9
- import type { ModuleFederationPluginOptions } from '../store/empShareLib';
4
+ import type { Externals, HtmlRspackPluginOptions, Output, Resolve, RuleSetRule, SwcJsMinimizerRspackPluginOptions } from '@rspack/core';
5
+ import type { Configuration as devServerConfig } from '@rspack/dev-server';
6
+ import type { Options as SassOptions } from 'sass-embedded';
7
+ import type { ModuleFederationPluginOptions } from '../store/empShare';
8
+ import type { LifeCycleOptions } from '../store/lifeCycle';
9
+ import type Chain from 'webpack-chain';
10
+ import type { EMP3PluginType } from './plugin';
10
11
  export type LoggerType = 'debug' | 'info' | 'warn' | 'error';
11
12
  export type DebugType = {
12
13
  loggerLevel: LoggerType;
@@ -100,6 +101,11 @@ export type BuildType = {
100
101
  * @default false
101
102
  */
102
103
  polyfill?: 'entry' | 'usage' | false;
104
+ /**
105
+ * 手动注入兼容代码,避免usage出现分析纰漏问题
106
+ * @default ['es.object.values', 'es.object.entries', 'es.array.flat']
107
+ */
108
+ polyfillInclude?: string[];
103
109
  /**
104
110
  * 选择core-js的兼容版本有助于切换适当的代码体积
105
111
  * @default stable
@@ -109,15 +115,15 @@ export type BuildType = {
109
115
  * @swc/helpers 外置
110
116
  * @default false
111
117
  */
112
- externalHelpers: boolean;
118
+ externalHelpers?: boolean;
113
119
  /**
114
120
  * 浏览器 兼容版本
115
121
  */
116
- browserslist: string[];
122
+ browserslist?: string[];
117
123
  /**
118
124
  * swc 配置
119
125
  */
120
- swcConfig: {
126
+ swcConfig?: {
121
127
  transform?: {
122
128
  useDefineForClassFields?: boolean;
123
129
  };
@@ -164,9 +170,6 @@ export interface HtmlType extends HtmlRspackPluginOptions {
164
170
  export type EntriesType = {
165
171
  [entryFilename: string]: HtmlType;
166
172
  };
167
- export type CSSOptions = {
168
- postcss?: [string, any][];
169
- };
170
173
  export interface ModuleTransform {
171
174
  exclude?: RuleSetRule['exclude'][];
172
175
  include?: RuleSetRule['include'][];
@@ -176,6 +179,34 @@ export interface ModuleTransform {
176
179
  */
177
180
  defaultExclude?: boolean;
178
181
  }
182
+ export type CssSassOptionsType = {
183
+ api?: 'modern' | 'modern-compiler';
184
+ sassOptions?: SassOptions<'async'>;
185
+ mode?: 'default' | 'modern';
186
+ implementation?: object | string;
187
+ };
188
+ export type EMPShareFastModeType = {
189
+ /**
190
+ * 共享库目录 优先读取 runtimeLib
191
+ */
192
+ runtimeHost?: string;
193
+ /**
194
+ * 共享库全路径
195
+ */
196
+ runtimeLib?: string;
197
+ /**
198
+ * 额外的库添加
199
+ */
200
+ externals?: any;
201
+ /**
202
+ * 当为 UMD时 暴露到 window 的全局变量
203
+ */
204
+ globalVal?: string;
205
+ /**
206
+ * 默认支持React
207
+ */
208
+ framework?: 'react';
209
+ };
179
210
  export type EMPShareType = ModuleFederationPluginOptions & {
180
211
  /**
181
212
  * emp 基于库共享模块
@@ -187,10 +218,9 @@ export type EMPShareType = ModuleFederationPluginOptions & {
187
218
  */
188
219
  useImportMap?: boolean;
189
220
  /**
190
- * module federation 版本
191
- * @default 1
221
+ * 快速模式
192
222
  */
193
- mfVersion?: 1 | 1.5;
223
+ fastMode?: EMPShareFastModeType;
194
224
  };
195
225
  export type EMPshareLibItemType = {
196
226
  [module: string]: {
@@ -226,6 +256,13 @@ export type ExternalsItemType = {
226
256
  type?: string;
227
257
  };
228
258
  export type RsTarget = RsConfig['target'];
259
+ export type AutoPagesType = {
260
+ /**
261
+ * 基于src寻找入口目录
262
+ * @default pages
263
+ */
264
+ path?: string;
265
+ };
229
266
  export type EmpOptions = {
230
267
  /**
231
268
  * publicPath 根路径 可参考webpack,业务模式默认为 auto
@@ -242,6 +279,11 @@ export type EmpOptions = {
242
279
  * 启动后 自动设置 base 为当前 Ip+port的路径如 base = http://127.0.0.1:8080/ 并且固定 ws 方便代理调试
243
280
  */
244
281
  autoDevBase?: boolean;
282
+ /**
283
+ * 启动后 进入自动搜寻入口的方式
284
+ * 可以通过 html 或 entries 设置 模版配置
285
+ */
286
+ autoPages?: boolean | AutoPagesType;
245
287
  /**
246
288
  * 项目代码路径
247
289
  * @default 'src'
@@ -264,7 +306,9 @@ export type EmpOptions = {
264
306
  /**
265
307
  * css 相关设置
266
308
  */
267
- css?: CSSOptions;
309
+ css?: {
310
+ sass?: CssSassOptionsType;
311
+ };
268
312
  /**
269
313
  * 模块编译
270
314
  * 如 node_modules 模块 是否加入编译
@@ -303,5 +347,10 @@ export type EmpOptions = {
303
347
  /**
304
348
  * emp 执行周期
305
349
  */
306
- lifeCycle?: LifeCycle;
350
+ lifeCycle?: LifeCycleOptions;
351
+ /**
352
+ * ignoreWarnings
353
+ * @default [/Conflicting order/]
354
+ */
355
+ ignoreWarnings?: RsConfig['ignoreWarnings'];
307
356
  };
package/emp-tsconfig.json CHANGED
@@ -3,11 +3,7 @@
3
3
  "types": ["@empjs/cli/client"],
4
4
  "plugins": [{ "name": "typescript-plugin-css-modules" }],
5
5
  "target": "ESNext",
6
- "lib": [
7
- "DOM",
8
- "DOM.Iterable",
9
- "ESNext"
10
- ],
6
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
11
7
  "allowJs": true,
12
8
  "skipLibCheck": true,
13
9
  "esModuleInterop": true,
@@ -23,11 +19,6 @@
23
19
  "jsx": "preserve",
24
20
  "verbatimModuleSyntax": true
25
21
  },
26
- "include": [
27
- "src"
28
- ],
29
- "exclude": [
30
- "dist",
31
- "nodule_modules"
32
- ]
33
- }
22
+ "include": ["src"],
23
+ "exclude": ["dist", "nodule_modules"]
24
+ }
package/package.json CHANGED
@@ -1,112 +1,98 @@
1
1
  {
2
- "name": "@empjs/cli",
3
- "version": "3.0.0-rc.2-4",
4
- "description": "emp",
5
- "license": "MIT",
6
- "type": "module",
7
- "files": [
8
- "dist",
9
- "bin",
10
- "resource",
11
- "template",
12
- "client.d.ts",
13
- "emp-tsconfig.json"
14
- ],
15
- "maintainers": [
16
- "xuhongbin",
17
- "ckken",
18
- "doerme"
19
- ],
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com/empjs/emp.git",
23
- "directory": "packages/cli"
24
- },
25
- "publishConfig": {
26
- "access": "public"
27
- },
28
- "keywords": [
29
- "rspack",
30
- "rust",
31
- "typescript"
32
- ],
33
- "bin": {
34
- "emp": "./bin/emp.js"
35
- },
36
- "main": "dist/index.js",
37
- "module": "dist/index.js",
38
- "types": "dist/index.d.ts",
39
- "exports": {
40
- ".": {
41
- "import": {
42
- "default": "./dist/index.js",
43
- "types": "./dist/index.d.ts"
44
- },
45
- "require": {
46
- "default": "./dist/index.js",
47
- "types": "./dist/index.d.ts"
48
- }
49
- },
50
- "./emp-tsconfig.json": "./emp-tsconfig.json"
51
- },
52
- "scripts": {
53
- "d": "rimraf dist && pnpm run esdev:build",
54
- "b": "rimraf dist && pnpm run esbuild:build",
55
- "dev": "rimraf dist && pnpm run /^esdev:.*/",
56
- "esdev:build": "cross-env ENV=dev node esbuild.js",
57
- "esdev:tsc": "tsc -w",
58
- "esdev:tsc-alias": "tsc-alias -w",
59
- "build": "rimraf dist && pnpm run /^esbuild:.*/",
60
- "esbuild:build": "cross-env ENV=prod node esbuild.js",
61
- "esbuild:tsc": "tsc && tsc-alias",
62
- "dts": "node dts-bundle.js"
63
- },
64
- "engines": {
65
- "node": ">=20.0.0"
66
- },
67
- "author": "Ken",
68
- "devDependencies": {
69
- "@types/compression": "^1.7.2",
70
- "@types/cors": "^2.8.12",
71
- "@types/default-gateway": "^7.2.1",
72
- "@types/express": "^4.17.13",
73
- "@types/fs-extra": "^11.0.4",
74
- "@types/watchpack": "^2.4.3",
75
- "@types/webpack": "^5.28.4",
76
- "@types/webpack-bundle-analyzer": "^4.6.2",
77
- "@types/webpack-hot-middleware": "^2.25.9",
78
- "@types/webpack-sources": "^3.2.2",
79
- "@types/node": "^20.8.7",
80
- "cross-env": "^7.0.3",
81
- "esbuild": "^0.19.5",
82
- "rimraf": "^5.0.5",
83
- "tsc-alias": "^1.8.8"
84
- },
85
- "dependencies": {
86
- "@module-federation/enhanced": "^0.1.6",
87
- "@rspack/core": "0.6.1",
88
- "@rspack/dev-server": "0.6.1",
89
- "@swc/helpers": "^0.5.9",
90
- "address": "^2.0.1",
91
- "ansi-html-community": "^0.0.8",
92
- "chalk": "^5.3.0",
93
- "commander": "^11.1.0",
94
- "compression": "^1.7.4",
95
- "core-js": "^3.36.1",
96
- "cors": "^2.8.5",
97
- "default-gateway": "^7.2.2",
98
- "express": "^4.18.2",
99
- "fast-glob": "^3.3.1",
100
- "fs-extra": "^11.2.0",
101
- "gzip-size": "^7.0.0",
102
- "html-entities": "^2.5.2",
103
- "html-webpack-plugin": "^5.6.0",
104
- "less-loader": "^12.2.0",
105
- "open": "^10.1.0",
106
- "sass-loader": "^14.2.0",
107
- "strip-ansi": "^7.1.0",
108
- "typescript-plugin-css-modules": "^5.1.0",
109
- "webpack-bundle-analyzer": "^4.10.2",
110
- "webpack-chain": "^6.5.1"
111
- }
112
- }
2
+ "name": "@empjs/cli",
3
+ "version": "3.0.0-rc.20",
4
+ "description": "emp",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "files": ["dist", "bin", "resource", "template", "client.d.ts", "emp-tsconfig.json"],
8
+ "maintainers": ["xuhongbin", "ckken", "doerme"],
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/empjs/emp.git",
12
+ "directory": "packages/cli"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "keywords": ["rspack", "rust", "typescript"],
18
+ "bin": {
19
+ "emp": "./bin/emp.js"
20
+ },
21
+ "main": "dist/index.js",
22
+ "module": "dist/index.js",
23
+ "types": "dist/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "import": {
27
+ "default": "./dist/index.js",
28
+ "types": "./dist/index.d.ts"
29
+ },
30
+ "require": {
31
+ "default": "./dist/index.js",
32
+ "types": "./dist/index.d.ts"
33
+ }
34
+ },
35
+ "./emp-tsconfig.json": "./emp-tsconfig.json"
36
+ },
37
+ "scripts": {
38
+ "d": "rimraf dist && pnpm run esdev:build",
39
+ "b": "rimraf dist && pnpm run esbuild:build",
40
+ "dev": "rimraf dist && pnpm run /^esdev:.*/",
41
+ "esdev:build": "cross-env ENV=dev node esbuild.js",
42
+ "esdev:tsc": "tsc -w",
43
+ "esdev:tsc-alias": "tsc-alias -w",
44
+ "build": "rimraf dist && pnpm run /^esbuild:.*/",
45
+ "esbuild:build": "cross-env ENV=prod node esbuild.js",
46
+ "esbuild:tsc": "tsc && tsc-alias",
47
+ "dts": "node dts-bundle.js"
48
+ },
49
+ "engines": {
50
+ "node": ">=20.0.0"
51
+ },
52
+ "author": "Ken",
53
+ "devDependencies": {
54
+ "@types/compression": "^1.7.2",
55
+ "@types/cors": "^2.8.12",
56
+ "@types/default-gateway": "^7.2.1",
57
+ "@types/express": "^4.17.13",
58
+ "@types/fs-extra": "^11.0.4",
59
+ "@types/node": "^20.8.7",
60
+ "@types/react": "^18.3.2",
61
+ "@types/watchpack": "^2.4.3",
62
+ "@types/webpack": "^5.28.4",
63
+ "@types/webpack-bundle-analyzer": "^4.6.2",
64
+ "@types/webpack-hot-middleware": "^2.25.9",
65
+ "@types/webpack-sources": "^3.2.2",
66
+ "cross-env": "^7.0.3",
67
+ "esbuild": "^0.19.5",
68
+ "rimraf": "^5.0.5",
69
+ "tsc-alias": "^1.8.8"
70
+ },
71
+ "dependencies": {
72
+ "@module-federation/enhanced": "^0.1.12",
73
+ "@rspack/core": "0.6.5",
74
+ "@rspack/dev-server": "0.6.5",
75
+ "@swc/helpers": "^0.5.11",
76
+ "address": "^2.0.2",
77
+ "ansi-html-community": "^0.0.8",
78
+ "chalk": "^5.3.0",
79
+ "commander": "^11.1.0",
80
+ "compression": "^1.7.4",
81
+ "core-js": "^3.37.0",
82
+ "cors": "^2.8.5",
83
+ "default-gateway": "^7.2.2",
84
+ "express": "^4.18.2",
85
+ "fs-extra": "^11.2.0",
86
+ "glob": "^10.3.15",
87
+ "gzip-size": "^7.0.0",
88
+ "html-webpack-plugin": "^5.6.0",
89
+ "less-loader": "^12.2.0",
90
+ "open": "^10.1.0",
91
+ "sass-embedded": "^1.77.2",
92
+ "sass-loader": "^14.2.1",
93
+ "strip-ansi": "^7.1.0",
94
+ "typescript-plugin-css-modules": "^5.1.0",
95
+ "webpack-bundle-analyzer": "^4.10.2",
96
+ "webpack-chain": "^6.5.1"
97
+ }
98
+ }
Binary file
Binary file
Binary file
Binary file
@@ -5,6 +5,9 @@
5
5
  <title>
6
6
  <%= htmlWebpackPlugin.options.title %>
7
7
  </title>
8
+ <% for (let i in htmlWebpackPlugin.options.tags.headTags) { %>
9
+ <%= htmlWebpackPlugin.options.tags.headTags[i] %>
10
+ <% } %>
8
11
  </head>
9
12
 
10
13
  <body>