@moneko/core 3.39.0-beta.0 → 3.39.0-beta.1

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/lib/dev.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{exec as e,spawn as t}from"node:child_process";import{watchFile as o}from"node:fs";import{extname as r,relative as s,sep as i}from"node:path";import{ink as n,loadFile as l,print as a,println as c,progressBar as m}from"@moneko/utils";import p from"fastify";import d from"webpack";import f from"webpack-hot-middleware";import{merge as h}from"webpack-merge";import{diffObject as g}from"./commom/diff-object.mjs";import u from"./commom/mime.mjs";import y from"./commom/open.mjs";import w,{config_files as v}from"./commom/paths.mjs";import x from"./commom/sigint-exit.mjs";import{devLog as $,getServerAddress as b,PORT as k}from"./dev/config.mjs";import C from"./dev/mock.mjs";import{setupProxy as j}from"./dev/proxy.mjs";import P from"./options/reslove.mjs";import S from"./plugin/eslint.mjs";import _ from"./plugin/stylelint.mjs";import{empty as A}from"./utils/index.mjs";import{commonConfig as z}from"./common.mjs";import{CONFIG as T,getConfig as E,PUBLICPATH as I}from"./config.mjs";import{outputFileSystem as O}from"./file-system.mjs";import H from"./module.config.mjs";import{isLibrary as B,isReact as M,refresh as R}from"./process-env.mjs";let q=`${I.endsWith("/")?"":"/"}__hmr__`,U=new URLSearchParams({name:"client",path:q,dynamicPublicPath:!0,timeout:2e3,reload:!R,quiet:!0,noInfo:!0,overlay:!1,autoConnect:!0}).toString(),F=h(z,{watchOptions:{ignored:/node_modules\/(?!(@app|@moneko)).+/},entry:{main:[`${P.hotMiddlewareClient}?${U}`]},module:H(!1),plugins:[new d.HotModuleReplacementPlugin,new d.WatchIgnorePlugin({paths:[/node_modules\/(?!(@app|@moneko)).+/,/\.d\.ts$/]})]});if(F.plugins||(F.plugins=[]),M){let e=(await import("@pmmmwh/react-refresh-webpack-plugin")).default;F.plugins.push(new e({overlay:!1}))}function L(e){let t=e.join(","),o=[s(w.programPath,`${T.alias["@"]}/**/*.{${t}}`).replace(/\\/g,"/")];return B&&o.push(s(w.programPath,`${T.alias["@pkg"]}/**/*.{${t}}`).replace(/\\/g,"/")),o}T.eslint&&F.plugins.push(new S({fix:!0,cache:!0,cacheLocation:`${w.lintCachePath}/.eslintcache`,cacheStrategy:"metadata",files:L(["js","jsx","ts","tsx","json","html","vue"]),...T.eslint})),T.stylelint&&F.plugins.push(new _({fix:!0,cache:!0,cacheLocation:`${w.lintCachePath}/.stylelintcache`,files:L(["css","scss","sass","less","ts","tsx","js","jsx"]),...T.stylelint}));let N=!1,D="/____progress____",G={percentage:0,info:""};if(T.bar){let e=T.bar,t=e.name||"Build";F.plugins.push(new d.ProgressPlugin({handler(o,r,...s){let i=s.length?`[${r}] ${s.join(" ")}`:" ";N||(G.info=i,G.percentage=o,N=1===o),e.quiet?process.stdout.write(`${i}
2
- `):(m(o||0,1,{msg:i,name:t,barColor:e.barColor,nameColor:e.nameColor,barBgColor:e.barBgColor,msgColor:e.msgColor}),1===o&&process.stdout.write("\r\x1b[2K"))}}))}let W=d(F);W.outputFileSystem=O;let K=W.watch(W.options.watchOptions,$);W.hooks.done.tap("client-log",e=>{$(null,e)});let X={};if(T.devServer.https){let[e,t]=await Promise.all([l(T.devServer.https.key),l(T.devServer.https.cert)]);e||(c(n(`法加载私钥。请检查路径和文件是否存在,并确保路径正确:${T.devServer.https.key}`,"red")),process.exit(1)),t||(c(n(`无法加载证书。请检查路径和文件是否存在,并确保路径正确:${T.devServer.https.cert}`,"red")),process.exit(1)),X.http2=!0,X.https={key:e,cert:t}}let Y=f(W,{log:!1,path:q,heartbeat:2e3}),J=p({logger:!1,...X});C(J,{directory:w.mockPath}),j(J,T.proxy);let Q={"Access-Control-Allow-Credentials":"true","Access-Control-Allow-Headers":"DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization","Access-Control-Allow-Methods":"GET, POST, OPTIONS, DELETE, PATCH, PUT","Access-Control-Allow-Origin":"*","Cache-Control":"no-store, no-cache, must-revalidate, proxy-revalidate",Pragma:"no-cache",Expires:"0",...T.devServer.headers||{}};function V(e,t,o){t.headers(Q),e.headers.origin&&t.header("Access-Control-Allow-Origin",e.headers.origin);let s=W.outputFileSystem,i=e.headers["accept-encoding"],n=i?.includes("gzip"),l=s.existsSync?.(`${o}.gz`);n&&l&&t.header("content-encoding","gzip");let a=s.createReadStream?.(n&&l?`${o}.gz`:o,{autoClose:!0});a?.on("error",e=>{if(a.destroy(),!t.sent)return t.code(404).type("text/html").send(`File not found: ${e.message}`)});let c=u[r(o)];return c&&t.header("content-type",c),t.send(a)}function Z(){process.exit(0)}J.get(D,(e,t)=>{t.headers(Q),t.send(G)}),J.get(`/${q}`.replace("//","/"),async(e,t)=>{if("text/event-stream"===e.headers.accept){e.raw.url=q,Y(e.raw,t.raw,()=>{t.raw.writableEnded&&(t.sent=!0)});return}}),J.addHook("onRequest",(e,t,o)=>{if(e.url===D)return o();if(!N)return t.type("text/html").send(function(e){let t=Math.floor(100*e.percentage);return`<!DOCTYPE html><html><head><title>Building...</title><link rel="image/x-icon" href="/favicon.ico"><style>html{ display:flex; justify-content:center; align-items:center; block-size:100vb;}.progress-container{ position:relative; overflow:hidden; margin:1rem auto; border:0.0625rem solid #ccc; border-radius:0.625rem; inline-size:18.75rem; block-size:1.25rem;}.progress-bar{ block-size:100%; background:#4caf50; inline-size:0%; transition:inline-size 0.5s ease;}#progress-text{ position:absolute; margin:auto; font-size:0.875rem; font-family:sans-serif; font-weight:600; text-align:center; color:#fff; text-shadow:0 0 0.0625rem black; inset-inline:0; inset-block:0; line-height:1.25rem;}#progress-info{ font-size:small; font-family:sans-serif; font-weight:100; text-align:center; opacity:0.5; margin-block-start:0.625rem;}</style></head><body><div class="progress-container"><div class="progress-bar"></div><div id="progress-text">${t}%</div></div><div id="progress-info">${e.info}</div><script>function checkProgress() {fetch('${D}').then(r => r.json()) .then(data => {const percentage = Math.floor(data.percentage * 100);document.querySelector('.progress-bar').style.width = percentage + '%';document.getElementById('progress-text').textContent = percentage + '%';document.getElementById('progress-info').textContent = data.info;if (percentage === 100) {window.location.reload();} else {setTimeout(checkProgress, 500);}});}checkProgress();</script></body></html>`}(G)),o();let r=decodeURIComponent(`${W.options.output.path}${i}${"/"===e.url?"index.html":e.url}`);return W.outputFileSystem?.existsSync?.(r)?V(e,t,r):o()}),J.setNotFoundHandler((e,t)=>V(e,t,`${W.options.output.path}${i}index.html`)),J.addHook("onClose",()=>{K.close(A),J.server.close(A)}),J.listen({port:k}),T.devServer.open&&y(b("local"));let ee=await Promise.all(v.map(E)),et=h(ee[0]||{},ee[1]||{});v.forEach(function(t){o(t,async function(){let[o,r]=await Promise.all(v.map(E)),s=h(o||{},r||{}),i=g(et,s);1===Object.keys(i).length&&"proxy"in i?(a(n(`代理更新中...`,"yellow"),!0),await j(J,s.proxy),a(n(`代理更新完成...`,"green"),!0),T.proxy=s.proxy,et.proxy=s.proxy,et=s):(et=s,c(n(`检测到工程配置${n(`[${t}]`,"blue")}变更, 程序即将重启...`,"yellow"),!0),e(eo?`netstat -ano | findstr :${k}`:`lsof -i :${k} -t`,(e,t)=>{if(e){c(n(`查找端口 ${k} 时发生错误: ${e.message}`,"red")),c(n("请尝试手动重启程序","yellow"));return}let o=t.trim().replace(/\r\n/g,"\n").split("\n").filter(Boolean),r=eo?o[0]?.split(/\s+/).pop()?.trim():o[0]?.trim();if(!r){c(n(`未找到占用端口 ${k} 的进程, 请尝试手动重启程序`,"yellow"));return}try{process.kill(Number(r),"SIGHUP")}catch(e){c(n(`终止进程 ${r} 时发生错误: ${e.message}`,"red"))}}))})});let eo="win32"===process.platform;process.on("SIGHUP",function(){J.close(A),function(){let e=t(process.argv[0],process.argv.slice(1),{detached:!1,stdio:"inherit"});e.unref(),e.on("close",Z)}()}),process.on("exit",function(){J.close(A)}),x(Z);
1
+ import{exec as e,spawn as t}from"node:child_process";import{watchFile as o}from"node:fs";import{extname as r,relative as s,sep as i}from"node:path";import{ink as n,loadFile as l,print as a,println as c,progressBar as m}from"@moneko/utils";import p from"fastify";import d from"webpack";import f from"webpack-hot-middleware";import{merge as h}from"webpack-merge";import{diffObject as g}from"./commom/diff-object.mjs";import u from"./commom/mime.mjs";import y from"./commom/open.mjs";import w,{config_files as v}from"./commom/paths.mjs";import x from"./commom/sigint-exit.mjs";import{devLog as b,getServerAddress as $,PORT as k}from"./dev/config.mjs";import C from"./dev/mock.mjs";import{setupProxy as j}from"./dev/proxy.mjs";import P from"./options/reslove.mjs";import S from"./plugin/eslint.mjs";import _ from"./plugin/stylelint.mjs";import{empty as A}from"./utils/index.mjs";import{commonConfig as z}from"./common.mjs";import{CONFIG as T,getConfig as E,PUBLICPATH as I}from"./config.mjs";import{outputFileSystem as O}from"./file-system.mjs";import H from"./module.config.mjs";import{isLibrary as B,isReact as M,refresh as R}from"./process-env.mjs";let q=`${I.endsWith("/")?"":"/"}__hmr__`,U=new URLSearchParams({name:"client",path:q,dynamicPublicPath:!0,timeout:2e3,reload:!R,quiet:!0,noInfo:!0,overlay:!1,autoConnect:!0}).toString(),F=h(z,{watchOptions:{ignored:/node_modules\/(?!(@app|@moneko)).+/},entry:{main:[`${P.hotMiddlewareClient}?${U}`]},module:H(!1),plugins:[new d.HotModuleReplacementPlugin,new d.WatchIgnorePlugin({paths:[/node_modules\/(?!(@app|@moneko)).+/,/\.d\.ts$/]})]});if(F.plugins||(F.plugins=[]),M){let e=(await import("@pmmmwh/react-refresh-webpack-plugin")).default;F.plugins.push(new e({overlay:!1}))}function L(e){let t=e.join(","),o=[s(w.programPath,`${T.alias["@"]}/**/*.{${t}}`).replace(/\\/g,"/")];return B&&o.push(s(w.programPath,`${T.alias["@pkg"]}/**/*.{${t}}`).replace(/\\/g,"/")),o}T.eslint&&F.plugins.push(new S({fix:!0,cache:!0,cacheLocation:`${w.lintCachePath}/.eslintcache`,cacheStrategy:"metadata",files:L(["js","jsx","ts","tsx","json","html","vue"]),...T.eslint})),T.stylelint&&F.plugins.push(new _({fix:!0,cache:!0,cacheLocation:`${w.lintCachePath}/.stylelintcache`,files:L(["css","scss","sass","less","ts","tsx","js","jsx"]),...T.stylelint}));let N=!1,D="/____progress____",G={percentage:0,info:""};if(T.bar){let e=T.bar,t=e.name||"Build";F.plugins.push(new d.ProgressPlugin({handler(o,r,...s){let i=s.length?`[${r}] ${s.join(" ")}`:" ";N||(G.info=i,G.percentage=o,N=1===o),e.quiet?process.stdout.write(`${i}
2
+ `):(m(o||0,1,{msg:i,name:t,barColor:e.barColor,nameColor:e.nameColor,barBgColor:e.barBgColor,msgColor:e.msgColor}),1===o&&process.stdout.write("\r\x1b[2K"))}}))}let W=d(F);W.outputFileSystem=O;let K=W.watch(W.options.watchOptions,b);W.hooks.done.tap("client-log",e=>{b(null,e)});let X={};if(T.devServer.https){let[e,t]=await Promise.all([l(T.devServer.https.key),l(T.devServer.https.cert)]);e||(c(n(`法加载私钥。请检查路径和文件是否存在,并确保路径正确:${T.devServer.https.key}`,"red")),process.exit(1)),t||(c(n(`无法加载证书。请检查路径和文件是否存在,并确保路径正确:${T.devServer.https.cert}`,"red")),process.exit(1)),X.http2=!0,X.https={key:e,cert:t}}let Y=f(W,{log:!1,path:q,heartbeat:2e3}),J=p({logger:!1,...X});C(J,{directory:w.mockPath}),j(J,T.proxy);let Q={"Access-Control-Allow-Credentials":"true","Access-Control-Allow-Headers":"DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization","Access-Control-Allow-Methods":"GET, POST, OPTIONS, DELETE, PATCH, PUT","Access-Control-Allow-Origin":"*","Cache-Control":"no-store, no-cache, must-revalidate, proxy-revalidate",Pragma:"no-cache",Expires:"0",...T.devServer.headers||{}};function V(e,t,o){t.headers(Q),e.headers.origin&&t.header("Access-Control-Allow-Origin",e.headers.origin);let s=W.outputFileSystem,i=e.headers["accept-encoding"],n=i?.includes("br"),l=`${o}.${n?"br":"gz"}`,a=s.existsSync?.(l);a&&t.header("content-encoding",n?"br":"gzip");let c=s.createReadStream?.(a?l:o,{autoClose:!0});c?.on("error",e=>{if(c.destroy(),!t.sent)return t.code(404).type("text/html").send(`File not found: ${e.message}`)});let m=u[r(o)];return m&&t.header("content-type",m),t.send(c)}function Z(){process.exit(0)}J.get(D,(e,t)=>{t.headers(Q),t.send(G)}),J.get(`/${q}`.replace("//","/"),async(e,t)=>{if("text/event-stream"===e.headers.accept){e.raw.url=q,Y(e.raw,t.raw,()=>{t.raw.writableEnded&&(t.sent=!0)});return}}),J.addHook("onRequest",(e,t,o)=>{if(e.url===D)return o();if(!N)return t.type("text/html").send(function(e){let t=Math.floor(100*e.percentage);return`<!DOCTYPE html><html><head><title>Building...</title><link rel="image/x-icon" href="/favicon.ico"><style>html{ display:flex; justify-content:center; align-items:center; block-size:100vb;}.progress-container{ position:relative; overflow:hidden; margin:1rem auto; border:0.0625rem solid #ccc; border-radius:0.625rem; inline-size:18.75rem; block-size:1.25rem;}.progress-bar{ block-size:100%; background:#4caf50; inline-size:0%; transition:inline-size 0.5s ease;}#progress-text{ position:absolute; margin:auto; font-size:0.875rem; font-family:sans-serif; font-weight:600; text-align:center; color:#fff; text-shadow:0 0 0.0625rem black; inset-inline:0; inset-block:0; line-height:1.25rem;}#progress-info{ font-size:small; font-family:sans-serif; font-weight:100; text-align:center; opacity:0.5; margin-block-start:0.625rem;}</style></head><body><div class="progress-container"><div class="progress-bar"></div><div id="progress-text">${t}%</div></div><div id="progress-info">${e.info}</div><script>function checkProgress() {fetch('${D}').then(r => r.json()) .then(data => {const percentage = Math.floor(data.percentage * 100);document.querySelector('.progress-bar').style.width = percentage + '%';document.getElementById('progress-text').textContent = percentage + '%';document.getElementById('progress-info').textContent = data.info;if (percentage === 100) {window.location.reload();} else {setTimeout(checkProgress, 500);}});}checkProgress();</script></body></html>`}(G)),o();let r=decodeURIComponent(`${W.options.output.path}${i}${"/"===e.url?"index.html":e.url}`);return W.outputFileSystem?.existsSync?.(r)?V(e,t,r):o()}),J.setNotFoundHandler((e,t)=>V(e,t,`${W.options.output.path}${i}index.html`)),J.addHook("onClose",()=>{K.close(A),J.server.close(A)}),J.listen({port:k}),T.devServer.open&&y($("local"));let ee=await Promise.all(v.map(E)),et=h(ee[0]||{},ee[1]||{});v.forEach(function(t){o(t,async function(){let[o,r]=await Promise.all(v.map(E)),s=h(o||{},r||{}),i=g(et,s);1===Object.keys(i).length&&"proxy"in i?(a(n(`代理更新中...`,"yellow"),!0),await j(J,s.proxy),a(n(`代理更新完成...`,"green"),!0),T.proxy=s.proxy,et.proxy=s.proxy,et=s):(et=s,c(n(`检测到工程配置${n(`[${t}]`,"blue")}变更, 程序即将重启...`,"yellow"),!0),e(eo?`netstat -ano | findstr :${k}`:`lsof -i :${k} -t`,(e,t)=>{if(e){c(n(`查找端口 ${k} 时发生错误: ${e.message}`,"red")),c(n("请尝试手动重启程序","yellow"));return}let o=t.trim().replace(/\r\n/g,"\n").split("\n").filter(Boolean),r=eo?o[0]?.split(/\s+/).pop()?.trim():o[0]?.trim();if(!r){c(n(`未找到占用端口 ${k} 的进程, 请尝试手动重启程序`,"yellow"));return}try{process.kill(Number(r),"SIGHUP")}catch(e){c(n(`终止进程 ${r} 时发生错误: ${e.message}`,"red"))}}))})});let eo="win32"===process.platform;process.on("SIGHUP",function(){J.close(A),function(){let e=t(process.argv[0],process.argv.slice(1),{detached:!1,stdio:"inherit"});e.unref(),e.on("close",Z)}()}),process.on("exit",function(){J.close(A)}),x(Z);
@@ -4,11 +4,12 @@ type Source = sources.Source;
4
4
  interface CompressionPluginOptions {
5
5
  test: RegExp;
6
6
  algorithm: 'gzip' | 'brotli';
7
- filename: string;
8
7
  }
