@moneko/core 3.55.2-beta.2 → 3.55.3-beta.0

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/bin/build.mjs CHANGED
@@ -1 +1 @@
1
- import{join as o}from"node:path";import{argv as t,exit as e}from"node:process";import{ink as s,println as i,removeDir as r}from"@moneko/utils";import m from"../commom/setup-env.mjs";import{cwd as n,swcCachePath as l}from"./utils/config.mjs";import{getSwcOption as p}from"./utils/setup-swcrc.mjs";import{lesscCommonjs as c}from"./lessc.mjs";import d from"./tsc.mjs";async function a(){let a=t[3],j=t[4],u=t.slice(5);a||(i(s(`type: 无效值 ${s(a,"245")}`,"red")),e(1));let f=!u.includes("no-docs"),x=!u.includes("no-lib"),y=!u.includes("no-es"),_=!u.includes("no-dts"),g=u.filter(o=>!["no-docs","no-es","no-lib"].includes(o));if(await m("production",a,j,g),"library"===a){let t="solid"===j?await import("@moneko/convert/solid"):await import("@moneko/convert"),{CONFIG:e}=await import("../config.mjs"),s="swc"===e.dts,i=[x&&{type:"commonjs",dir:"lib",msg:"Convert to CommonJS"},y&&{type:"es6",dir:"es",msg:"Convert to ES Module"}].filter(Boolean);for(let m=0,a=i.length;m<a;m++){if(r(o(n,`./${i[m].dir}`)),"react"===j){let o=p();"es6"===i[m].type&&(o.jsc.target="es2015"),o.jsc.experimental.emitIsolatedDts=_&&s,o.jsc.experimental.cacheRoot=l,o.module.type=i[m].type,t.convert({outDir:i[m].dir,inputDir:"components",ignore:[/^.*\/__*__\//,/\.test\.(js|ts)x?$/,/\.DS_Store/,/\.mdx?$/,/^.*\/examples\//,/\.d\.(cj|mj|j|t|ct|mt)sx?$/],options:o})}else if("solid"===j){let o={jsxOptions:e.jsxDomExpressions,presetEnvOption:{modules:"commonjs"}};"es6"===i[m].type&&(o.presetEnvOption.modules=!1),t.convertSolid({outDir:i[m].dir,inputDir:"components",ignore:[/^.*\/__*__\//,/\.test\.(js|ts)x?$/,/\.DS_Store/,/\.mdx?$/,/^.*\/examples\//,/\.d\.(cj|mj|j|t|ct|mt)sx?$/],options:o})}"commonjs"===i[m].type&&c(),_&&!s&&d(i[m].dir)}}if("library"!==a||f&&"library"===a)try{await import("../build.mjs")}catch(o){i(s(Error(o).message,"red")),e(1)}}export default a;
1
+ import{join as o}from"node:path";import{argv as t,exit as e}from"node:process";import{ink as s,println as i,removeDir as r}from"@moneko/utils";import m from"../commom/setup-env.mjs";import{cwd as n,swcCachePath as l}from"./utils/config.mjs";import{getSwcOption as p}from"./utils/setup-swcrc.mjs";import{lesscCommonjs as c}from"./lessc.mjs";import d from"./tsc.mjs";async function a(){let a=t[3],j=t[4],u=t.slice(5);a||(i(s(`type: 无效值 ${s(a,"245")}`,"red")),e(1));let f=!u.includes("no-docs"),x=!u.includes("no-lib"),y=!u.includes("no-es"),_=!u.includes("no-dts"),g=u.filter(o=>!["no-docs","no-es","no-lib"].includes(o));if(await m("production",a,j,g),"library"===a){let t="solid"===j?await import("@moneko/convert/solid"):await import("@moneko/convert"),{CONFIG:e}=await import("../config.mjs"),s="swc"===e.dts,i=[x&&{type:"commonjs",dir:"lib",msg:"Convert to CommonJS"},y&&{type:"es6",dir:"es",msg:"Convert to ES Module"}].filter(Boolean);for(let m=0,a=i.length;m<a;m++){if(r(o(n,`./${i[m].dir}`)),"react"===j){let o=await p();"es6"===i[m].type&&(o.jsc.target="es2015"),o.jsc.experimental.emitIsolatedDts=_&&s,o.jsc.experimental.cacheRoot=l,o.module.type=i[m].type,t.convert({outDir:i[m].dir,inputDir:"components",ignore:[/^.*\/__*__\//,/\.test\.(js|ts)x?$/,/\.DS_Store/,/\.mdx?$/,/^.*\/examples\//,/\.d\.(cj|mj|j|t|ct|mt)sx?$/],options:o})}else if("solid"===j){let o={jsxOptions:e.jsxDomExpressions,presetEnvOption:{modules:"commonjs"}};"es6"===i[m].type&&(o.presetEnvOption.modules=!1),t.convertSolid({outDir:i[m].dir,inputDir:"components",ignore:[/^.*\/__*__\//,/\.test\.(js|ts)x?$/,/\.DS_Store/,/\.mdx?$/,/^.*\/examples\//,/\.d\.(cj|mj|j|t|ct|mt)sx?$/],options:o})}"commonjs"===i[m].type&&c(),_&&!s&&d(i[m].dir)}}if("library"!==a||f&&"library"===a)try{await import("../build.mjs")}catch(o){i(s(Error(o).message,"red")),e(1)}}export default a;
package/lib/bin/lessc.mjs CHANGED
@@ -1 +1 @@
1
- import{exec as e}from"node:child_process";import{join as o}from"node:path";import{loadFile as s,saveFile as t,scanFolderSync as r}from"@moneko/utils";import i from"../commom/require.mjs";import{runtimePath as l}from"./utils/config.mjs";let m="";function n(s){let t=o(i.resolve("less"),"../bin/lessc");return new Promise((o,r)=>{e(`${l} ${t} --js ${m} ${s} > ${s.replace(/\.less$/g,".css")}`,function(e){if(e)return r(e);o(!0)})})}let a=/\*?\.less/g;async function c(e){let o=await s(e);o&&a.test(o)&&await t(e,o.replace(a,".css"))}export async function lesscCommonjs(){let e=r("lib",["\\.less$"]),o=(await import("../options/modify-vars.mjs")).default;for(let e in o)Object.hasOwnProperty.call(o,e)&&(m+=`--modify-var="${e}=${o[e]}" `);Promise.all(e.map(n)),e.length&&Promise.all(r("lib",["\\.js$"]).map(c))}
1
+ import{exec as e}from"node:child_process";import{join as o}from"node:path";import{loadFile as s,saveFile as t,scanFolderSync as l}from"@moneko/utils";import r from"../commom/require.mjs";import{runtimePath as i}from"./utils/config.mjs";let m="";function n(s){let t=o(r.resolve("less"),"../bin/lessc");return new Promise((o,l)=>{e(`${i} ${t} --js ${m} ${s} > ${s.replace(/\.less$/g,".css")}`,function(e){if(e)return l(e);o(!0)})})}let a=/\*?\.less/g;async function c(e){let o=await s(e);o&&a.test(o)&&await t(e,o.replace(a,".css"))}export async function lesscCommonjs(){let e=l("lib",["\\.less$"]),o=(await import("../options/modify-vars.mjs")).default;for(let e in o)Object.hasOwnProperty.call(o,e)&&(m+=`--modify-var="${e}=${o[e]}" `);Promise.allSettled(e.map(n)),e.length&&Promise.allSettled(l("lib",["\\.js$"]).map(c))}
package/lib/bin/pin.mjs CHANGED
@@ -1 +1 @@
1
- import{spawn as e}from"node:child_process";import{relative as t}from"node:path";import{fileExists as n,ink as a,println as r,progressBar as o,updateFile as l}from"@moneko/utils";import s from"../commom/parse-args.mjs";import c from"../commom/paths.mjs";import i from"../commom/require.mjs";let p=i.resolve(`${process.cwd()}/package.json`);async function m(t){return new Promise(n=>{let a=e("npm",["view",t,"version"],{shell:!0}),r="";a.stdout.on("data",e=>{r+=e}),a.stderr.on("data",e=>{let t=e.toString().split("\n").filter(e=>e.includes("GET http")).map(e=>e.split(" - ")[0].trim());t.length&&(r+=`Err: ${t[0]}`.trim())}),a.on("close",async()=>{n(r.trim())})})}async function d(e,t){let n={...e};return o(t.done.length,t.total,{name:"Checking"}),await Promise.all(Object.keys(n).map(async e=>{let a=await m(e);t.done.includes(e)||t.done.push(e),o(t.done.length,t.total,{name:"Checking",msg:`${t.done.length} / ${t.total}`}),n[e]=a})),n}let u={major:"red",minor:"yellow",patch:"cyan",equal:"white"};async function h(e,t,n,a){if(e[t]){var r;let o=await d(e[t],a),l=(r=e[t],Object.keys(o).filter(e=>{let t=$(r[e]);return r[e]!==`${t[0]}${o[e]}`}).map(e=>{let t=$(r[e]),n=o[e].includes("Err:"),a=n?"red":u[function(e,t){let n=e.split("."),a=t.split(".");return n[0]!==a[0]?"major":n[1]!==a[1]?"minor":n[2]!==a[2]?"patch":"equal"}(t[1],o[e])];return{name:e,wanted:r[e],latest:`${t[0]}${o[e].replace("Err:","")}`,color:a,err:n?o[e]:void 0}}));l.length&&(n[t]=l)}}function g(e,t,n){return e.reduce((e,a)=>Math.max(e,t[a].reduce((e,t)=>Math.max(e,t[n]?.length??0),0)),0)}function $(e){let t=e.match(/^([^\d]*)(.*)$/);return t?[t[1],t[2]]:["",e]}async function f(){let e=s(process.argv),o=(delete i.cache[p],i(p)),m={done:[],total:Object.keys({...o.peerDependencies||{},...o.optionalDependencies||{},...o.devDependencies||{},...o.dependencies||{}}).length},d={};if(r(""),await Promise.all([h(o,"peerDependencies",d,m),h(o,"optionalDependencies",d,m),h(o,"devDependencies",d,m),h(o,"dependencies",d,m)]),r(""),Object.keys(d)?.length>0){var u;let s=(u=o.packageManager)?u.split("@")[0]:n(`${c.programPath}/pnpm-lock.yaml`)?"pnpm":n(`${c.programPath}/yarn.lock`)?"yarn":n(`${c.programPath}/bun.lockb`)?"bun":n(`${c.programPath}/deno.lock`)?"deno":"npm",i=Object.keys(d),m="".padEnd(3," ");r(""),r(a("⚡ Updates available for:","magenta",{bold:!0})),r("");let h=g(i,d,"name"),$=g(i,d,"latest"),f=g(i,d,"wanted");i.forEach(e=>{r(a(`${e}:`,"145")),d[e].forEach(t=>{r(`${a(t.name.padEnd(h," "),t.color,{bold:!0})}${m}${t.wanted.padStart(f," ")}${m}${a("→",t.color)}${m}${a(t.latest.padStart($," "),t.color)}`),t.err||(o[e][t.name]=t.latest)}),r("")}),e["-u"]?(await l(p,JSON.stringify(o,null,2)),r(`✅ ${a(t(c.programPath,p),"yellow")} upgrade completed successfully.`),r(`⏳ Run ${a(`${s} install`,"blue")} to install new versions.`)):r(`⏳ Run ${a("mo pin -u","blue")} to upgrade package.json`)}else r(""),r("🎉 All dependencies match the latest package versions");r("")}export default f;
1
+ import{spawn as e}from"node:child_process";import{relative as t}from"node:path";import{fileExists as n,ink as a,println as r,progressBar as o,updateFile as l}from"@moneko/utils";import s from"../commom/parse-args.mjs";import c from"../commom/paths.mjs";import i from"../commom/require.mjs";let p=i.resolve(`${process.cwd()}/package.json`);async function m(t){return new Promise(n=>{let a=e("npm",["view",t,"version"],{shell:!0}),r="";a.stdout.on("data",e=>{r+=e}),a.stderr.on("data",e=>{let t=e.toString().split("\n").filter(e=>e.includes("GET http")).map(e=>e.split(" - ")[0].trim());t.length&&(r+=`Err: ${t[0]}`.trim())}),a.on("close",async()=>{n(r.trim())})})}async function d(e,t){let n={...e};return o(t.done.length,t.total,{name:"Checking"}),await Promise.allSettled(Object.keys(n).map(async e=>{let a=await m(e);t.done.includes(e)||t.done.push(e),o(t.done.length,t.total,{name:"Checking",msg:`${t.done.length} / ${t.total}`}),n[e]=a})),n}let u={major:"red",minor:"yellow",patch:"cyan",equal:"white"};async function h(e,t,n,a){if(e[t]){var r;let o=await d(e[t],a),l=(r=e[t],Object.keys(o).filter(e=>{let t=$(r[e]);return r[e]!==`${t[0]}${o[e]}`}).map(e=>{let t=$(r[e]),n=o[e].includes("Err:"),a=n?"red":u[function(e,t){let n=e.split("."),a=t.split(".");return n[0]!==a[0]?"major":n[1]!==a[1]?"minor":n[2]!==a[2]?"patch":"equal"}(t[1],o[e])];return{name:e,wanted:r[e],latest:`${t[0]}${o[e].replace("Err:","")}`,color:a,err:n?o[e]:void 0}}));l.length&&(n[t]=l)}}function g(e,t,n){return e.reduce((e,a)=>Math.max(e,t[a].reduce((e,t)=>Math.max(e,t[n]?.length??0),0)),0)}function $(e){let t=e.match(/^([^\d]*)(.*)$/);return t?[t[1],t[2]]:["",e]}async function f(){let e=s(process.argv),o=(delete i.cache[p],i(p)),m={done:[],total:Object.keys({...o.peerDependencies||{},...o.optionalDependencies||{},...o.devDependencies||{},...o.dependencies||{}}).length},d={};if(r(""),await Promise.allSettled([h(o,"peerDependencies",d,m),h(o,"optionalDependencies",d,m),h(o,"devDependencies",d,m),h(o,"dependencies",d,m)]),r(""),Object.keys(d)?.length>0){var u;let s=(u=o.packageManager)?u.split("@")[0]:n(`${c.programPath}/pnpm-lock.yaml`)?"pnpm":n(`${c.programPath}/yarn.lock`)?"yarn":n(`${c.programPath}/bun.lockb`)?"bun":n(`${c.programPath}/deno.lock`)?"deno":"npm",i=Object.keys(d),m="".padEnd(3," ");r(""),r(a("⚡ Updates available for:","magenta",{bold:!0})),r("");let h=g(i,d,"name"),$=g(i,d,"latest"),f=g(i,d,"wanted");i.forEach(e=>{r(a(`${e}:`,"145")),d[e].forEach(t=>{r(`${a(t.name.padEnd(h," "),t.color,{bold:!0})}${m}${t.wanted.padStart(f," ")}${m}${a("→",t.color)}${m}${a(t.latest.padStart($," "),t.color)}`),t.err||(o[e][t.name]=t.latest)}),r("")}),e["-u"]?(await l(p,JSON.stringify(o,null,2)),r(`✅ ${a(t(c.programPath,p),"yellow")} upgrade completed successfully.`),r(`⏳ Run ${a(`${s} install`,"blue")} to install new versions.`)):r(`⏳ Run ${a("mo pin -u","blue")} to upgrade package.json`)}else r(""),r("🎉 All dependencies match the latest package versions");r("")}export default f;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{spawnSync as t}from"node:child_process";import{join as e}from"node:path";import{argv as o,cwd as i,exit as r,stdout as n}from"node:process";import{ESLint as l}from"@moneko/eslint";import{stylelint as a}from"@moneko/stylelint";import{ink as m,loadFile as c,println as s}from"@moneko/utils";import d from"../commom/log.mjs";import f from"../commom/parse-args.mjs";import p from"../commom/timer.mjs";let y=f(o.slice(2)),h=y.fix,u=y.cache||!0,w=e(i(),"node_modules/.cache"),g={ci:["diff","--name-only","HEAD^","HEAD"],commit:["diff","--cached","--name-only","--diff-filter=ACM"]},S=/.*(?<!\.d)\.(j|t|mj|mt|cj|ct)sx?$/,$=/.*(?<!\.d)\.vue$/,E=/.*(?<!\.d)\.(c|sc|sa|le)ss$/,j=t("git",g[y.mode||"ci"]||g.ci).stdout.toString().trim().split("\n");async function L(){let t=m("ESLint","cyan");s(`${t}: ${m("runing...","yellow")}`,!0);try{p.start("ESLint");let t=j.filter(t=>S.test(t)||$.test(t));if(0===t.length)return void p.end("ESLint");let e=new l({cache:u,cacheLocation:`${w}/.eslintcache`,fix:h}),o=await e.lintFiles(t),i=await e.loadFormatter("stylish"),a=await i.format(o);h&&await l.outputFixes(o),a&&n.write(a);let m=o.some(t=>t.errorCount>0);p.end("ESLint"),m&&r(1)}catch(t){d(t)}}let v=j.filter(t=>E.test(t)||$.test(t));async function k(){let t=m("Stylelint","cyan");if(s(`${t}: ${m("runing...","yellow")}`,!0),p.start("Stylelint"),0===v.length)return void p.end("Stylelint");let e=await Promise.all(v.map(async t=>{let e=await c(t);return await a.lint({codeFilename:t,code:e,cache:u,cacheLocation:`${w}/.stylelintcache`,fix:h,formatter:"string"}).catch(d)})),o=!1;e.forEach(t=>{t&&(t.report&&n.write(t.report),t.errored&&(o=!!t.errored))}),p.end("Stylelint"),o&&r(1)}await Promise.all([L(),k()]);
2
+ import{spawnSync as t}from"node:child_process";import{join as e}from"node:path";import{argv as o,cwd as i,exit as r,stdout as l}from"node:process";import{ESLint as n}from"@moneko/eslint";import{stylelint as a}from"@moneko/stylelint";import{ink as m,loadFile as s,println as c}from"@moneko/utils";import d from"../commom/log.mjs";import f from"../commom/parse-args.mjs";import u from"../commom/timer.mjs";let p=f(o.slice(2)),y=p.fix,h=p.cache||!0,w=e(i(),"node_modules/.cache"),S={ci:["diff","--name-only","HEAD^","HEAD"],commit:["diff","--cached","--name-only","--diff-filter=ACM"]},g=/.*(?<!\.d)\.(j|t|mj|mt|cj|ct)sx?$/,v=/.*(?<!\.d)\.vue$/,$=/.*(?<!\.d)\.(c|sc|sa|le)ss$/,E=t("git",S[p.mode||"ci"]||S.ci).stdout.toString().trim().split("\n");async function j(){let t=m("ESLint","cyan");c(`${t}: ${m("runing...","yellow")}`,!0);try{u.start("ESLint");let t=E.filter(t=>g.test(t)||v.test(t));if(0===t.length)return void u.end("ESLint");let e=new n({cache:h,cacheLocation:`${w}/.eslintcache`,fix:y}),o=await e.lintFiles(t),i=await e.loadFormatter("stylish"),a=await i.format(o);y&&await n.outputFixes(o),a&&l.write(a);let m=o.some(t=>t.errorCount>0);u.end("ESLint"),m&&r(1)}catch(t){d(t)}}let L=E.filter(t=>$.test(t)||v.test(t));async function k(){let t=m("Stylelint","cyan");if(c(`${t}: ${m("runing...","yellow")}`,!0),u.start("Stylelint"),0===L.length)return void u.end("Stylelint");let e=await Promise.allSettled(L.map(async t=>{let e=await s(t);return await a.lint({codeFilename:t,code:e,cache:h,cacheLocation:`${w}/.stylelintcache`,fix:y,formatter:"string"}).catch(d)})),o=!1;e.forEach(t=>{"fulfilled"===t.status?t.value&&(t.value.report&&l.write(t.value.report),t.value.errored&&(o=!!t.value.errored)):t.reason&&(l.write(t.reason),o=!1)}),u.end("Stylelint"),o&&r(1)}await Promise.allSettled([j(),k()]);
@@ -1 +1 @@
1
- import e from"../../commom/require.mjs";import{cwd as o}from"./config.mjs";export function getSwcOption(){return{module:{type:"es6"},minify:!0,jsc:{minify:{format:{comments:!1},ecma:2015,compress:{drop_console:!0,drop_debugger:!0,global_defs:{"@alert":"console.log"},pure_funcs:["console.log","console.warn","console.error","console.info"],ecma:2015,toplevel:!1,module:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,top_retain:[],keep_infinity:!0},mangle:!0},parser:{syntax:"typescript",decorators:!0,dynamicImport:!0,tsx:!0},loose:!0,target:"es2022",transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:"automatic",throwIfNamespace:!0,useBuiltins:!0,refresh:!0,development:!1}},experimental:{plugins:[[e.resolve("@moneko/raw-import"),{rootDir:o}]].filter(Boolean)}},sourceMaps:!0,exclude:["__tests__/","examples/","\\.d\\.ts$"]}}
1
+ import{swcImportOnDemandConfig as e}from"../../commom/transfer-import-on-demand.mjs";import o from"../../options/reslove.mjs";import{cwd as r}from"./config.mjs";export async function getSwcOption(){let{CONFIG:t}=await import("../../config.mjs");return{module:{type:"es6"},minify:!0,jsc:{minify:{format:{comments:!1},ecma:2015,compress:{drop_console:!0,drop_debugger:!0,global_defs:{"@alert":"console.log"},pure_funcs:["console.log","console.warn","console.error","console.info"],ecma:2015,toplevel:!1,module:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,top_retain:[],keep_infinity:!0},mangle:!0},parser:{syntax:"typescript",decorators:!0,dynamicImport:!0,tsx:!0},loose:!0,target:"es2022",transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:"automatic",throwIfNamespace:!0,useBuiltins:!0,refresh:!1,development:!1}},experimental:{plugins:[[o.rawImport,{rootDir:r}],[o.transformImports,e(t.importOnDemand||{})]].filter(Boolean)}},sourceMaps:!0,exclude:["__tests__/","examples/","\\.d\\.ts$"]}}
package/lib/commom/ca.mjs CHANGED
@@ -1 +1 @@
1
- import{exec as t}from"node:child_process";import{join as e,relative as r}from"node:path";import{platform as o}from"node:process";import{promisify as i}from"node:util";import{fileExists as a,generateCert as n,loadFile as l,normalCertificateAuthority as c,println as s,saveFile as m}from"@moneko/utils";import u from"./log.mjs";import{getIPv4 as f}from"./net.mjs";import p from"./paths.mjs";let d=i(t);async function y(t){try{if("darwin"===o){let{stdout:e}=await d(`security find-certificate -c "${t}" -a`);return e.length>0}if("win32"===o){let{stdout:e}=await d(`certutil -store -user Root | findstr /C:"${t}"`);return e.length>0}}catch(t){u(t)}return!1}function h(t,e,r){if(t&&!r.includes("already exists"))return void u(t)}export function installCA(e){return"darwin"===o?t(`sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "${e}"`,h):"win32"===o?t(`certutil -addstore -user "Root" "${e}"`,h):void s(`⚠️ 暂不支持自动安装 CA 的平台: ${o}`)}export async function setupCert(t="localhost",o=!0){let i=r(p.programPath,`${p.corePath}/cert/cert.pem`),s=r(p.programPath,`${p.corePath}/cert/key.pem`),u=!a(i)||!a(s);if(u){let t=c();await Promise.all([m(i,t.cert),m(s,t.key)])}o&&(!await y("Local Root Certificate Authority - Moneko")||u)&&installCA(i);let d=e(p.CA_DIR,`${t}_cert.pem`),h=e(p.CA_DIR,`${t}_key.pem`);if(u||!a(d)||!a(h)){let e=await Promise.all([l(i),l(s)]),r=n(e[0],e[1],[...new Set([t,"localhost","127.0.0.1",f()].filter(Boolean))]);await Promise.all([m(d,r.cert),m(h,r.key)])}let w=await Promise.all([l(d),l(h)]);return{cert:w[0],key:w[1]}}
1
+ import{exec as t}from"node:child_process";import{join as e,relative as r}from"node:path";import{platform as o}from"node:process";import{promisify as i}from"node:util";import{fileExists as a,generateCert as l,loadFile as n,normalCertificateAuthority as c,println as s,saveFile as m}from"@moneko/utils";import u from"./log.mjs";import{getIPv4 as d}from"./net.mjs";import f from"./paths.mjs";let p=i(t);async function y(t){try{if("darwin"===o){let{stdout:e}=await p(`security find-certificate -c "${t}" -a`);return e.length>0}if("win32"===o){let{stdout:e}=await p(`certutil -store -user Root | findstr /C:"${t}"`);return e.length>0}}catch(t){u(t)}return!1}function h(t,e,r){if(t&&!r.includes("already exists"))return void u(t)}export function installCA(e){return"darwin"===o?t(`sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "${e}"`,h):"win32"===o?t(`certutil -addstore -user "Root" "${e}"`,h):void s(`⚠️ 暂不支持自动安装 CA 的平台: ${o}`)}export async function setupCert(t="localhost",o=!0){let i=r(f.programPath,`${f.corePath}/cert/cert.pem`),s=r(f.programPath,`${f.corePath}/cert/key.pem`),u=!a(i)||!a(s);if(u){let t=c();await Promise.allSettled([m(i,t.cert),m(s,t.key)])}o&&(!await y("Local Root Certificate Authority - Moneko")||u)&&installCA(i);let p=e(f.CA_DIR,`${t}_cert.pem`),h=e(f.CA_DIR,`${t}_key.pem`);if(u||!a(p)||!a(h)){let e=await Promise.all([n(i),n(s)]),r=l(e[0],e[1],[...new Set([t,"localhost","127.0.0.1",d()].filter(Boolean))]);await Promise.allSettled([m(p,r.cert),m(h,r.key)])}let w=await Promise.all([n(p),n(h)]);return{cert:w[0],key:w[1]}}
@@ -0,0 +1 @@
1
+ export function swcImportOnDemandConfig(e){for(let t=0,n=Object.keys(e),r=n.length;t<r;t++)e[n[t]]?(e[n[t]].transform=`${n[t]}/${e[n[t]].transform}`,e[n[t]].style&&(e[n[t]].style=`${n[t]}/${e[n[t]].style}`)):delete e[n[t]];return e}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports,t={get custom(){return i},get default(){return c}};for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:Object.getOwnPropertyDescriptor(t,r).get});const o=require("node:path"),s=new(require("node:worker_threads")).Worker((0,o.join)(__dirname,"../worker/react-compiler.mjs"));function n(e,t){let r=this.resourcePath,o=this.getOptions();if(r.endsWith(".d.ts")||!("annotation"===o.compilationMode?e.includes("use memo")||e.includes("use forget"):e.includes("react")||r.endsWith(".tsx")||r.endsWith(".jsx")))return e;let n=this.async();this._compiler?.options.mode!=="development"&&this._compiler?.hooks.done.tap("react-compiler-loader",()=>{s.terminate()}),this.cacheable&&this.cacheable(),s.postMessage({sourceCode:e,filename:r,inputSourceMap:t,options:o}),s.on("message",e=>{r===e[0]&&n(e[1],e[2],e[3])})}function i(e,t){return n.bind(this,e,t)}s.setMaxListeners(0);const c=n;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=exports,t={get custom(){return i},get default(){return c}};for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:Object.getOwnPropertyDescriptor(t,r).get});const s=require("node:path"),o=new(require("node:worker_threads")).Worker((0,s.join)(__dirname,"../worker/react-compiler.mjs"));function n(e,t){let r=this.resourcePath,s=this.getOptions();if(r.endsWith(".d.ts")||r.endsWith(".json")||!("annotation"===s.compilationMode?e.includes("use memo")||e.includes("use forget"):e.includes("react")||r.endsWith(".tsx")||r.endsWith(".jsx")))return e;let n=this.async();this._compiler?.options.mode!=="development"&&this._compiler?.hooks.done.tap("react-compiler-loader",()=>{o.terminate()}),this.cacheable&&this.cacheable(),o.postMessage({sourceCode:e,filename:r,inputSourceMap:t,options:s}),o.on("message",e=>{r===e[0]&&n(e[1],e[2],e[3])})}function i(e,t){return n.bind(this,e,t)}o.setMaxListeners(0);const c=n;
@@ -1 +1 @@
1
- import e from"../commom/has-pkg.mjs";import o from"../commom/require.mjs";let r={styleLoader:o.resolve("style-loader"),sassLoader:e("sass-loader"),lessLoader:o.resolve("less-loader"),swcLoader:o.resolve("swc-loader"),transformImports:e("@moneko/transform-imports"),hotMiddlewareClient:o.resolve("webpack-hot-middleware/client.js")};export default r;
1
+ import e from"../commom/has-pkg.mjs";import o from"../commom/require.mjs";let r={styleLoader:o.resolve("style-loader"),sassLoader:e("sass-loader"),lessLoader:o.resolve("less-loader"),swcLoader:o.resolve("swc-loader"),transformImports:e("@moneko/transform-imports"),rawImport:e("@moneko/raw-import"),hotMiddlewareClient:o.resolve("webpack-hot-middleware/client.js")};export default r;
@@ -1 +1 @@
1
- import{merge as e}from"webpack-merge";import r from"../commom/paths.mjs";import{CONFIG as o}from"../config.mjs";import t,{coreJsVersion as s}from"../polyfills/polyfills.mjs";import{isDev as m,isReact as c,jsxImportSource as p}from"../process-env.mjs";let a={include:t(),mode:"entry",coreJs:s};export default((t,s={})=>e({module:{type:"es6",resolveFully:!0},sync:!0,jsc:{parser:{syntax:"typescript",tsx:c,decorators:!0,dynamicImport:!0},loose:!0,target:o.polyfill?void 0:"es2017",externalHelpers:!1,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:o.reactJsxRuntime||"automatic",throwIfNamespace:!0,refresh:c&&m,development:m,importSource:p},optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:r.swcCachePath}},env:o.polyfill?a:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof o.swcrc?o.swcrc(m):o.swcrc||{},s));
1
+ import{merge as e}from"webpack-merge";import r from"../commom/paths.mjs";import{swcImportOnDemandConfig as o}from"../commom/transfer-import-on-demand.mjs";import{CONFIG as t}from"../config.mjs";import m,{coreJsVersion as s}from"../polyfills/polyfills.mjs";import{isDev as p,isReact as a,jsxImportSource as i}from"../process-env.mjs";import c from"./reslove.mjs";let l={include:m(),mode:"entry",coreJs:s};export default((m,s={})=>e({module:{type:"es6",resolveFully:!0},sync:!0,jsc:{parser:{syntax:"typescript",tsx:a,decorators:!0,dynamicImport:!0},loose:!0,target:t.polyfill?void 0:"es2017",externalHelpers:!1,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:t.reactJsxRuntime||"automatic",throwIfNamespace:!0,refresh:a&&p,development:p,importSource:i},optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:r.swcCachePath,plugins:[[c.transformImports,o(t.importOnDemand||{})]].filter(Boolean)}},env:t.polyfill?l:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof t.swcrc?t.swcrc(p):t.swcrc||{},s));
@@ -1 +1 @@
1
- import{compression as e}from"@moneko/utils";export class CompressionPlugin{constructor(e){this.name="compression-plugin";let{test:s,algorithm:t="brotli"}=e||{};this.options={test:s,algorithm:t,filename:`[path][base].${"brotli"===t?"br":"gz"}`}}runCompressionAlgorithm(s){return Buffer.from(e(Buffer.isBuffer(s)?Array.from(s):s,this.options.algorithm))}async compress(e,s,t){let o=s.getCache(this.name),{RawSource:i}=e.webpack.sources;await Promise.all(Object.keys(t).map(async t=>{let r,a="gzip"===this.options.algorithm?"gzipped":`${this.options.algorithm}ed`,{info:m,source:p}=s.getAsset(t);if(m.compressed||!e.webpack.ModuleFilenameHelpers.matchObject.bind(void 0,this.options)(t)||m.related&&m.related[a])return!1;let n=o.getItemCache(JSON.stringify(`${t}${this.options.algorithm}`),o.getLazyHashedEtag(p)),l=await n.getPromise()||{};if(!l.source){if("function"==typeof p.buffer)r=p.buffer();else{let e=p.source();r=Buffer.isBuffer(e)?e:Buffer.from(e)}if(!l.compressed&&r)try{l.compressed=this.runCompressionAlgorithm(r)}catch(e){s.errors.push(e);return}l.compressed&&(l.source=new i(l.compressed)),await n.storePromise(l)}let f=s.getPath(this.options.filename,{filename:t}),c={compressed:!0};m.immutable&&/(\[name]|\[base]|\[file])/.test(this.options.filename)&&(c.immutable=!0),s.updateAsset(t,p,{related:{[a]:f}}),s.emitAsset(f,l.source,c)}))}apply(e){let s=this.name;e.hooks.thisCompilation.tap(s,t=>{t.hooks.processAssets.tapPromise({name:s,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,additionalAssets:!0},s=>this.compress(e,t,s))})}}
1
+ import{compression as e}from"@moneko/utils";export class CompressionPlugin{constructor(e){this.name="CompressionPlugin";let{test:s,algorithm:t="brotli"}=e||{};this.options={test:s,algorithm:t,filename:`[path][base].${"brotli"===t?"br":"gz"}`}}runCompressionAlgorithm(s){return Buffer.from(e(Buffer.isBuffer(s)?Array.from(s):s,this.options.algorithm))}async compress(e,s,t){let o=s.getCache(this.name),{RawSource:i}=e.webpack.sources;await Promise.allSettled(Object.keys(t).map(async t=>{let r,a="gzip"===this.options.algorithm?"gzipped":`${this.options.algorithm}ed`,{info:m,source:n}=s.getAsset(t);if(m.compressed||!e.webpack.ModuleFilenameHelpers.matchObject.bind(void 0,this.options)(t)||m.related&&m.related[a])return!1;let p=o.getItemCache(JSON.stringify(`${t}${this.options.algorithm}`),o.getLazyHashedEtag(n)),l=await p.getPromise()||{};if(!l.source){if("function"==typeof n.buffer)r=n.buffer();else{let e=n.source();r=Buffer.isBuffer(e)?e:Buffer.from(e)}if(!l.compressed&&r)try{l.compressed=this.runCompressionAlgorithm(r)}catch(e){s.errors.push(e);return}l.compressed&&(l.source=new i(l.compressed)),await p.storePromise(l)}let f=s.getPath(this.options.filename,{filename:t}),c={compressed:!0};m.immutable&&/(\[name]|\[base]|\[file])/.test(this.options.filename)&&(c.immutable=!0),s.updateAsset(t,n,{related:{[a]:f}}),s.emitAsset(f,l.source,c)}))}apply(e){let s=this.name;e.hooks.thisCompilation.tap(s,t=>{t.hooks.processAssets.tapPromise({name:s,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,additionalAssets:!0},s=>this.compress(e,t,s))})}}
@@ -1 +1 @@
1
- import{statSync as e}from"node:fs";import{resolve as t}from"node:path";import{loadFileRaw as s,scanFolderSync as i}from"@moneko/utils";import o from"webpack";import a from"../commom/log.mjs";let l="CopyPlugin",r=o.sources.RawSource;export class CopyPlugin{constructor(e){this.cacheFiles=[],this.fileTimestamps=new Map,this.baseFiles=new Set(e.files?.map(e=>t(e))||[]),this.dirs=new Set(e.dirs||[])}getFiles(){let e=new Set(this.baseFiles);for(let t of this.dirs)i(t,["\\.*"]).forEach(t=>e.add(t));let t={deleted:[],files:[...e]};for(let s of new Set(this.cacheFiles))e.has(s)||t.deleted.push(s);return this.cacheFiles=t.files,t}hasFileChanged(t){try{let s=e(t).mtimeMs,i=this.fileTimestamps.get(t)||0;return this.fileTimestamps.set(t,s),s>i}catch(e){return a(e),!0}}apply(e){e.hooks.thisCompilation.tap({name:l,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},e=>{let t=e.getCache(l);e.hooks.processAssets.tapPromise(l,async()=>{let i=this.getFiles();await Promise.all(i.files.map(async i=>{let o=this.hasFileChanged(i),a=t.getItemCache(i,null),l=await a.getPromise();if(l&&!o)return void e.emitAsset(i,l.source);let m=await s(i);if(null!==m){let t=new r(Buffer.from(m));await a.storePromise({source:t,timestamp:this.fileTimestamps.get(i)}),e.emitAsset(i,t)}})),i.deleted.forEach(t=>{e.deleteAsset(t),this.fileTimestamps.delete(t)})})})}}
1
+ import{statSync as e}from"node:fs";import{resolve as t}from"node:path";import{loadFileRaw as s,scanFolderSync as i}from"@moneko/utils";import l from"webpack";import o from"../commom/log.mjs";let a="CopyPlugin",r=l.sources.RawSource;export class CopyPlugin{constructor(e){this.cacheFiles=[],this.fileTimestamps=new Map,this.baseFiles=new Set(e.files?.map(e=>t(e))||[]),this.dirs=new Set(e.dirs||[])}getFiles(){let e=new Set(this.baseFiles);for(let t of this.dirs)i(t,["\\.*"]).forEach(t=>e.add(t));let t={deleted:[],files:[...e]};for(let s of new Set(this.cacheFiles))e.has(s)||t.deleted.push(s);return this.cacheFiles=t.files,t}hasFileChanged(t){try{let s=e(t).mtimeMs,i=this.fileTimestamps.get(t)||0;return this.fileTimestamps.set(t,s),s>i}catch(e){return o(e),!0}}apply(e){e.hooks.thisCompilation.tap({name:a,stage:e.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},e=>{let t=e.getCache(a);e.hooks.processAssets.tapPromise(a,async()=>{let i=this.getFiles();await Promise.allSettled(i.files.map(async i=>{let l=this.hasFileChanged(i),o=t.getItemCache(i,null),a=await o.getPromise();if(a&&!l)return void e.emitAsset(i,a.source);let m=await s(i);if(null!==m){let t=new r(Buffer.from(m));await o.storePromise({source:t,timestamp:this.fileTimestamps.get(i)}),e.emitAsset(i,t)}})),i.deleted.forEach(t=>{e.deleteAsset(t),this.fileTimestamps.delete(t)})})})}}
@@ -1 +1 @@
1
- import{join as e,parse as t,resolve as o}from"node:path";import{fileURLToPath as s}from"node:url";import{Worker as i}from"node:worker_threads";import{loadFile as r}from"@moneko/utils";import a from"webpack";import n from"../utils/create-types.mjs";let m="ModuleFederationExposesDeclarationPlugin";export class ModuleFederationExposesDeclarationPlugin{constructor(e){this.name="ModuleFederationExposesDeclarationPlugin",this.assetName="module-federation.d.ts",this.dts="",this.option=e,this.worker=new i(s(new URL("../worker/dts.mjs",import.meta.url))),this.worker.setMaxListeners(0),this.worker.postMessage({options:{compilerOptions:{outFile:this.assetName},include:Object.values(e.exposes)}}),this.worker.once("message",e=>{this.dts=e,this.worker.terminate()})}apply(s){let{exposes:i}=this.option,p=Object.keys(i).map(e=>{let t=e.replace(/\.tsx?$/i,"");return{key:e,name:t,path:o(`types/${this.option.name}/${t}.d.ts`),originPath:i[e]}});s.hooks.thisCompilation.tap({name:m,stage:s.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},o=>{o.hooks.processAssets.tapPromise(m,async()=>{let s=p.map(async o=>{if(null!==await r(o.originPath)){let s=t(o.originPath);return`${n(e(this.option.name,o.name),`export * from '${t(s.dir).name}/${s.name}'`)}`}return""}),i=await Promise.all(s);i.unshift(this.dts),o.emitAsset("module-federation.d.ts",new a.sources.RawSource(i.join("\n")),{javascriptModule:!1})})})}}
1
+ import{join as e,parse as t,resolve as o}from"node:path";import{fileURLToPath as s}from"node:url";import{Worker as i}from"node:worker_threads";import{loadFile as r}from"@moneko/utils";import a from"webpack";import n from"../utils/create-types.mjs";export class ModuleFederationExposesDeclarationPlugin{constructor(e){this.name="ModuleFederationExposesDeclarationPlugin",this.assetName="module-federation.d.ts",this.dts="",this.option=e,this.worker=new i(s(new URL("../worker/dts.mjs",import.meta.url))),this.worker.setMaxListeners(0),this.worker.postMessage({options:{compilerOptions:{outFile:this.assetName},include:Object.values(e.exposes)}}),this.worker.once("message",e=>{this.dts=e,this.worker.terminate()})}apply(s){let{exposes:i}=this.option,m=Object.keys(i).map(e=>{let t=e.replace(/\.tsx?$/i,"");return{key:e,name:t,path:o(`types/${this.option.name}/${t}.d.ts`),originPath:i[e]}});s.hooks.thisCompilation.tap({name:this.name,stage:s.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},o=>{o.hooks.processAssets.tapPromise(this.name,async()=>{let s=m.map(async o=>{if(null!==await r(o.originPath)){let s=t(o.originPath);return`${n(e(this.option.name,o.name),`export * from '${t(s.dir).name}/${s.name}'`)}`}return""}),i=await Promise.all(s);i.unshift(this.dts),o.emitAsset("module-federation.d.ts",new a.sources.RawSource(i.join("\n")),{javascriptModule:!1})})})}}
@@ -1 +1 @@
1
- import{Buffer as s}from"node:buffer";import{transform as e}from"lightningcss";import i from"webpack";let t=new TextEncoder,o=i.sources.RawSource,n=i.sources.SourceMapSource,a=i.ModuleFilenameHelpers.matchObject,r="lightning-css-minify",m=/\.(c|le|sc|sa)ss(?:\?.*)?$/i;export class LightningCssMinifyPlugin{constructor(s={}){let{implementation:i,...t}=s;if(i&&"function"!=typeof i.transform)throw TypeError(`[LightningCssMinifyPlugin]: implementation.transform must be an 'lightningcss' transform function. Received ${typeof i.transform}`);this.transform=i?.transform??e,this.options=t}apply(s){let e=JSON.stringify({name:r,version:"0.0.1",options:this.options});s.hooks.compilation.tap(r,s=>{s.hooks.chunkHash.tap(r,(s,i)=>i.update(e)),s.hooks.processAssets.tapPromise({name:r,stage:i.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async()=>await this.transformAssets(s)),s.hooks.statsPrinter.tap(r,s=>{s.hooks.print.for("asset.info.minimized").tap(r,(s,{green:e,formatFlag:i})=>s?e(i("minimized")):void 0)})})}async transformAssets(e){let{options:{devtool:i}}=e.compiler,{include:c,exclude:p,test:f,sourceMap:l=void 0===this.options.sourceMap?!!(i&&i.includes("source-map")):this.options.sourceMap,...u}=this.options,h=e.getCache(r),d=e.getAssets().filter(s=>!s.info.minimized&&(f||m).test(s.name)&&a({include:c,exclude:p},s.name));await Promise.all(d.map(async i=>{let a,r=h.getItemCache(JSON.stringify(i.name),h.getLazyHashedEtag(i.source)),m=await r.getPromise();if(m&&m.minimized)return void e.updateAsset(i.name,m.source,{...i.info,minimized:!0});let c=i.source.source(),p="string"==typeof c?t.encode(c):c,f=this.transform({filename:i.name,code:p,minify:!0,sourceMap:l,...u}),d=s.from(f.code),g={source:a=l?new n(d,i.name,f.map||"",c,f.map||"",!0):new o(d),minimized:!0};await r.storePromise(g),e.updateAsset(i.name,a,{...i.info,minimized:!0})}))}}
1
+ import{Buffer as s}from"node:buffer";import{transform as e}from"lightningcss";import i from"webpack";let t=new TextEncoder,o=i.sources.RawSource,n=i.sources.SourceMapSource,a=i.ModuleFilenameHelpers.matchObject,r="lightning-css-minify",m=/\.(c|le|sc|sa)ss(?:\?.*)?$/i;export class LightningCssMinifyPlugin{constructor(s={}){let{implementation:i,...t}=s;if(i&&"function"!=typeof i.transform)throw TypeError(`[LightningCssMinifyPlugin]: implementation.transform must be an 'lightningcss' transform function. Received ${typeof i.transform}`);this.transform=i?.transform??e,this.options=t}apply(s){let e=JSON.stringify({name:r,version:"0.0.1",options:this.options});s.hooks.compilation.tap(r,s=>{s.hooks.chunkHash.tap(r,(s,i)=>i.update(e)),s.hooks.processAssets.tapPromise({name:r,stage:i.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async()=>await this.transformAssets(s)),s.hooks.statsPrinter.tap(r,s=>{s.hooks.print.for("asset.info.minimized").tap(r,(s,{green:e,formatFlag:i})=>s?e(i("minimized")):void 0)})})}async transformAssets(e){let{options:{devtool:i}}=e.compiler,{include:c,exclude:p,test:f,sourceMap:l=void 0===this.options.sourceMap?!!(i&&i.includes("source-map")):this.options.sourceMap,...u}=this.options,h=e.getCache(r),d=e.getAssets().filter(s=>!s.info.minimized&&(f||m).test(s.name)&&a({include:c,exclude:p},s.name));await Promise.allSettled(d.map(async i=>{let a,r=h.getItemCache(JSON.stringify(i.name),h.getLazyHashedEtag(i.source)),m=await r.getPromise();if(m&&m.minimized)return void e.updateAsset(i.name,m.source,{...i.info,minimized:!0});let c=i.source.source(),p="string"==typeof c?t.encode(c):c,f=this.transform({filename:i.name,code:p,minify:!0,sourceMap:l,...u}),d=s.from(f.code),g={source:a=l?new n(d,i.name,f.map||"",c,f.map||"",!0):new o(d),minimized:!0};await r.storePromise(g),e.updateAsset(i.name,a,{...i.info,minimized:!0})}))}}
@@ -1 +1 @@
1
- import{minify as e}from"@swc/core";import s from"webpack";let o=s.sources.SourceMapSource;export class SwcMinifyPlugin{constructor(e){this.name="SwcMinifyPlugin",this.options={format:{comments:!1},ecma:2015,compress:{drop_console:!0,drop_debugger:!0,global_defs:{"@alert":"console.log"},pure_funcs:["console.log","console.warn","console.error","console.info"],ecma:2015,toplevel:!1,module:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,top_retain:[],keep_infinity:!0},mangle:!0,sourceMap:!0,...e}}apply(t){t.hooks.compilation.tap(this.name,t=>{t.hooks.processAssets.tapAsync({name:this.name,stage:s.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async(s,i)=>{let a=t.getCache(this.name),n=Object.keys(s).filter(e=>e.endsWith(".js")&&!e.endsWith(".min.js"));try{await Promise.all(n.map(async s=>{let i=t.getAsset(s);if(!i||i.info.minimized)return;let n=a.getItemCache(JSON.stringify(i.name),a.getLazyHashedEtag(i.source)),r=await n.getPromise();if(r&&r.minimized)return void t.updateAsset(i.name,r.source,{...i.info,minimized:!0});let c=i.source.sourceAndMap();try{let s=await e(c.source.toString().replace(/\r\n/g,"\n"),this.options),a={sources:[i.name]};s.map&&((a=JSON.parse(s.map)).sources=[i.name],delete a.sourcesContent);let r={source:new o(s.code,i.name,a||"",c.source,c.map||"",!0),minimized:!0};await n.storePromise(r),t.updateAsset(i.name,r.source,{...i.info,minimized:!0})}catch(e){t.errors.push(e)}})),i()}catch(e){i(e)}})})}}
1
+ import{minify as e}from"@swc/core";import s from"webpack";let o=s.sources.SourceMapSource;export class SwcMinifyPlugin{constructor(e){this.name="SwcMinifyPlugin",this.options={format:{comments:!1},ecma:2015,compress:{drop_console:!0,drop_debugger:!0,global_defs:{"@alert":"console.log"},pure_funcs:["console.log","console.warn","console.error","console.info"],ecma:2015,toplevel:!1,module:!1,ie8:!1,keep_classnames:void 0,keep_fnames:!1,top_retain:[],keep_infinity:!0},mangle:!0,sourceMap:!0,...e}}apply(t){t.hooks.compilation.tap(this.name,t=>{t.hooks.processAssets.tapAsync({name:this.name,stage:s.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_SIZE,additionalAssets:!0},async(s,i)=>{let a=t.getCache(this.name),n=Object.keys(s).filter(e=>e.endsWith(".js")&&!e.endsWith(".min.js"));try{await Promise.allSettled(n.map(async s=>{let i=t.getAsset(s);if(!i||i.info.minimized)return;let n=a.getItemCache(JSON.stringify(i.name),a.getLazyHashedEtag(i.source)),r=await n.getPromise();if(r&&r.minimized)return void t.updateAsset(i.name,r.source,{...i.info,minimized:!0});let c=i.source.sourceAndMap();try{let s=await e(c.source.toString().replace(/\r\n/g,"\n"),this.options),a={sources:[i.name]};s.map&&((a=JSON.parse(s.map)).sources=[i.name],delete a.sourcesContent);let r={source:new o(s.code,i.name,a||"",c.source,c.map||"",!0),minimized:!0};await n.storePromise(r),t.updateAsset(i.name,r.source,{...i.info,minimized:!0})}catch(e){t.errors.push(e)}})),i()}catch(e){i(e)}})})}}
@@ -1,2 +1,2 @@
1
1
  import{basename as e,join as t}from"node:path";import{directoryExists as a,scanFolderSync as o}from"@moneko/utils";import{watch as l}from"chokidar";import r from"../commom/log.mjs";import n from"../commom/parse-module-meta.mjs";import c from"../commom/reactive-object.mjs";import s from"../commom/require.mjs";import i from"../commom/sigint-exit.mjs";import{CONFIG as g}from"../config.mjs";import{FRAMEWORK as m,isDev as u}from"../process-env.mjs";let p={react:'import sso from "shared-store-object";',solid:'import { createEffect, createRoot, getOwner } from "solid-js";import { createStore } from "solid-js/store";'},f={react:'let storageKey="localizable.language",language=localStorage.getItem(storageKey)||navigator.language,{translation:a,...defaultLocale}=Object.assign({title:"简体中文",language:navigator.language,translation:{}},resources[language]||resources[navigator.language]),localizable=sso({lang:defaultLocale,t:a});export function setLang(a){let{translation:e,...l}=resources[a]||{};e&&(localizable.lang=l,localizable.t=e,localStorage.setItem(storageKey,l.language))}export default localizable;',solid:'let locale=createRoot(()=>{let e="localizable.language",a=localStorage.getItem(e)||navigator.language,{translation:l,...o}=Object.assign({title:"简体中文",language:navigator.language,translation:{}},resources[a]||resources[navigator.language]),[n,c]=createStore({lang:o,t:l});return createEffect(()=>{let a=resources[n.lang.language]?.translation;a&&(c("t",a),localStorage.setItem(e,n.lang.language))}),{localizable:n,setLocalizable:c,setLang:function(e){let{translation:a,...l}=resources[e]||{};a&&c("lang",l)}}},getOwner());export const setLocalizable=locale.setLocalizable;export const t=locale.localizable.t;export const lang=locale.localizable.lang;export const setLang=locale.setLang;'}[m];function d(e,t){return`${p[m]}
2
- export function template(r,n){return r.replace(/\\\${\\w+}/g,function(r){var t=r.slice(2,-1);var e=n[t];return e!==void 0?e.toString():""})}function deepFreeze(o) { const p = Reflect.ownKeys(o);for (const k of p) {const v = o[k];if ((v && typeof v === "object") || typeof v === "function") {deepFreeze(v);}}return Object.freeze(o);}export const locales = ${JSON.stringify(e)};const _res = ${JSON.stringify(t)};const resources = deepFreeze(_res);${f}`}let b=n("@app/locales");export const localesModuleName=b.file;export const locales=new c({[localesModuleName]:d([],{}),[b.pkg]:b.meta});let j={};async function v(t,a){let o=e(t).replace(/\.[^.]+$/,"");try{"deleted"===a?delete j[o]:(delete s.cache[t],Object.assign(j,{[o]:s(t).default}));let e=[],l={};for(let t in j)if(Object.prototype.hasOwnProperty.call(j,t)){let{language:a=o,title:r=a,icon:n,translation:c={}}=j[t];e.push({language:a,title:r,icon:n}),l[a]={language:a,title:r,icon:n,translation:c}}locales.setData(localesModuleName,d(e,l)),locales.setData(b.pkg,b.meta)}catch(e){r(e)}}let z=t(g.alias["@"],"./locales");if(a(z)&&!1!==g.htmlPluginOption){let e=o(z,[".ts$"]).filter(e=>!/^\..*|\.d\.ts$/.test(e));await Promise.all(e.map(e=>v(e,"added"))),u&&function(e,t){let a=l(e,{ignored:t,persistent:!0,ignoreInitial:!0});function o(){a.unwatch(e),a.close()}a.on("add",e=>{v(e,"added")}),a.on("change",e=>{v(e,"change")}),a.on("unlink",e=>{v(e,"deleted")}),a.once("ready",()=>{u||o()}),i(o)}(z,[/^\..*/,/!\.ts$/,/\.d\.ts$/])}
2
+ export function template(r,n){return r.replace(/\\\${\\w+}/g,function(r){var t=r.slice(2,-1);var e=n[t];return e!==void 0?e.toString():""})}function deepFreeze(o) { const p = Reflect.ownKeys(o);for (const k of p) {const v = o[k];if ((v && typeof v === "object") || typeof v === "function") {deepFreeze(v);}}return Object.freeze(o);}export const locales = ${JSON.stringify(e)};const _res = ${JSON.stringify(t)};const resources = deepFreeze(_res);${f}`}let b=n("@app/locales");export const localesModuleName=b.file;export const locales=new c({[localesModuleName]:d([],{}),[b.pkg]:b.meta});let j={};async function v(t,a){let o=e(t).replace(/\.[^.]+$/,"");try{"deleted"===a?delete j[o]:(delete s.cache[t],Object.assign(j,{[o]:s(t).default}));let e=[],l={};for(let t in j)if(Object.prototype.hasOwnProperty.call(j,t)){let{language:a=o,title:r=a,icon:n,translation:c={}}=j[t];e.push({language:a,title:r,icon:n}),l[a]={language:a,title:r,icon:n,translation:c}}locales.setData(localesModuleName,d(e,l)),locales.setData(b.pkg,b.meta)}catch(e){r(e)}}let z=t(g.alias["@"],"./locales");if(a(z)&&!1!==g.htmlPluginOption){let e=o(z,[".ts$"]).filter(e=>!/^\..*|\.d\.ts$/.test(e));await Promise.allSettled(e.map(e=>v(e,"added"))),u&&function(e,t){let a=l(e,{ignored:t,persistent:!0,ignoreInitial:!0});function o(){a.unwatch(e),a.close()}a.on("add",e=>{v(e,"added")}),a.on("change",e=>{v(e,"change")}),a.on("unlink",e=>{v(e,"deleted")}),a.once("ready",()=>{u||o()}),i(o)}(z,[/^\..*/,/!\.ts$/,/\.d\.ts$/])}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "3.55.2-beta.2",
3
+ "version": "3.55.3-beta.0",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
@@ -111,10 +111,10 @@
111
111
  "@moneko/convert": "1.1.3",
112
112
  "@moneko/eslint": "1.9.3",
113
113
  "@moneko/mdx": "0.1.44",
114
- "@moneko/raw-import": "0.0.3",
114
+ "@moneko/raw-import": "1.0.0",
115
115
  "@moneko/request": "1.6.2",
116
116
  "@moneko/stylelint": "1.5.0",
117
- "@moneko/transform-imports": "1.0.0",
117
+ "@moneko/transform-imports": "1.0.1",
118
118
  "@moneko/utils": "0.3.3",
119
119
  "@swc/core": "1.13.5",
120
120
  "browserslist": "4.26.2",
@@ -126,7 +126,7 @@
126
126
  "less-loader": "12.3.0",
127
127
  "lightningcss": "1.30.1",
128
128
  "marked-completed": "1.2.14",
129
- "memfs": "4.42.0",
129
+ "memfs": "4.43.0",
130
130
  "mini-css-extract-plugin": "2.9.4",
131
131
  "style-loader": "4.0.0",
132
132
  "swc-loader": "0.2.6",
@@ -141,7 +141,7 @@
141
141
  "@types/stylis": "4.2.7",
142
142
  "@types/webpack-bundle-analyzer": "4.7.0",
143
143
  "@types/webpack-hot-middleware": "2.25.10",
144
- "sass": "1.92.1",
144
+ "sass": "1.93.0",
145
145
  "sass-loader": "16.0.5",
146
146
  "solid-refresh": "0.7.5",
147
147
  "stylis": "4.3.6",
@@ -29,9 +29,10 @@ import type { CopyPluginOption } from '../lib/plugin/copy.mjs';
29
29
  import type { DonePluginOption } from '../lib/plugin/done.mjs';
30
30
  import type { ManifestPluginOption } from '../lib/plugin/manifest.mjs';
31
31
 
32
- import type { BundleAnalyzerOption } from './bundle-analyzer.d';
33
- import type { ESLintOption } from '../lib/plugin/eslint.mts';
34
- import type { StylelintOption } from '../lib/plugin/stylelint.mts';
32
+ import type { BundleAnalyzerOption } from './bundle-analyzer.d.ts';
33
+ import type { ESLintOption } from '../lib/plugin/eslint.mjs';
34
+ import type { StylelintOption } from '../lib/plugin/stylelint.mjs';
35
+ import type { SwcImportOnDemandTransform } from '../lib/commom/transfer-import-on-demand.mjs'
35
36
 
36
37
  export type { MiniCssExtractPluginOptions, SwcMinifyOptions, TerserMinifyOptions };
37
38
  export type MinifierType = 'swc' | 'terser';
@@ -688,75 +689,4 @@ export declare interface SharedConfig {
688
689
 
689
690
  export type SourceMapDevToolPluginOptions = ConstructorParameters<typeof SourceMapDevToolPlugin>[0];
690
691
 
691
- export type MemberTransformer =
692
- /** 帕斯卡拼写法(大驼峰): 所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
693
- | 'pascal_case'
694
- /** 骆驼拼写法(小驼峰): 第一个单词的首字母小写, 后续所有单词的首字母大写,然后直接连接起来,单词之间没有连接符 */
695
- | 'camel_case'
696
- /** 连字符拼写法: 各个单词或缩写之间以`-`做间隔 */
697
- | 'kebab_case'
698
- /** 破折号式: 每个单词全小写或全大写,多单词使用`-`隔开 */
699
- | 'dashed_case'
700
- /** 蛇形命名: 每个单词全小写或全大写,多单词使用`_`隔开 */
701
- | 'snake_case'
702
- /** 大写 */
703
- | 'upper_case'
704
- /** 最后大写 */
705
- | 'upper_first'
706
- /** 小写 */
707
- | 'lower_case'
708
- /** 最后小写 */
709
- | 'lower_first';
710
-
711
- export type SwcImportOnDemandTransform = Record<
712
- /** 库名 */
713
- string,
714
- {
715
- /** 要使用的库名称,而不是导入语句中指定的库名称。`${member}` 是替换的成员
716
- * @example
717
- * ```javascript
718
- * const conf = {
719
- * importOnDemand: {
720
- * 'antd': {
721
- * transform: 'es/${member}',
722
- * memberTransformers: ['dashed_case']
723
- * }
724
- * }
725
- * }
726
- * // 以下代码将会按照预期进行转换
727
- * import { Button } from 'antd';
728
- * // to
729
- * import Button from 'antd/es/button'
730
- * ```
731
- */
732
- transform: string;
733
- /** 默认值:`false`, 设置转换时需要单独导入的样式,`${member}` 是替换的成员
734
- * @example
735
- * ```javascript
736
- * const conf = {
737
- * importOnDemand: {
738
- * antd: {
739
- * transform: 'es/${member}',
740
- * style: 'es/${member}/style',
741
- * memberTransformers: ['dashed_case']
742
- * }
743
- * }
744
- * }
745
- * // 以下代码将会按照预期进行转换
746
- * import { BackTop } from 'antd';
747
- * // to
748
- * import BackTop from 'antd/es/back-top';
749
- * import 'antd/es/back-top/style';
750
- * ```
751
- */
752
- style?: string | boolean;
753
- /** 默认值:`false`, 当设置为true时,将保留 `import { Button }` 语法,而不是转换为 `import Button` */
754
- skipDefaultConversion?: boolean;
755
- /** 默认值:`true`, 当遇到会导致导入整个模块时,是否抛出 */
756
- preventFullImport?: boolean;
757
- /** 默认值:`[]`, 成员转换规则 */
758
- memberTransformers?: MemberTransformer[];
759
- }
760
- >;
761
-
762
692
  export {};