9
8
  declare class CompressionPlugin {
10
9
  private name: string;
11
- private options: CompressionPluginOptions;
10
+ private options: CompressionPluginOptions & {
11
+ filename: string;
12
+ };
12
13
  constructor(options: CompressionPluginOptions);
13
14
  private runCompressionAlgorithm(input: Buffer): Buffer;
14
15
  async compress(compiler: Compiler, compilation: Compilation, assets: Record<string, Source>);
@@ -1 +1 @@
1
- import{compression as e}from"@moneko/utils";export default class{constructor(e){this.name="compression-plugin";let{test:t,algorithm:s="brotli",filename:o}=e||{};this.options={test:t,algorithm:s,filename:o||`[path][base].${"brotli"===s?"br":"gz"}`}}runCompressionAlgorithm(t){return Buffer.from(e(Buffer.isBuffer(t)?Array.from(t):t,this.options.algorithm))}async compress(e,t,s){let o=t.getCache(this.name),{RawSource:i}=e.webpack.sources;await Promise.all(Object.keys(s).map(async s=>{let r;let a="gzip"===this.options.algorithm?"gzipped":`${this.options.algorithm}ed`,{info:m,source:l}=t.getAsset(s);if(m.compressed||!e.webpack.ModuleFilenameHelpers.matchObject.bind(void 0,this.options)(s)||m.related&&m.related[a])return!1;let p=o.getItemCache(JSON.stringify({name:s,algorithm:this.options.algorithm}),o.getLazyHashedEtag(l)),n=await p.getPromise()||{};if(!n.source){if("function"==typeof l.buffer)r=l.buffer();else{let e=l.source();r=Buffer.isBuffer(e)?e:Buffer.from(e)}if(!n.compressed&&r)try{n.compressed=this.runCompressionAlgorithm(r)}catch(e){t.errors.push(e);return}n.compressed&&(n.source=new i(n.compressed)),await p.storePromise(n)}let c=t.getPath(this.options.filename,{filename:s}),f={compressed:!0};m.immutable&&/(\[name]|\[base]|\[file])/.test(this.options.filename)&&(f.immutable=!0),t.updateAsset(s,l,{related:{[a]:c}}),t.emitAsset(c,n.source,f)}))}apply(e){let t=this.constructor.name;e.hooks.thisCompilation.tap(t,s=>{s.hooks.processAssets.tapPromise({name:t,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,additionalAssets:!0},t=>this.compress(e,s,t))})}}
1
+ import{compression as e}from"@moneko/utils";export default class{constructor(e){this.name="compression-plugin";let{test:t,algorithm:s="brotli"}=e||{};this.options={test:t,algorithm:s,filename:`[path][base].${"brotli"===s?"br":"gz"}`}}runCompressionAlgorithm(t){return Buffer.from(e(Buffer.isBuffer(t)?Array.from(t):t,this.options.algorithm))}async compress(e,t,s){let o=t.getCache(this.name),{RawSource:i}=e.webpack.sources;await Promise.all(Object.keys(s).map(async s=>{let r;let a="gzip"===this.options.algorithm?"gzipped":`${this.options.algorithm}ed`,{info:m,source:l}=t.getAsset(s);if(m.compressed||!e.webpack.ModuleFilenameHelpers.matchObject.bind(void 0,this.options)(s)||m.related&&m.related[a])return!1;let p=o.getItemCache(JSON.stringify({name:s,algorithm:this.options.algorithm}),o.getLazyHashedEtag(l)),n=await p.getPromise()||{};if(!n.source){if("function"==typeof l.buffer)r=l.buffer();else{let e=l.source();r=Buffer.isBuffer(e)?e:Buffer.from(e)}if(!n.compressed&&r)try{n.compressed=this.runCompressionAlgorithm(r)}catch(e){t.errors.push(e);return}n.compressed&&(n.source=new i(n.compressed)),await p.storePromise(n)}let c=t.getPath(this.options.filename,{filename:s}),f={compressed:!0};m.immutable&&/(\[name]|\[base]|\[file])/.test(this.options.filename)&&(f.immutable=!0),t.updateAsset(s,l,{related:{[a]:c}}),t.emitAsset(c,n.source,f)}))}apply(e){let t=this.constructor.name;e.hooks.thisCompilation.tap(t,s=>{s.hooks.processAssets.tapPromise({name:t,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,additionalAssets:!0},t=>this.compress(e,s,t))})}}
@@ -1 +1 @@
1
- import e from"webpack";import t from"./plugin/compression.mjs";import{CopyPlugin as i}from"./plugin/copy.mjs";import{HtmlPlugin as o}from"./plugin/html-plugin.mjs";import r from"./plugin/module-federation.mjs";import{VirtualModuleWebpackPlugin as l}from"./plugin/virtual-module.mjs";import{CONFIG as n}from"./config.mjs";import{isDev as p,packageJson as a}from"./process-env.mjs";let s=[...r,new l(n.virtualModule),new i(n.copy),new e.DefinePlugin({"process.env":JSON.stringify(n.env)}),new e.IgnorePlugin({resourceRegExp:/\/(__(tests|mocks)__|test|spec|e2e)\//}),...n.plugins,p&&new t({filename:"[path][base].gz",algorithm:"gzip",test:/\.(js|css|html|svg)$/})].filter(Boolean);if(n.htmlPluginOption){let e={charset:"UTF-8","X-UA-Compatible":{"http-equiv":"X-UA-Compatible",content:"IE=edge,Chrome=1"},HandheldFriendly:"true",MobileOptimized:"320","screen-orientation":"portrait","x5-orientation":"portrait",browsermode:"application","x5-page-mode":"app","msapplication-tap-highlight":"no","mobile-web-app-capable":"yes",renderer:"webkit",description:a.description,keywords:Array.isArray(a.keywords)?a.keywords.toString():"","http-equiv":"refresh",viewport:"width=device-width, initial-scale=1"};n.seo&&(e.relCanonical={rel:"canonical",href:`https://${n.seo.domain}${n.basename}`}),n.htmlPluginOption.meta&&Object.assign(e,n.htmlPluginOption.meta),s.push(new o({...n.htmlPluginOption,meta:e}))}if(n.fixBrowserRouter){let e=n.basename.split("/").filter(Boolean).length,t=`${Array(e).fill("..").join("/")+(e?"/":"")}404.html`,i=n.fixBrowserRouter.pathSegmentsToKeep??e;s.push(new o({filename:n.fixBrowserRouter.path??t,inject:!1,templateContent:()=>`<html lang="en"><head><title>Redirect</title><script>const pathKeep = ${i};const l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>`}))}n.sourceMap&&s.push(new e.SourceMapDevToolPlugin(n.sourceMap));export default s;
1
+ import e from"webpack";import t from"./plugin/compression.mjs";import{CopyPlugin as i}from"./plugin/copy.mjs";import{HtmlPlugin as o}from"./plugin/html-plugin.mjs";import r from"./plugin/module-federation.mjs";import{VirtualModuleWebpackPlugin as l}from"./plugin/virtual-module.mjs";import{CONFIG as n}from"./config.mjs";import{isDev as p,packageJson as s}from"./process-env.mjs";let a=[...r,new l(n.virtualModule),new i(n.copy),new e.DefinePlugin({"process.env":JSON.stringify(n.env)}),new e.IgnorePlugin({resourceRegExp:/\/(__(tests|mocks)__|test|spec|e2e)\//}),...n.plugins,p&&new t({algorithm:"gzip",test:/\.(js|css|html|svg)$/}),p&&new t({algorithm:"brotli",test:/\.(js|css|html|svg)$/})].filter(Boolean);if(n.htmlPluginOption){let e={charset:"UTF-8","X-UA-Compatible":{"http-equiv":"X-UA-Compatible",content:"IE=edge,Chrome=1"},HandheldFriendly:"true",MobileOptimized:"320","screen-orientation":"portrait","x5-orientation":"portrait",browsermode:"application","x5-page-mode":"app","msapplication-tap-highlight":"no","mobile-web-app-capable":"yes",renderer:"webkit",description:s.description,keywords:Array.isArray(s.keywords)?s.keywords.toString():"","http-equiv":"refresh",viewport:"width=device-width, initial-scale=1"};n.seo&&(e.relCanonical={rel:"canonical",href:`https://${n.seo.domain}${n.basename}`}),n.htmlPluginOption.meta&&Object.assign(e,n.htmlPluginOption.meta),a.push(new o({...n.htmlPluginOption,meta:e}))}if(n.fixBrowserRouter){let e=n.basename.split("/").filter(Boolean).length,t=`${Array(e).fill("..").join("/")+(e?"/":"")}404.html`,i=n.fixBrowserRouter.pathSegmentsToKeep??e;a.push(new o({filename:n.fixBrowserRouter.path??t,inject:!1,templateContent:()=>`<html lang="en"><head><title>Redirect</title><script>const pathKeep = ${i};const l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>`}))}n.sourceMap&&a.push(new e.SourceMapDevToolPlugin(n.sourceMap));export default a;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "3.39.0-beta.0",
3
+ "version": "3.39.0-beta.1",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",