@moneko/core 4.5.3-beta.0 → 4.5.3
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 +1 -1
- package/lib/bin/changelog.mjs +3 -3
- package/lib/bin/commit-lint.mjs +1 -1
- package/lib/bin/eslint.mjs +2 -2
- package/lib/bin/lessc.mjs +1 -1
- package/lib/bin/pin.mjs +1 -1
- package/lib/bin/pure-lint.mjs +1 -1
- package/lib/bin/stylelint.mjs +2 -2
- package/lib/bin/tsc.mjs +1 -1
- package/lib/bin/utils/bundle-app.mjs +1 -1
- package/lib/bin/utils/config.mjs +1 -1
- package/lib/bin/utils/convert-react.d.mts +1 -1
- package/lib/build-dev.mjs +2 -2
- package/lib/build.mjs +2 -2
- package/lib/commom/ca.mjs +1 -1
- package/lib/commom/corepack.mjs +1 -1
- package/lib/commom/paths.d.mts +0 -10
- package/lib/commom/paths.mjs +1 -1
- package/lib/commom/rule.d.mts +2 -25
- package/lib/commom/rule.mjs +1 -1
- package/lib/common.mjs +1 -1
- package/lib/config.mjs +1 -1
- package/lib/dev/mock.mjs +1 -1
- package/lib/dev/server.mjs +1 -1
- package/lib/dev.mjs +2 -2
- package/lib/index.d.mts +1 -1
- package/lib/index.mjs +1 -1
- package/lib/module.config.mjs +1 -1
- package/lib/options/modify-vars.mjs +1 -1
- package/lib/options/split-chunk.mjs +1 -1
- package/lib/plugin/copy.mjs +1 -1
- package/lib/plugin/exposes-declararion.mjs +1 -1
- package/lib/plugin/html-plugin.mjs +1 -1
- package/lib/plugin/manifest/index.mjs +1 -1
- package/lib/plugin/module-federation.mjs +1 -1
- package/lib/plugin/override-resolve.mjs +1 -1
- package/lib/utils/dts.mjs +1 -1
- package/lib/utils/index.mjs +1 -1
- package/lib/utils/seo.mjs +2 -2
- package/lib/vm/app.mjs +1 -1
- package/lib/vm/docs.mjs +1 -1
- package/lib/vm/dts.mjs +1 -1
- package/lib/vm/example.mjs +1 -1
- package/lib/vm/generate-doc.mjs +1 -1
- package/lib/vm/locales.mjs +2 -2
- package/lib/vm/scope.mjs +1 -1
- package/lib/vm/sw.mjs +1 -1
- package/lib/worker/eslint.mjs +1 -1
- package/lib/worker/stylelint.mjs +1 -1
- package/package.json +1 -1
package/lib/bin/build.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{argv as
|
|
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{CUSTOMCONFIG as m}from"../commom/paths.mjs";import n from"../commom/setup-env.mjs";import{cwd as p,swcCachePath as c}from"./utils/config.mjs";import{getSwcOption as l}from"./utils/setup-swcrc.mjs";import{lesscCommonjs as d}from"./lessc.mjs";import a from"./tsc.mjs";export async function build(){let j=t[3],u=t[4],f=t.slice(5);j||(i(s(`type: 无效值 ${s(j,"245")}`,"red")),e(1));let x=!f.includes("no-docs"),y=!f.includes("no-lib"),_=!f.includes("no-es"),g=!f.includes("no-dts"),v=f.filter(o=>!["no-docs","no-es","no-lib"].includes(o));if(await n("production",j,u,v,!0,m),"library"===j){let t="solid"===u?await import("@moneko/convert/solid"):await import("@moneko/convert"),{CONFIG:e}=await import("../config.mjs"),s="swc"===e.dts,i=[y&&{type:"commonjs",dir:"lib",msg:"Convert to CommonJS"},_&&{type:"es6",dir:"es",msg:"Convert to ES Module"}].filter(Boolean);for(let m=0,n=i.length;m<n;m++){if(r(o(p,`./${i[m].dir}`)),"react"===u){let o=await l();"es6"===i[m].type&&(o.jsc.target="es2015"),o.jsc.experimental.emitIsolatedDts=g&&s,o.jsc.experimental.cacheRoot=c,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"===u){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&&d(),g&&!s&&a(i[m].dir)}}if("library"!==j||x&&"library"===j)try{await import("../build.mjs")}catch(o){i(s(Error(o).message,"red")),e(1)}}
|
package/lib/bin/changelog.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{execSync as t}from"node:child_process";import{
|
|
2
|
-
${t.title}`),t.logs)Object.prototype.hasOwnProperty.call(t.logs,e)&&(
|
|
1
|
+
import{execSync as t}from"node:child_process";import{join as e}from"node:path";import{argv as o}from"node:process";import{updateFileSync as r}from"@moneko/utils";import s from"../commom/log.mjs";import{cwd as i}from"./utils/config.mjs";let l={feat:"✨ Features",fix:"🐛 Bug Fixes",docs:"📚 Documentation",style:"💎 Styles",refactor:"📦 Code Refactoring",perf:"🚀 Performance Improvements",test:"🚨 Tests",build:"🛠 Builds",ci:"⚙️ Continuous Integrations",chore:"♻️ Chores",revert:"🗑 Reverts"};function a(e,o){var r=t(`git log ${e?`${e}..`:""}${o||""} --format="%H|%an|%ae|%ad|%s"`,{encoding:"utf-8"});let s=[];for(let t of r.trim().split("\n")){let[e,o,r,i,a]=t.split("|");if(a){let t=a.split(": "),n=l[t[0]];s.push({commitId:e,author:o,email:r,date:new Date(i).toLocaleString().replace(/\//g,"-"),message:n?t.slice(1).join(":"):a,type:n})}}return s}export default function n(){let l=o[3],n=["# Change log"];try{let e,o,r,s=t('git config --get remote.origin.url | sed "s/\\.git$//"').toString().trim().replace(/^git@([^:]+):(.+)$/,"https://$1/$2"),i=(e=t('git for-each-ref --sort="v:refname" --format "%(objectname) %(refname:short) %(creatordate:iso8601)" refs/tags',{encoding:"utf-8"}),o=[],(r=e.trim().split("\n")).forEach((t,e)=>{let[i,l,a]=t.split(" "),n=r[e-1]?.split(" ")[1],m=`## ${l}`;n&&(m=`## [${l}](${s}/compare/${n}...${l}) (${new Date(a).toLocaleDateString().replace(/\//g,"-")})`),o.push({commitId:i,tag:l,date:a,title:m,logs:{}})}),o);i.forEach((t,e)=>{if(e&&a(i[e-1].tag,t.tag).forEach(t=>{if(t.type){let o=i[e].logs[t.type]||[];o.push(`- ${t.message} ([${t.commitId.substring(0,7)}](${s}/commit/${t.commitId}))`),Object.assign(i[e].logs,{[t.type]:o})}}),e===i.length-1){let o=a(t.tag);o.length&&i.push({title:"## Last",logs:{}}),o.forEach(t=>{if(t.type){let o=i[e+1].logs[t.type]||[];o.push(`- ${t.message} ([${t.commitId.substring(0,7)}](${s}/commit/${t.commitId}))`),Object.assign(i[e+1].logs,{[t.type]:o})}})}}),i.reverse().forEach(t=>{for(let e in n.push(`
|
|
2
|
+
${t.title}`),t.logs)Object.prototype.hasOwnProperty.call(t.logs,e)&&(n.push(`
|
|
3
3
|
### ${e}
|
|
4
|
-
`),t.logs[e].forEach(t=>
|
|
4
|
+
`),t.logs[e].forEach(t=>n.push(t)))})}catch(t){n.push("\n当前分支尚无任何提交\n"),s(t)}r(e(i,l),n.join("\n"))}
|
package/lib/bin/commit-lint.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var e;let t,r,a,s,n,o;import{
|
|
2
|
+
var e;let t,r,a,s,n,o;import{join as l}from"node:path";import{argv as i}from"node:process";import{ink as c,loadFileSync as m,println as u}from"@moneko/utils";import p from"../commom/log.mjs";import d from"../commom/paths.mjs";import{getConfigWithTypescript as b}from"../utils/index.mjs";function g(e){return/^[A-Z][a-z\d\s]*$/.test(e)}function h(e){return/^([A-Z][a-z\d]*\s*)+$/.test(e)}function f(e){return/^([A-Z][a-z\d]*)+$/.test(e)}function y(e){return e===e.toUpperCase()}(t=i[2]||l(d.programPath,".git","COMMIT_EDITMSG"))||(p("Commit message file path is required."),process.exit(1)),null===(r=m(t))&&(p("Commit message cannot be empty"),process.exit(1)),a=b(l(d.programPath,"commitlint.config.ts")).default,e=function(e,t){let r={...e};for(let e in t)Object.hasOwn(t,e)&&Object.assign(r,{[e]:t[e]});return r}({"body-leading-blank":[1,"always"],"body-max-line-length":[2,"always",200],"footer-leading-blank":[1,"always"],"footer-max-line-length":[2,"always",100],"header-max-length":[2,"always",100],"header-trim":[2,"always"],"subject-case":[2,"never",["sentence-case","start-case","pascal-case","upper-case"]],"subject-empty":[2,"never"],"subject-full-stop":[2,"never","."],"type-case":[2,"always","lower-case"],"type-empty":[2,"never"],"type-enum":[2,"always",[["build",["Modifies the build system or external dependencies.","修改构建系统或外部依赖"]],["chore",["Performs routine maintenance or tool changes unrelated to features or fixes.","执行与功能或修复无关的日常维护、工具更改"]],["ci",["Modifies continuous integration/deployment configuration or scripts.","修改持续集成/部署的配置或脚本(如 GitHub Actions、Travis CI)"]],["docs",["Updates documentation only.","仅修改文档(如 README、注释)"]],["feat",["Introduces a new feature.","添加新的功能或特性"]],["fix",["Addresses and resolves a bug in the code.","修复代码中的错误或 Bug"]],["perf",["Improves performance without altering functionality.","性能优化,且不影响功能的更改"]],["refactor",["Restructures code without fixing bugs or adding features.","重构代码,既不修复错误也不添加功能"]],["revert",["Reverts a previous commit.","撤销之前的某次提交"]],["style",["Adjusts code style or formatting without affecting logic.","修改代码的样式、格式,而不影响逻辑"]],["test",["Adds or modifies test cases.","添加或修改测试用例"]],["merge",["Merges branches.","合并分支"]]]]},a),s=function(e){let t=e.trim().split("\n"),r=t[0]||"",a=r.match(/^([a-zA-Z]+)(?:\([a-zA-Z0-9-]+\))?:\s*(.+)$/),s=a?a[1]:"",n=a?a[2]:r,o=1;for(;o<t.length&&""===t[o].trim();)o++;let l=t.length;for(let e=o,r=/^(BREAKING CHANGE|[A-Za-z-]+(?:\([A-Za-z-]+\))?:)/,a=t.length;e<a;e++)if(r.test(t[e])){l=e;break}return{header:r,type:s,subject:n,body:t.slice(o,l).join("\n"),footer:t.slice(l).join("\n"),raw:e,lines:t}}(r),n={valid:!0,errors:[],warnings:[]},Object.entries(e).forEach(e=>{let[t,r]=e,[a,o,...l]=r;if(0===a)return;let i=!0,m="";switch(t){case"body-leading-blank":i=!s.body||s.lines.length>1&&""===s.lines[1].trim(),m="body must have leading blank line";break;case"body-max-line-length":{let e=l[0]||100;i=s.body.split("\n").every(t=>t.length<=e),m=`body's lines must not be longer than ${e} characters`;break}case"footer-leading-blank":i=!s.footer||""===s.lines[s.lines.length-s.footer.split("\n").length-1].trim(),m="footer must have leading blank line";break;case"footer-max-line-length":{let e=l[0]||100;i=s.footer.split("\n").every(t=>t.length<=e),m=`footer's lines must not be longer than ${e} characters`;break}case"header-max-length":{let e=l[0]||100;i=s.header.length<=e,m=`header must not be longer than ${e} characters`;break}case"header-trim":i=s.header.trim()===s.header,m="header must not have leading or trailing whitespace";break;case"subject-case":{let e=l[0]||[],t=s.subject.trim(),r={"sentence-case":g,"start-case":h,"pascal-case":f,"upper-case":y};i=!e.some(e=>r[e]&&r[e](t)),m=`subject must not be in ${e.join(", ")}`;break}case"subject-empty":i=""!==s.subject.trim(),m="subject cannot be empty";break;case"subject-full-stop":{let e=l[0]||".";i=!s.subject.trim().endsWith(e),m=`subject must not end with ${e}`;break}case"type-case":"lower-case"==("always"===o?"lower-case":"upper-case")?(i=s.type===s.type.toLowerCase(),m="type must be lower-case"):(i=s.type===s.type.toUpperCase(),m="type must be upper-case");break;case"type-empty":i=""!==s.type,m="type cannot be empty";break;case"type-enum":{let e=l[0]||[],t=e.map(e=>e[0]);i=t.includes(s.type.toLowerCase());let r=Math.max(...t.map(e=>e.length));m=["type must be one of","",...e.map(e=>`${" ".repeat(4)}${e[0]}:${" ".repeat(r-e[0].length)} ${function(e,t=""){return Array.isArray(e)?e.map((e,r)=>r?`${t}${c(e,"245",{})}`:e).join("\n"):e}(e[1]," ".repeat(r+6))}`)].join("\n")}}if("never"===o&&(i=!0),!i){let e={level:a,message:m,name:t};2===a?(n.errors.push(e),n.valid=!1):1===a&&n.warnings.push(e)}}),(function(e){let t=[" ","⚠","✖"],r={green:"\x1b[32m",yellow:"\x1b[33m",red:"\x1b[31m",gray:"\x1b[90m",reset:"\x1b[0m",bold:"\x1b[1m"},{errors:a=[],warnings:s=[]}=e,n=[...a,...s].map(e=>{let a=r[2===e.level?"red":"yellow"]+t[e.level]+r.reset;return`${a} ${e.message} ${r.gray}[${e.name}]${r.reset}`}),o=a.length>0?"✖":s.length?"⚠":"✔",l=a.length>0?r.red:s.length?r.yellow:r.green,i=n.length>0;return[...n,i?"":null,`${l}${o}${r.reset} ${r.gray}${r.bold}found ${a.length} problems, ${s.length} warnings${r.reset}`,i?"":null].filter(e=>null!==e)})(o=n).forEach(e=>{u(e)}),process.exit(+!o.valid);
|
package/lib/bin/eslint.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{argv as
|
|
2
|
-
`,x?"red":"green")}`,!0),x&&
|
|
1
|
+
import{relative as e}from"node:path";import{argv as o,exit as t,stdout as i}from"node:process";import{ESLint as r}from"@moneko/eslint";import{ink as a,print as s}from"@moneko/utils";import{cachePath as c,cwd as l,parseBraced as n}from"./utils/config.mjs";export default async function m(){let m=a("eslint","cyan");s(`${m}: ${a("Runing...","yellow")}`,!0);let f=o[3],u=o.slice(4),p=u.includes("--fix"),d=new r({cache:!u.includes("--cache=false"),cacheLocation:`${c}/.eslintcache`,fix:p}),w=n(f).map(o=>e(l,o)),h=await d.lintFiles(w),$=await d.loadFormatter("stylish"),y=await $.format(h,{cwd:process.cwd(),rulesMeta:{}});p&&await r.outputFixes(h),y&&i.write(y);let x=h.some(e=>e.errorCount>0);s(`${m}: ${a(`✨ ${x?"Error":"Successfully"}!
|
|
2
|
+
`,x?"red":"green")}`,!0),x&&t(1)}
|
package/lib/bin/lessc.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{exec as e}from"node:child_process";import{loadFile as s,saveFile as
|
|
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{ink as
|
|
1
|
+
import{spawn as e}from"node:child_process";import{relative as t}from"node:path";import{ink as a,println as n,progressBar as o,updateFile as r}from"@moneko/utils";import{getPackageManager as l}from"../commom/package-manager.mjs";import s from"../commom/parse-args.mjs";import m from"../commom/paths.mjs";import{readJson as i}from"../commom/read-json.mjs";import c from"../commom/require.mjs";let p=c.resolve(`${m.programPath}/package.json`);async function d(t){return new Promise(a=>{let n=e("npm",["view",t,"version"],{shell:!0}),o="";n.stdout.on("data",e=>{o+=e}),n.stderr.on("data",e=>{let t=e.toString().split("\n").filter(e=>e.includes("GET http")).map(e=>e.split(" - ")[0].trim());t.length&&(o+=`Err: ${t[0]}`.trim())}),n.on("close",async()=>{a(o.trim())})})}async function u(e,t){let a={...e};return o(t.done.length,t.total,{name:"Checking"}),await Promise.allSettled(Object.keys(a).map(async e=>{let n=await d(e);t.done.includes(e)||t.done.push(e),o(t.done.length,t.total,{name:"Checking",msg:`${t.done.length} / ${t.total}`}),a[e]=n})),a}let h={major:"red",minor:"yellow",patch:"cyan",equal:"white"};async function g(e,t,a,n){if(e[t]){var o;let r=await u(e[t],n),l=(o=e[t],Object.keys(r).filter(e=>{let t=$(o[e]);return o[e]!==`${t[0]}${r[e]}`}).map(e=>{var t,a;let n,l,s=$(o[e]),m=r[e].includes("Err:"),i=m?"red":h[t=s[1],a=r[e],n=t.split("."),l=a.split("."),n[0]!==l[0]?"major":n[1]!==l[1]?"minor":n[2]!==l[2]?"patch":"equal"];return{name:e,wanted:o[e],latest:`${s[0]}${r[e].replace("Err:","")}`,color:i,err:m?r[e]:void 0}}));l.length&&(a[t]=l)}}function f(e,t,a){return e.reduce((e,n)=>Math.max(e,t[n].reduce((e,t)=>Math.max(e,t[a]?.length??0),0)),0)}function $(e){let t=e.match(/^([^\d]*)(.*)$/);return t?[t[1],t[2]]:["",e]}async function y(){let e=s(process.argv),o=i(p),c={done:[],total:Object.keys({...o.peerDependencies||{},...o.optionalDependencies||{},...o.devDependencies||{},...o.dependencies||{}}).length},d={};if(n(""),await Promise.allSettled([g(o,"peerDependencies",d,c),g(o,"optionalDependencies",d,c),g(o,"devDependencies",d,c),g(o,"dependencies",d,c)]),n(""),Object.keys(d)?.length>0){let s=l(o.packageManager),i=Object.keys(d),c="".padEnd(3," ");n(""),n(a("⚡ Updates available for:","magenta",{bold:!0})),n("");let u=f(i,d,"name"),h=f(i,d,"latest"),g=f(i,d,"wanted");i.forEach(e=>{n(a(`${e}:`,"145")),d[e].forEach(t=>{n(`${a(t.name.padEnd(u," "),t.color,{bold:!0})}${c}${t.wanted.padStart(g," ")}${c}${a("→",t.color)}${c}${a(t.latest.padStart(h," "),t.color)}`),t.err||(o[e][t.name]=t.latest)}),n("")}),e["-u"]?(await r(p,JSON.stringify(o,null,2)),n(`✅ ${a(t(m.programPath,p),"yellow")} upgrade completed successfully.`),n(`⏳ Run ${a(`${s} install`,"blue")} to install new versions.`)):n(`⏳ Run ${a("mo pin -u","blue")} to upgrade package.json`)}else n(""),n("🎉 All dependencies match the latest package versions");n("")}export default y;
|
package/lib/bin/pure-lint.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{spawnSync as t}from"node:child_process";import{argv as
|
|
2
|
+
import{spawnSync as t}from"node:child_process";import{join as e}from"node:path";import{argv as i,cwd as o,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 s,loadFile as m,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(i.slice(2)),y=p.fix,w=p.cache||!0,h=e(o(),"node_modules/.cache"),S={ci:["diff","--name-only","HEAD^","HEAD"],commit:["diff","--cached","--name-only","--diff-filter=ACM"]},j=/.*(?<!\.d)\.(j|t|mj|mt|cj|ct)sx?$/i,$=/.*(?<!\.d)\.vue$/i,g=/.*(?<!\.d)\.(c|sc|sa|le)ss$/i,v=/\.min\.(j|t|mj|mt|cj|ct)sx?$/i,E=t("git",S[p.mode||"ci"]||S.ci).stdout.toString().trim().split("\n");async function L(){let t=s("ESLint","cyan");c(`${t}: ${s("runing...","yellow")}`,!0);try{u.start("ESLint");let t=E.filter(t=>!(t.endsWith("iconfont.js")||v.test(t))&&(j.test(t)||$.test(t)));if(0===t.length)return void u.end("ESLint");let e=new l({cache:w,cacheLocation:`${h}/.eslintcache`,fix:y}),i=await e.lintFiles(t),o=await e.loadFormatter("stylish"),a=await o.format(i,{cwd:process.cwd(),rulesMeta:{}});y&&await l.outputFixes(i),a&&n.write(a);let s=i.some(t=>t.errorCount>0);u.end("ESLint"),s&&r(1)}catch(t){d(t)}}let x=E.filter(t=>g.test(t)||$.test(t));async function k(){let t=s("Stylelint","cyan");if(c(`${t}: ${s("runing...","yellow")}`,!0),u.start("Stylelint"),0===x.length)return void u.end("Stylelint");let e=await Promise.allSettled(x.map(async t=>{let e=await m(t);if(e)return await a.lint({codeFilename:t,code:e,cache:w,cacheLocation:`${h}/.stylelintcache`,fix:y,formatter:"string"}).catch(d)})),i=!1;e.forEach(t=>{"fulfilled"===t.status?t.value&&(t.value.report&&n.write(t.value.report),t.value.errored&&(i=!!t.value.errored)):t.reason&&(n.write(t.reason),i=!1)}),u.end("Stylelint"),i&&r(1)}await Promise.allSettled([L(),k()]);
|
package/lib/bin/stylelint.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{argv as s,exit as
|
|
2
|
-
|
|
1
|
+
import{relative as e}from"node:path";import{argv as s,exit as t,stdout as r}from"node:process";import{stylelint as o}from"@moneko/stylelint";import{ink as i,print as l}from"@moneko/utils";import{cachePath as c,cwd as n,parseBraced as a}from"./utils/config.mjs";async function m(){let m=i("stylelint","cyan");l(`${m}: ${i("Runing...","yellow")}`,!0);let f=s[3],p=s.slice(4),u=p.includes("--fix"),d=await o.lint({files:a(f).map(s=>e(n,`${s}/**/*.{css,scss,sass,less,ts,tsx,js,jsx}`).replace(/\\/g,"/")),fix:u,cache:!p.includes("--cache=false"),cacheLocation:`${c}/.stylelintcache`,formatter:"string"}),y=d.errored;d.report&&r.write(d.report),l(`${m}: ${i(`✨ ${y?"Error":"Successfully"}!
|
|
2
|
+
`,y?"red":"green")}`,!0),y&&t(1)}export default m;
|
package/lib/bin/tsc.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{join as e}from"node:path";import{stdout as t}from"node:process";import i from"typescript";import{cwd as o}from"./utils/config.mjs";async function n(n){return new Promise(s=>{let r=i.parseJsonConfigFileContent({extends:e(o,"tsconfig.json"),compilerOptions:{outDir:n,declaration:!0,emitDeclarationOnly:!0,skipLibCheck:!0,skipDefaultLibCheck:!0,noEmitOnError:!1},include:[e(o,"components"),e(o,"typings")],exclude:[e(o,"components/**/examples/*"),e(o,"components/**/__tests__/*"),e(o,"components/**/__mocks__/*")]},i.sys,o);r.options.incremental&&(r.options.tsBuildInfoFile=r.options.tsBuildInfoFile??e(n,".tsbuildinfo"));let a=i.createProgram(r.fileNames,r.options),c=a.emit();i.getPreEmitDiagnostics(a).concat(c.diagnostics).forEach(e=>{if(t.write("\n"),e.file){let{line:o,character:n}=e.file.getLineAndCharacterOfPosition(e.start),s=i.flattenDiagnosticMessageText(e.messageText,"\n");t.write(`${e.file.fileName} (${o+1},${n+1}): ${s}`)}else t.write(i.flattenDiagnosticMessageText(e.messageText,"\n"))}),s(!0)})}export default n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{execSync as
|
|
1
|
+
import{execSync as e}from"node:child_process";import{renameSync as o}from"node:fs";import{join as n}from"node:path";import{bundleIpa as p,createDir as t,ink as a,print as r}from"@moneko/utils";import l from"../../commom/timer.mjs";export function bundleApk(p,i,u="-release"){r(a("正在编译 apk...","yellow"),!0),l.start(`bundle apk ${u}`),e(`flutter build apk -${u}`),l.end(`bundle apk ${u}`),t(i),o(n(p,`build/app/outputs/flutter-apk/app${u}.apk`),i),r(`✨ ${a("Apk 编译","cyan")}: ${a("完成","cyan")}`,!0)}export function bundleIOS(i,u,d="-release"){r(a("正在编译 ipa...","yellow"),!0),l.start(`bundle ipa ${d}`);let m=n(u,"Runner/Payload");e(`flutter build ios -${d} --no-codesign`),t(m),o(n(i,"build/ios/iphoneos/Runner.app"),m),p(n(u,"Runner"),u,d),l.end(`bundle ipa ${d}`),r(`✨ ${a("ipa 编译","cyan")}: ${a("完成","cyan")}`,!0)}
|
package/lib/bin/utils/config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{dirname as e,join as o}from"node:path";import{cwd as t,execPath as c,platform as n}from"node:process";let r="u">typeof Deno?"deno":"u">typeof Bun?"bun":"node",s=e(c);"win32"===n&&s.includes(" ")&&(s=`"${s}"`);export const runtimePath=o(s,r);export const corePkg="@moneko/core";export const cwd=t();export const cachePath=o(cwd,"node_modules/.cache");export const swcCachePath=o(cachePath,".swc");export function parseBraced(e){return e.startsWith("[")&&e.endsWith("]")?e.slice(1,-1).split(","):[e]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// import { join, sep, extname, normalize } from '
|
|
1
|
+
// import { join, sep, extname, normalize } from 'node:path';
|
|
2
2
|
// import { copyFile, ink, println, scanFolderSync, updateFile } from '@moneko/utils';
|
|
3
3
|
// import { JsMinifyOptions, type Options, type Output, transformFile } from '@swc/core';
|
|
4
4
|
// function getOutfilePath(outDir: string, file: string, outFileExtension?: string) {
|
package/lib/build-dev.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"node:process";import{analyzeBundleSize as
|
|
2
|
-
`):(
|
|
1
|
+
import{relative as o}from"node:path";import r from"node:process";import{analyzeBundleSize as e,completedInfo as t,ink as m,println as i,progressBar as a}from"@moneko/utils";import n from"webpack";import s from"./commom/log.mjs";import l from"./commom/paths.mjs";import{CONFIG as p}from"./config.mjs";import{createDevelopmentConfiguration as c}from"./create-development-configuration.mjs";let g=await c({});if(p.bar){let o=p.bar,e=o.name||"Build";g.plugins.push(new n.ProgressPlugin({handler(t,m,...i){let n=i.length?`[${m}] ${i.join(" ")}`:" ";o.quiet?r.stdout.write(`${n}
|
|
2
|
+
`):(a(t||0,1,{msg:n,name:e,barColor:o.barColor,nameColor:o.nameColor,barBgColor:o.barBgColor,msgColor:o.msgColor}),1===t&&r.stdout.write("\r\x1b[2K"))}}))}let u=n(g);async function d(){let r=await new Promise((o,r)=>{u?.run((e,t)=>{e&&r(e),t?o(t):r(Error("编译过程中没有生成统计信息"))})});(r.hasErrors()||r.hasWarnings())&&function(o){let{warnings:r,errors:e}=o.compilation,t=[];r.forEach(o=>{o.message.includes("Conflicting order between css ./node_modules/")&&o.message.includes("monaco-editor")?t.push(o.message):i(m(o.message,"178"))}),t.length&&s(t.join("\n")),e.forEach(o=>{i(m(o.message,"red"))})}(r),await new Promise(a=>{r.compilation.compiler.cache.shutdown(n=>{n&&i(m(n.toString(),"red")),e(r.compilation.outputOptions.path,["\\.js$"]),t(~~((r.endTime-r.startTime)/10)/100,o(l.programPath,r.compilation.outputOptions.path)),a()})})}await d();
|
package/lib/build.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import o from"node:process";import{analyzeBundleSize as
|
|
2
|
-
`):(
|
|
1
|
+
import{relative as o}from"node:path";import r from"node:process";import{analyzeBundleSize as m,completedInfo as e,ink as t,println as i,progressBar as s}from"@moneko/utils";import n from"webpack";import{merge as a}from"webpack-merge";import l from"./build/common.mjs";import p from"./commom/log.mjs";import u from"./commom/paths.mjs";import{DonePlugin as g}from"./plugin/done.mjs";import c from"./utils/seo.mjs";import{CONFIG as d}from"./config.mjs";import f from"./module.config.mjs";let h=a(l,{module:f(!1),plugins:[]});if(d.done&&h.plugins.push(new g({done:d.done})),d.bar){let o=d.bar,m=o.name||"Build";h.plugins.push(new n.ProgressPlugin({handler(e,t,...i){let n=i.length?`[${t}] ${i.join(" ")}`:" ";o.quiet?r.stdout.write(`${n}
|
|
2
|
+
`):(s(e||0,1,{msg:n,name:m,barColor:o.barColor,nameColor:o.nameColor,barBgColor:o.barBgColor,msgColor:o.msgColor}),1===e&&r.stdout.write("\r\x1b[2K"))}}))}let w=n(h);if(!w)throw Error("无法创建编译器");async function b(){let r=await new Promise((o,r)=>{w?.run((m,e)=>{m&&r(m),e?o(e):r(Error("编译过程中没有生成统计信息"))})});(r.hasErrors()||r.hasWarnings())&&function(o){let{warnings:r,errors:m}=o.compilation,e=[];r.forEach(o=>{o.message.includes("Conflicting order between css ./node_modules/")&&o.message.includes("monaco-editor")?e.push(o.message):i(t(o.message,"178"))}),e.length&&p(e.join("\n")),m.forEach(o=>{i(t(o.message,"red"))})}(r),await new Promise(s=>{r.compilation.compiler.cache.shutdown(n=>{n&&i(t(n.toString(),"red")),m(r.compilation.outputOptions.path,["\\.js$"]),e(~~((r.endTime-r.startTime)/10)/100,o(u.programPath,r.compilation.outputOptions.path)),s()})}),d.seo&&c()}await b();
|
package/lib/commom/ca.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{exec as t}from"node:child_process";import{
|
|
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 f from"./log.mjs";import{getIPv4 as u}from"./net.mjs";import d from"./paths.mjs";let p=i(t);export const CA_ORGANIZATION="Local Root Certificate Authority - Moneko";export async function isCertificateInstalled(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){f(t)}return!1}function y(t,e,r){if(t&&!r.includes("already exists"))return void f(t)}export function installCA(e){return"darwin"===o?t(`sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "${e}"`,y):"win32"===o?t(`certutil -addstore -user "Root" "${e}"`,y):void s(`⚠️ 暂不支持自动安装 CA 的平台: ${o}`)}export async function setupCert(t="localhost",o=!0){let i=r(d.programPath,`${d.corePath}/cert/cert.pem`),s=r(d.programPath,`${d.corePath}/cert/key.pem`),f=!a(i)||!a(s);if(f){let t=c();await Promise.allSettled([m(i,t.cert),m(s,t.key)])}o&&(!await isCertificateInstalled("Local Root Certificate Authority - Moneko")||f)&&installCA(i);let p=e(d.CA_DIR,`${t}_cert.pem`),y=e(d.CA_DIR,`${t}_key.pem`);if(f||!a(p)||!a(y)){let e=await Promise.all([n(i),n(s)]),r=l(e[0],e[1],[...new Set([t,"localhost","127.0.0.1",u()].filter(Boolean))]);await Promise.allSettled([m(p,r.cert),m(y,r.key)])}let h=await Promise.all([n(p),n(y)]);return{cert:h[0],key:h[1]}}
|
package/lib/commom/corepack.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{spawn as e}from"node:child_process";import{
|
|
1
|
+
import{spawn as e}from"node:child_process";import{dirname as r,join as o}from"node:path";import{execPath as a,platform as n,versions as p}from"node:process";import{ink as t,loadFile as m,println as i,saveFile as c}from"@moneko/utils";import{packageJson as s}from"../process-env.mjs";import l from"./log.mjs";import g from"./paths.mjs";let f=o(g.programPath,"package.json"),d=t("corepack","magenta"),k={stdio:"ignore",shell:!0};export function corepack(g){new Promise(p=>{if(s.packageManager){let t=e("corepack",["-v"],k);t.on("error",e=>{l(e),p(!1)}),t.on("exit",e=>{0!==e&&p(!1);let t=s.packageManager.split("@")[0],i="win32"===n?`${t}.cmd`:t;m(o(r(a),i)).then(e=>{p(e.includes("corepack"))}).catch(e=>{l(e),p(!1)})})}else p(!1)}).then(r=>{if(g){if(!s.packageManager){let e;s.packageManager=(e=Number(p.node.split(".")[0]))<16?"pnpm@7.33.7":e<18?"pnpm@8.15.9":"pnpm@10.14.0",c(f,JSON.stringify(s,null,2))}if(r)return;e("corepack",["enable"],k);return}r?i(`${d} is ${t("enabled","green")} ${t(`(${s.name})`,"245")}`):i(`${d} is ${t("disabled","yellow")} ${t(`(${s.name})`,"245")}`)}).catch(e=>{l(e)})}
|
package/lib/commom/paths.d.mts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
import path, { posix } from 'node:path';
|
|
2
|
-
export declare function join(...segments: string[]): string;
|
|
3
|
-
export declare const basename: typeof posix.basename;
|
|
4
|
-
export declare const dirname: typeof posix.dirname;
|
|
5
|
-
export declare const extname: typeof posix.extname;
|
|
6
|
-
export declare const normalize: typeof posix.normalize;
|
|
7
|
-
export declare const parse: typeof posix.parse;
|
|
8
|
-
export declare const relative: typeof posix.relative;
|
|
9
|
-
export declare const resolve: typeof posix.resolve;
|
|
10
|
-
export declare const sep: typeof path.sep;
|
|
11
1
|
/** 当前文件所在目录的绝对路径 */ export declare const __dirname: string;
|
|
12
2
|
/** yarn 命令行参数对象,包含配置选项 */ export declare const yarnArgv: Record<string, string> & {
|
|
13
3
|
config?: string;
|
package/lib/commom/paths.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{tmpdir as
|
|
1
|
+
import{tmpdir as o}from"node:os";import{resolve as e}from"node:path";import{argv as t,cwd as n,env as a}from"node:process";import r from"node:url";import{fileExists as c}from"@moneko/utils";import i from"./parse-args.mjs";let s=JSON.parse(a.npm_config_argv||'{"original":[]}').original;export const __dirname=r.fileURLToPath(new URL("..",import.meta.url));export const yarnArgv={};for(let o=0,e=s.length;o<e;o++){let e=s[o].split("=");Object.assign(yarnArgv,{[e[0]]:e[1]||!0})}export const CUSTOMCONFIG=a.npm_config_config||yarnArgv.config||a.__args__config__||i(t.slice(2)).config;let m=n(),p=e(m,"node_modules");export const TMP_DIR=e(o(),"@moneko");let g={nodeModules:p,pnpmNodeModules:e(p,".pnpm/node_modules"),denoNodeModules:e(p,".deno"),corePath:__dirname,programPath:m,CA_DIR:e(TMP_DIR,".ca"),webpackCachePath:e(p,".cache"),lintCachePath:e(p,".cache"),httpCachePath:e(p,".cache/http"),swcCachePath:e(p,".cache/.swc"),configPath:e(m,"config/index.ts"),customConfigPath:e(m,`config/${CUSTOMCONFIG}.ts`),coveragePath:e(m,"coverage/clover.xml"),pagesPath:e(m,"src/pages"),componentsPath:e(m,"components"),mockPath:e(m,"mock")};export const config_files=[c(g.configPath)&&g.configPath,c(g.customConfigPath)&&g.customConfigPath].filter(Boolean);export const routeDir="library"===a.APPTYPE?g.componentsPath:g.pagesPath;export default g;
|
package/lib/commom/rule.d.mts
CHANGED
|
@@ -1,25 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export declare const less: RegExp;
|
|
4
|
-
export declare const scss: RegExp;
|
|
5
|
-
export declare const wasm: RegExp;
|
|
6
|
-
export declare const txt: RegExp;
|
|
7
|
-
export declare const image: RegExp;
|
|
8
|
-
export declare const video: RegExp;
|
|
9
|
-
export declare const font: RegExp;
|
|
10
|
-
export declare const markdown: RegExp;
|
|
11
|
-
export declare const tsdoc: RegExp;
|
|
12
|
-
// 文件名不包含 .global. 的css、less、scss、sass都将开启cssModule
|
|
13
|
-
export declare const css_module: RegExp;
|
|
14
|
-
export declare const less_global: RegExp;
|
|
15
|
-
export declare const sass_global: RegExp;
|
|
16
|
-
export declare const node_modules_css_module: RegExp;
|
|
17
|
-
export declare const node_modules: RegExp;
|
|
18
|
-
export declare const __tests__: RegExp;
|
|
19
|
-
/**
|
|
20
|
-
* 提取函数字符串
|
|
21
|
-
* @example
|
|
22
|
-
* // () => import('pkg')
|
|
23
|
-
* "rr(() => import('pkg'))rr".replace(Rule.extract_func, '$1')
|
|
24
|
-
* */ export declare const extract_func: RegExp;
|
|
25
|
-
export declare const http: RegExp;
|
|
1
|
+
declare const Rule: Record<string, RegExp>;
|
|
2
|
+
export default Rule;
|
package/lib/commom/rule.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export default{js:/\.(cj|mj|t|j)s(|x)$/i,css:/\.css$/i,less:/\.less$/i,scss:/\.(sa|sc)ss$/i,wasm:/\.wasm$/i,txt:/\.txt$/i,image:/\.(gif|png|jpe?g|webp|svg|ico)$/i,video:/\.(webm|mp4|ogv)$/i,font:/\.(woff2?|eot|ttf|otf)(\?.*)?$/i,markdown:/\.mdx?$/i,tsdoc:/^(?![._]).*(?<!\.test)\.(tsx?)$/,css_module:/(.*(?<!\.?global\.(le|c|sc|sa)ss)$)/i,less_global:/global\.less$/i,sass_global:/global\.(sc|sa)ss$/i,node_modules_css_module:/(^(?!.*node_modules))(.*(?<!\.?global\.(le|c|sc|sa)ss)$)/i,node_modules:/[\\/]node_modules[\\/]/,__tests__:/(.+)\/__tests__\/(.+)/,extract_func:/"rr\((.+?)\)rr"/g};
|
package/lib/common.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./commom/has-pkg.mjs";import
|
|
1
|
+
import{extname as e,join as t,resolve as s}from"node:path";import o from"./commom/has-pkg.mjs";import a,{config_files as n,CUSTOMCONFIG as i}from"./commom/paths.mjs";import r from"./commom/rule.mjs";import{OverrideResolverPlugin as l}from"./plugin/override-resolve.mjs";import{isObject as m,resolveProgram as c}from"./utils/index.mjs";import{CONFIG as p}from"./config.mjs";import u from"./plugins.config.mjs";import{app_schema as h,CACHE_NAME as d,isDev as f,isLibrary as g,packageJson as y,projectNameCamelCase as b}from"./process-env.mjs";export const outputConfig={path:c(g?"docs":"dist"),filename:e=>e.filename?.includes(".worker")?"worker/[name].js":"js/[name].[contenthash].bundle.js",chunkFilename:"js/[contenthash].chunk.js",cssFilename:"style/[contenthash].css",cssChunkFilename:"style/[contenthash].chunk.css",assetModuleFilename:t=>{let s=e(t.filename||"").substring(1);return`assets/${s}/[hash][ext]`},library:{name:`${b}`,type:"umd",umdNamedDefine:!0},globalObject:"self",chunkLoadingGlobal:`webpackJsonp_${y.name}`,pathinfo:f,clean:!0,publicPath:p.publicPath,asyncChunks:!0,charset:!0,iife:!0,crossOriginLoading:"use-credentials",enabledWasmLoadingTypes:["fetch"],uniqueName:`${b}`};let j={main:[o(t(p.alias["@"],"service-worker")),`${h}:entry`].filter(Boolean)},v=[t(a.corePath,"./polyfills/public-path.mjs")];if(f&&p.refresh&&p.env.injectRemoteReactRefresh&&v.push(t(a.corePath,"./polyfills/inject-react-refresh.mjs")),p.polyfill&&v.push(t(a.corePath,"./polyfills/replace-children.mjs")),p.entry&&("string"==typeof p.entry?j={...j,main:[p.entry]}:Object.keys(p.entry)&&(j=Object.assign(j,p.entry))),"string"==typeof j.main?j.main=[...v,j.main]:Array.isArray(j.main)&&(j.main=[...v,...j.main]),p.output){if("string"==typeof p.output)outputConfig.path=p.output;else if(Object.keys(p.output)){let e=p.output,t={...outputConfig.library};Object.assign(outputConfig,e),"object"==typeof p.output&&e.library&&(outputConfig.library=Object.assign(t,e.library))}}let C={type:"filesystem",allowCollectingMemory:!0,cacheDirectory:a.webpackCachePath,memoryCacheUnaffected:!0,name:d,version:`${y.version}`,buildDependencies:{config:n},maxMemoryGenerations:1};!1===p.cache?C=!1:m(p.cache)&&(C=Object.assign(C,p.cache));let k={},P={imports:!0,entries:!0,test:e=>{let s=e.nameForCondition();return!!(s&&(/^[a-z][a-z0-9]*:.+$/.test(s)||s?.startsWith(t(a.programPath,"src"))||s?.startsWith(t(a.programPath,"site"))||s?.startsWith(a.componentsPath)))}};p.lazyCompilation&&f&&"true"!==process.env.IS_BUILD?m(p.lazyCompilation)?Object.assign(k,P,p.lazyCompilation):Object.assign(k,P):k=!1;export const commonConfig={name:"client",target:"web",devtool:p.devtool,entry:j,mode:p.mode??"production",cache:C,snapshot:{immutablePaths:[a.pnpmNodeModules,a.denoNodeModules,r.node_modules],managedPaths:[a.pnpmNodeModules,a.denoNodeModules,r.node_modules],resolveBuildDependencies:{timestamp:!0,hash:!0},resolve:{timestamp:!0,hash:!0},module:{timestamp:!0,hash:!0},buildDependencies:{timestamp:!0,hash:!0},contextModule:{timestamp:!0,hash:!0}},stats:"errors-only",infrastructureLogging:{level:"error"},externalsPresets:p.externalsPresets,plugins:u,node:{global:!1,__filename:!1,__dirname:!1},experiments:{asyncWebAssembly:!0,cacheUnaffected:!0,lazyCompilation:k,buildHttp:m(p.buildHttp)?{allowedUris:[],lockfileLocation:s(a.httpCachePath,"http.lock"),cacheLocation:s(a.httpCachePath,"data"),upgrade:!0,...p.buildHttp}:p.buildHttp,backCompat:!0,futureDefaults:!0,css:!0,outputModule:!1,deferImport:!0},resolve:{extensions:[".mts",".mjs",".ts",".tsx",".js",".jsx",".json",".wasm"],alias:p.alias,modules:[a.nodeModules,a.pnpmNodeModules,a.denoNodeModules],mainFields:["browser","module","main"],mainFiles:["index"],plugins:p.resolvePlugins,preferAbsolute:!0,cache:!0,fallback:{}},externals:p.externals,output:outputConfig,recordsPath:p.recordsPath};p.overrideResolve&&commonConfig.resolve.plugins.push(new l(Object.assign({original:p.alias["@"],override:i&&c(i)},p.overrideResolve)));
|
package/lib/config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"node:process";import{merge as
|
|
1
|
+
import{join as e,relative as o}from"node:path";import t from"node:process";import{merge as a}from"webpack-merge";import n,{CUSTOMCONFIG as s}from"./commom/paths.mjs";import r from"./commom/setup-env.mjs";import i from"./options/jsx-dom-expressions.mjs";import l from"./options/split-chunk.mjs";import{getConfigWithTypescript as m,isFunction as p,node_modules as c,resolveProgram as u}from"./utils/index.mjs";import{initDts as d}from"./vm/dts.mjs";import{APPTYPE as f,FRAMEWORK as h,frameworkVersion as g,isCI as v,isDev as x,isLibrary as P,isMobile as C,isReact as b,jsxImportSource as j,mainDirectory as k,NODE_ENV as w,PACKAGENAME as O}from"./process-env.mjs";let I=[/(app|vm|docs|example):[a-zA-Z_0-9]/,"@moneko","neko-ui",".cache/http/data","@element-plus","ant-design-vue","element-plus","element-ui","ng-zorro-antd","@mui","@du","@fontsource","@fortawesome","font-pingfang-sc","font-pingfang-tc","katex","react-markdown-editor-lite","react-photo-view","schema-design","monaco-editor"];export async function getConfig(e){let o=m(e).default;return(p(o)?await o(t):o)??{}}let S=await r(w,f,h,[],"true"===t.env.IS_BUILD,s),[y,M]=await Promise.all([getConfig(n.configPath),getConfig(n.customConfigPath)]),z={mode:w,strict:!1,devtool:"true"!==t.env.IS_BUILD&&x?"eval-cheap-module-source-map":"cheap-module-source-map",seo:!1,bundleAnalyzer:!1,polyfill:!1,entry:{},minifier:{},sourceMap:{filename:"[file].map",publicPath:"",namespace:O,moduleFilenameTemplate:"moneko://[namespace]/[resource-path]?[loaders]",fallbackModuleFilenameTemplate:"moneko://[namespace]/[resource-path]?[loaders]"},env:S,basename:"/",publicPath:"auto",rem:{designSize:C?375:1920},fallbackCompPath:null,modifyVars:{},prefixCls:"n",alias:Object.assign({"@":u(k)},b&&g<18?{"react/package.json":c("react/package.json"),"react/jsx-runtime":c("react/jsx-runtime.js"),"react/jsx-dev-runtime":c("react/jsx-dev-runtime.js")}:{}),moduleRules:[],prefixJsLoader:[],cssModules:[],cssModuleDefinition:!0,importOnDemand:{},proxy:{},devServer:{host:"localhost",port:3e3,open:!0},htmlPluginOption:{title:O.toLocaleUpperCase(),favicon:o(n.programPath,`${n.corePath}/options/favicon.ico`)},copy:{},routerMode:"browser",fixBrowserRouter:!1,plugins:[],resolvePlugins:[],overrideResolve:!1,splitChunk:l,runtimeChunk:"single",moduleFederation:[],rulesInclude:{css:I,js:I,media:I,font:I,wasm:[]},mdx:{jsx:!1,development:x,jsxImportSource:j,providerImportSource:`@moneko/${h}/mdx`},jsxDomExpressions:i,bar:{name:"Client",nameColor:"68",msgColor:"242",barBgColor:"15",barColor:"69",quiet:v},normalizeCss:!0,externalsPresets:{},buildHttp:void 0,virtualModule:{},cssExtract:{},externals:["@swc/core"],lazyCompilation:!1,performance:!1,refresh:"solid"!==h,bundleId:"com.moneko.bid",bundles:[],stylelint:{},eslint:{lintDirtyModulesOnly:!1},minChunkSize:1e3,compression:!1,manifest:{filename:"site.webmanifest"},corepack:!0,reactJsxRuntime:"automatic"};P&&(z.alias=Object.assign(z.alias,{"@pkg":n.componentsPath,[O]:n.componentsPath}));let D=z;(!1===(D=a(D,y,M)).devtool||!1===D.sourceMap)&&(D.sourceMap=!1,D.devtool=!1),"true"===t.env.CODESPACES&&(D.devServer.https=!1),!1===D.devServer.https&&"darwin"===t.platform&&(D.devServer.open=!1),D.htmlPluginOption&&(D.htmlPluginOption.tags||(D.htmlPluginOption.tags=[]),D.fixBrowserRouter&&D.htmlPluginOption.tags.push({textContent:"(function(l) {if (l.search[1] === '/' ) {var decoded = l.search.slice(1).split('&').map(function(s) {return s.replace(/~and~/g, '&')}).join('?');window.history.replaceState(null, null,l.pathname.slice(0, -1) + decoded + l.hash);}}(window.location))"}),D.manifest&&(D.manifest.publicPath||(D.manifest.publicPath=D.basename),D.htmlPluginOption.tags.push({href:e(D.manifest.publicPath,D.manifest.filename).replaceAll(/\\/g,"/"),tag:"link",rel:"manifest"})));export const CONFIG=D;export const PUBLICPATH="auto"===CONFIG.publicPath?"":CONFIG.publicPath;d(CONFIG);
|
package/lib/dev/mock.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{watch as e}from"node:fs";import t from"node:http";import{
|
|
1
|
+
import{watch as e}from"node:fs";import t from"node:http";import{join as r}from"node:path";import{StringDecoder as o}from"node:string_decoder";import{URL as n}from"node:url";import{directoryExists as a,ink as i,print as c,scanFolderSync as s}from"@moneko/utils";import{merge as m}from"webpack-merge";import d from"../commom/log.mjs";import l from"../commom/match-path.mjs";import p from"../commom/paths.mjs";import u,{METHOD_COLOR as f}from"../commom/print-log.mjs";import h from"../commom/require.mjs";import g from"../commom/sigint-exit.mjs";import{jsonSchema as y}from"./json-schema.mjs";function b(e){return!["GET","HEAD","OPTIONS"].includes(e.method?.toUpperCase()||"")}export function cacheBody(e){if(!e._bodyCached&&b(e)&&!e.readableEnded){e._bodyCached=!0;try{let t=[],r=e.on.bind(e),o=e.emit.bind(e),n=!1;e.on=function(e,o){return"data"!==e||n||(n=!0,r("data",e=>{t.push(e)})),r(e,o)};let a=!1;e.emit=function(r,...n){return"end"===r&&!a&&(a=!0,t.length>0&&(e._dataChunks=t)),o.call(this,r,...n)}}catch(e){d(e)}}}function k(e,t){try{let r=Buffer.concat(e);if(t.includes("application/json")){let e=new o("utf-8").write(r);return JSON.parse(e)}if(t.includes("application/octet-stream")||t.startsWith("image/"));else if(t.includes("text/"))return r.toString("utf-8");else if(t.includes("application/x-www-form-urlencoded"))return Object.fromEntries(new URLSearchParams(r.toString("utf8")));return r}catch(e){return d(e),null}}async function j(e){return new Promise(t=>{if(!b(e))return void t(null);let r=e.headers["content-type"]||"",o=e.headers["content-length"],n=e.headers["transfer-encoding"],a=[];void 0!==e._dataChunks?t(k(e._dataChunks,r)):o||n?(e.on("data",e=>{a.push(e)}),e.on("end",()=>{t(k(a,r))}),e.on("error",e=>{t(null),d(e)})):t(null)})}export const yApiSchemaMock=(e,r)=>new Promise(o=>{t.get(`${e.host}/api/interface/get?id=${e.id}&token=${e.token}`,e=>{e.setEncoding("utf8");let t="";e.on("data",e=>{t+=e}),e.on("end",()=>{try{let e=JSON.parse(t);if(e?.data?.res_body_is_json_schema){let t=JSON.parse(e.data.res_body),n=y(t);void 0!==r?o(m(n,r)):o(n)}}catch(e){d(e)}})})});export const yApiMock=(e,r)=>new Promise((o,a)=>{let i=new n(r.host),c={hostname:i.hostname,port:i.port,path:e.url?.replace(new RegExp(r.pathRewrite),`/mock/${r.projectId}/`),method:e.method,headers:e.headers,query:Object.fromEntries(i.searchParams)},s=t.request(c,e=>{e.setEncoding("utf8");let t="";e.on("data",e=>{t+=e}),e.on("end",()=>{try{o(JSON.parse(t))}catch(e){d(e)}})});s.on("error",e=>{a(e.message)}),s.write(JSON.stringify(e.body)),s.end()});let w=()=>{if(!a(p.mockPath)){O={};return}let e={},t=s(p.mockPath,["\\.(t|j)s$"]);c(i("Updating mock...","245"),!0),t.forEach(t=>{try{Object.assign(e,h(t).default)}catch(e){d(e)}}),c(i("Mock update successful","245"),!0),O=e},O={};w();export function containMockUrl(e){return Object.keys(O).find(t=>RegExp(`^${t.replace(/(:\w*)[^/]/g,"((?!/).)")}*$`).test(e))}function E(e,t){if(t.writableEnded)return t;let r=new n(`http://localhost:3000${e.url}`),o=e.method||"GET",a=`${o} ${r.pathname}`,i=containMockUrl(a)||a,c=O[i];if(c){if(u(o,r.pathname,{note:"MOCK",labelAlign:"center",labelLen:8,labelForegroundColor:f[o].fg,labelBackgroundColor:f[o].bg}),t.send=e=>t.end("string"==typeof e?e:JSON.stringify(e)),t.writeHead(200,{"Content-Type":e.headers["content-type"]}),"function"==typeof c){let o=l(i.split(" ")[1],r.pathname);r.searchParams&&Object.assign(e,{query:Object.fromEntries(r.searchParams)}),o&&Object.assign(e,{params:o.params}),e.body=j(e);try{c(e,t)}catch(e){d(e)}return!0}return t.end("string"==typeof c?c:JSON.stringify(c)),!0}return!1}export default(()=>{if(!a(p.mockPath))return;let t=e(p.mockPath,(e,t)=>{if(t){let e=r(p.mockPath,t);delete h.cache[e]}w()});return g(()=>{t.close()}),E});
|
package/lib/dev/server.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createServer as e}from"node:http";import{createServer as t}from"node:https";import{platform as o}from"node:os";import{
|
|
1
|
+
import{createServer as e}from"node:http";import{createServer as t}from"node:https";import{platform as o}from"node:os";import{extname as r,join as n,sep as i}from"node:path";import{env as s}from"node:process";import{ink as a,println as m}from"@moneko/utils";import{CA_ORGANIZATION as l,isCertificateInstalled as p}from"../commom/ca.mjs";import c from"../commom/mime.mjs";import d from"../commom/open.mjs";import{CONFIG as C}from"../config.mjs";import f from"../dev/get-cert.mjs";import{setupProxy as h}from"../dev/proxy.mjs";import u,{cacheBody as A}from"./mock.mjs";let E={"Access-Control-Allow-Credentials":"true","Access-Control-Allow-Headers":"Authorization, Content-Type, Accept, X-Requested-With, Origin, DNT, User-Agent, Cache-Control, X-CSRF-Token, X-API-Key, X-Client-Version, X-Device-ID, Content-Language, Accept-Language, X-Custom-Header, X-Mx-ReqToken, Keep-Alive, If-Modified-Since","Access-Control-Allow-Methods":"GET, DELETE, HEAD, OPTIONS, POST, PUT, PATCH, PURGE, LINK, UNLINK, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK, REPORT, SEARCH, CONNECT, TRACE","Access-Control-Allow-Origin":"*","Cache-Control":"no-store, no-cache, must-revalidate, proxy-revalidate",Pragma:"no-cache",Expires:"0"};async function y(y){let T=n(y.root_dir,"index.html"),g=u();function w(e,t,o){let n=e.headers["accept-encoding"],i=n?.includes("br"),s=`${o}.${i?"br":"gz"}`,a=y.fileSystem.existsSync(s);a&&t.setHeader("Content-Encoding",i?"br":"gzip");let m=y.fileSystem.createReadStream(a?s:o,{autoClose:!0});m.on("open",()=>{t.writeHead(200,Object.assign({},E,y.headers,{"Access-Control-Allow-Origin":e.headers.origin??"*","Content-Type":c[r(o)]||"application/octet-stream"}))}),m.on("error",e=>{switch(m.readable=!0,e.code){case"ENOENT":t.writeHead(301,{Location:"/index.html"}),t.end();break;case"EACCES":t.writeHead(403,{"Content-Type":"text/plain"}),t.end(`Forbidden: ${e.message}`);break;default:t.writeHead(500,{"Content-Type":"text/plain"}),t.end(`Internal Server Error: ${e.message}`)}}),m.pipe(t)}async function O(e,t){if(A(e),!(y.onRequest&&y.onRequest(e,t))){if(!(C.proxy&&await h(e,t,C.proxy)||t.writableEnded||g&&g(e,t))&&!t.writableEnded){if("GET"===e.method){let o=("/"===e.url?T:decodeURIComponent(n(y.root_dir,e.url.replace(y.basename??"/","/")))).split("?")[0];if(y.fileSystem.existsSync(o))return w(e,t,o)}if(e.headers.accept?.includes("text/html"))return w(e,t,T.split("?")[0]);t.writeHead(404,{"Content-Type":"text/plain"}),t.end("File Not Found")}}}let x=y.https?t(await f(y.host,!0===y.https?{install:!0}:y.https),O):e(O);if(x.listen(y.port),y.https&&!await p(l)&&"darwin"===o()){let e=s.npm_execpath?.split(i).pop()?.split(".").shift()||"npm",t=s.npm_lifecycle_event??"start",o=`> sudo ${e} ${t}`;m(a("⚠️ 未检测到本地 SSL 证书,请通过以下命令重启项目以安装证书: ","yellow")),m(a(o,"yellow")),m("")}return y.open&&d(`${y.https?"https:":"http:"}//${y.host}:${y.port}${"/"===y.basename?"":y.basename}`),x}export default y;
|
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 r from"node:process";import{URL as
|
|
2
|
-
`):(
|
|
1
|
+
import{exec as e,spawn as t}from"node:child_process";import{watchFile as o}from"node:fs";import{relative as r}from"node:path";import i from"node:process";import{URL as s}from"node:url";import{ink as n,print as a,println as m,progressBar as l}from"@moneko/utils";import p from"webpack";import c from"webpack-hot-middleware";import{merge as f}from"webpack-merge";import{diffObject as h}from"./commom/diff-object.mjs";import d,{config_files as u}from"./commom/paths.mjs";import g from"./commom/rule.mjs";import w from"./commom/sigint-exit.mjs";import{devLog as y,PORT as $}from"./dev/config.mjs";import j from"./dev/generate-progress-html.mjs";import v from"./dev/server.mjs";import b from"./options/reslove.mjs";import{ESLintPlugin as x}from"./plugin/eslint.mjs";import{StylelintPlugin as C}from"./plugin/stylelint.mjs";import{empty as _}from"./utils/index.mjs";import{CONFIG as P,getConfig as S}from"./config.mjs";import{createDevelopmentConfiguration as k}from"./create-development-configuration.mjs";import{outputFileSystem as E}from"./file-system.mjs";import{isLibrary as B,refresh as H}from"./process-env.mjs";let I=!1,O="/____progress____",T={percentage:0,info:""},q="/__hmr__",G=new URLSearchParams({name:"client",path:q.substring(1),dynamicPublicPath:!0,timeout:2e3,reload:!H,quiet:!0,noInfo:!0,overlay:!1,autoConnect:!0}).toString(),L=await k({watchOptions:{stdin:!0,aggregateTimeout:300,ignored:g.node_modules},entry:{main:[`${b.hotMiddlewareClient}?${G}`]},plugins:[new p.WatchIgnorePlugin({paths:[g.node_modules,/\.d\.ts$/]}),new p.ProgressPlugin({handler(e,t,...o){let r=o.length?`[${t}] ${o.join(" ")}`:" ";I||(T.info=r,T.percentage=e,I=1===e);let s=P.bar;if(s){let t=s.name||"Build";s.quiet?i.stdout.write(`${r}
|
|
2
|
+
`):(l(e||0,1,{msg:r,name:t,barColor:s.barColor,nameColor:s.nameColor,barBgColor:s.barBgColor,msgColor:s.msgColor}),1===e&&i.stdout.write("\r\x1b[2K"))}}})]});function U(e){let t=e.join(","),o=[r(d.programPath,`${P.alias["@"]}/**/*.{${t}}`).replace(/\\/g,"/")];return B&&o.push(r(d.programPath,`${P.alias["@pkg"]}/**/*.{${t}}`).replace(/\\/g,"/")),o}P.eslint&&L.plugins.push(new x({fix:!0,cache:!0,cacheLocation:`${d.lintCachePath}/.eslintcache`,cacheStrategy:"metadata",files:U(["js","jsx","ts","tsx","json","html","vue"]),...P.eslint})),P.stylelint&&L.plugins.push(new C({fix:!0,cache:!0,cacheLocation:`${d.lintCachePath}/.stylelintcache`,files:U(["css","scss","sass","less","ts","tsx","js","jsx"]),...P.stylelint}));let F=p(L);if(!F)throw Error("无法创建编译器");F.outputFileSystem=E;let N=F.watch(F.options.watchOptions,y);if(!N)throw Error("无法创建监视器");F.hooks.done.tap("client-log",e=>{y(null,e)});let R=`${P.basename}/${q}`.replace(/\/+/g,"/"),J=c(F,{log:!1,path:R,heartbeat:2e3}),K=await v({port:$,root_dir:F.options.output.path,fileSystem:F.outputFileSystem,headers:P.devServer.headers,https:P.devServer.https,host:P.devServer.host,open:P.devServer.open,basename:P.basename,onRequest(e,t){if(!t.writableEnded){if("GET"===e.method){let o=new s(`${P.devServer.https?"https":"http"}://${e.headers.host}${e.url}`);if(o.pathname===O)return t.writeHead(200,{"Content-Type":"application/json; charset=utf-8","Cache-Control":"no-store"}),t.end(JSON.stringify(T)),!0;if(!I)return t.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),t.end(j(O,T)),!0;if(o.pathname===R&&"text/event-stream"===e.headers.accept)return J(e,t,_),!0}return!1}}});function M(){i.exit(0)}K.on("close",()=>{N.close(_),J.close()});let W=await Promise.all(u.map(S)),z=f(W[0]||{},W[1]||{});u.forEach(function(t){o(t,async function(){var o;let[r,s]=await Promise.all(u.map(S)),l=f(r||{},s||{}),p=h(z,l);1===Object.keys(p).length&&"proxy"in p?(a(n("代理更新中...","yellow"),!0),a(n("代理更新完成...","green"),!0),P.proxy=l.proxy,z.proxy=l.proxy,z=l):(z=l,m(n(`检测到工程配置${n(`[${t}]`,"blue")}变更, 程序即将重启...`,"yellow"),!0),o=$,e(A?`netstat -ano | findstr :${o}`:`lsof -i :${o} -t`,(e,t)=>{if(e){m(n(`查找端口 ${o} 时发生错误: ${e.message}`,"red")),m(n("请尝试手动重启程序","yellow"));return}let r=t.trim().replace(/\r\n/g,"\n").split("\n").filter(Boolean),s=A?r[0]?.split(/\s+/).pop()?.trim():r[0]?.trim();if(!s)return void m(n(`未找到占用端口 ${o} 的进程, 请尝试手动重启程序`,"yellow"));try{i.kill(Number(s),"SIGHUP")}catch(e){m(n(`终止进程 ${s} 时发生错误: ${e.message}`,"red"))}}))})});let A="win32"===i.platform;i.on("SIGHUP",function(){let e;K.close(),(e=t(i.argv[0],i.argv.slice(1),{detached:!1,stdio:"inherit"})).unref(),e.on("close",M)}),i.on("exit",function(){K.close()}),w(M);
|
package/lib/index.d.mts
CHANGED
|
@@ -8,7 +8,7 @@ export { default as parseArgs } from './commom/parse-args.mjs';
|
|
|
8
8
|
export { CUSTOMCONFIG, default as paths, routeDir, yarnArgv } from './commom/paths.mjs';
|
|
9
9
|
export { default as printLog } from './commom/print-log.mjs';
|
|
10
10
|
export { default as require } from './commom/require.mjs';
|
|
11
|
-
export
|
|
11
|
+
export { default as Rule } from './commom/rule.mjs';
|
|
12
12
|
export { default as timer } from './commom/timer.mjs';
|
|
13
13
|
export { type MockConfiguration, type ProxyFuncType, type RequestFormData, yApiMock, type YApiOption, type YApiOptionBySchema, yApiSchemaMock } from './dev/mock.mjs';
|
|
14
14
|
export type { ProxyConfig } from './dev/proxy.mjs';
|
package/lib/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{default as hasPkg}from"./commom/has-pkg.mjs";export{getIPv4,getPort}from"./commom/net.mjs";export{default as open}from"./commom/open.mjs";export{default as parseArgs}from"./commom/parse-args.mjs";export{CUSTOMCONFIG,default as paths,routeDir,yarnArgv}from"./commom/paths.mjs";export{default as printLog}from"./commom/print-log.mjs";export{default as require}from"./commom/require.mjs";export
|
|
1
|
+
export{default as hasPkg}from"./commom/has-pkg.mjs";export{getIPv4,getPort}from"./commom/net.mjs";export{default as open}from"./commom/open.mjs";export{default as parseArgs}from"./commom/parse-args.mjs";export{CUSTOMCONFIG,default as paths,routeDir,yarnArgv}from"./commom/paths.mjs";export{default as printLog}from"./commom/print-log.mjs";export{default as require}from"./commom/require.mjs";export{default as Rule}from"./commom/rule.mjs";export{default as timer}from"./commom/timer.mjs";export{yApiMock,yApiSchemaMock}from"./dev/mock.mjs";export{default as jsxDomExpressions}from"./options/jsx-dom-expressions.mjs";export{default as splitChunk}from"./options/split-chunk.mjs";export{HtmlPlugin}from"./plugin/html-plugin.mjs";export*from"./plugin/manifest/index.mjs";export{APPTYPE,coreName,FRAMEWORK,isCI,isDev,isLibrary,isMicro,mainDirectory,packageJson,PACKAGENAME}from"./process-env.mjs";export{digest,md5,node_modules,resolveProgram,toCamelCase}from"./utils/index.mjs";export*from"@moneko/mdx";export*from"@moneko/utils";import o from"webpack";export{o as webpack};
|
package/lib/module.config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e;import s,
|
|
1
|
+
let e;import{join as s,sep as o}from"node:path";import t,{CUSTOMCONFIG as r}from"./commom/paths.mjs";import a from"./commom/require.mjs";import l from"./commom/rule.mjs";import n from"./options/modify-vars.mjs";import i from"./options/reslove.mjs";import m from"./options/swcrc.mjs";import{getLightningCssTargets as c}from"./polyfills/targets.mjs";import{node_modules as p,resolveProgram as d}from"./utils/index.mjs";import u from"./utils/svg-to-data-uri.mjs";import{outputConfig as f}from"./common.mjs";import{CONFIG as h}from"./config.mjs";import{app_schema as y,FRAMEWORK as j,isDev as g,virtual_schema as x}from"./process-env.mjs";let v={loader:s(t.corePath,"/loader/lightning-css.cjs"),options:{sourceMap:!!h.sourceMap,targets:c(),rem:!!h.rem,importLoaders:2}},w={loader:i.lessLoader,options:{sourceMap:!!h.sourceMap,lessOptions:{modifyVars:n,javascriptEnabled:!0}}},P=new Map,L=["components","example","mock","site","src","server"].map(d);function M(e){return new Promise(s=>{s([...L,t.corePath,...h.rulesInclude?.[e]?.map(e=>"string"==typeof e?function(e){if(P.has(e))return P.get(e);try{let s,t=a.resolve(e).split(o),r=t.lastIndexOf("node_modules");return s=-1!==r?t.slice(0,r).join(o):t.join(o),P.set(e,[s]),[s]}catch{try{let s=a.resolve(`${e}${o}package.json`).replace(`${o}package.json`,"");P.set(e,[s])}catch{P.set(e,[p(e),p(`.pnpm/${e}`)])}return P.get(e)}}(e):e).flat()||[]])})}r&&L.push(d(r)),h.overrideResolve&&h.overrideResolve.override&&L.push(h.overrideResolve.override);let _=await Promise.all([M("css"),M("js"),M("media"),M("wasm"),M("font")]),C=_[0],I=_[1],O=_[2],b=_[3],N=_[4];i.sassLoader&&(e={loader:i.sassLoader,options:{implementation:await import("sass"),sassOptions:{}}});let $=f.library?.type==="umd"&&!1===h.htmlPluginOption,k=[{resourceQuery:/raw/i,type:"asset/source"},{resourceQuery:/url/i,type:"asset/resource",generator:{filename(e){let s=e.filename;return s&&s.toLocaleLowerCase().endsWith("wasm?url")?"wasm/[hash][ext]":"assets/[hash][ext]"}}},{test:l.wasm,type:"webassembly/async",include:b},{test:l.txt,type:"asset/source"},{test:l.image,type:"asset",dependency:{not:["url"]},parser:{dataUrlCondition:$?()=>!0:{maxSize:4096}},generator:{filename:e=>e.filename?.toLocaleLowerCase().endsWith(".svg")?"assets/svg/[hash][ext]":"assets/images/[hash][ext]",dataUrl:(e,s)=>s.filename.toLocaleLowerCase().endsWith(".svg")?u(e.toString()):e},include:O},{test:l.video,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/video/[hash][ext]"},include:O},{test:l.font,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/fonts/[hash][ext]"},include:N}],B=h.prefixJsLoader.filter(Boolean)||[];"react"===j&&h.reactCompiler&&B.unshift({loader:s(t.corePath,"/loader/react-compiler.cjs"),options:{panicThreshold:g?void 0:"NONE",...h.reactCompiler}}),h.cssInJs&&"object"==typeof h.cssInJs.minify&&B.unshift({loader:s(t.corePath,"/loader/css-in-js-minify.cjs"),options:Object.assign({moduleName:"@moneko/css",allowFuncs:["css","injectGlobal"]},h.cssInJs.minify)});export default(o=>{let r={react:{loader:i.swcLoader,options:m(o)},solid:{loader:s(t.corePath,"/loader/solid.cjs"),options:{jsxOptions:h.jsxDomExpressions,refresh:h.refresh}}}[j];return{generator:{"css/auto":{exportsOnly:!1,exportsConvention:"camel-case-only",localIdentName:"[uniqueName]_[id]_[local]",esModule:!0},"css/module":{exportsOnly:!1,exportsConvention:"camel-case-only",localIdentName:"[uniqueName]_[id]_[local]",esModule:!0}},parser:{javascript:{commonjsMagicComments:!0,dynamicImportMode:"lazy",dynamicImportPrefetch:!1,dynamicImportPreload:!1,importMeta:!0,importMetaContext:!0},css:{import:!0,namedExports:!0,url:!0},json:{exportsDepth:1}},noParse:h.noParse,rules:[{oneOf:[...k,{test:l.js,use:[...B,r].filter(Boolean),include:I},...h.cssModules.map(e=>({test:s=>l.node_modules_css_module.test(s)&&s.includes(e),use:[v],type:"css/module"})),{test:l.css,use:[v],type:"css/auto",include:C},e&&{test:l.sass_global,use:[v,e],type:"css/auto",include:C},e&&{test:l.scss,use:[v,e],type:"css/module",include:C},{test:l.less_global,use:[v,w],type:"css/auto",include:C},{test:l.less,use:[v,w],type:"css/module",include:C},{test:l.markdown,use:[...B,{loader:s(t.corePath,"/loader/mdx.cjs"),options:h.mdx}].filter(Boolean),exclude:[l.node_modules,e=>e.startsWith(`${y}:`)||e.startsWith(`${x}:`)]}].filter(Boolean)},...h.moduleRules].filter(Boolean)}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import e from"../commom/has-pkg.mjs";import o from"../commom/require.mjs";import{CONFIG as i}from"../config.mjs";let t=i.prefixCls||"n",r=i.htmlPluginOption?.favicon||"favicon.ico",s={"@prefix-cls":t,"@iconfont-css-prefix":`${t}-icon`,"@favicon":JSON.stringify(`${i.basename}/${r}`.replaceAll(/\\/g,"/"))},m={},n=e("antd/dist/default-theme.js");n&&Object.assign(m,{...o(n)},{"@ant-prefix":t,hack:`true;@import (optional, reference) "${o.resolve("antd/lib/style/color/colorPalette.less")}";`}),Object.assign(s,m,i.modifyVars);export default s;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
let e;import
|
|
1
|
+
let e;import n from"../commom/rule.mjs";let i=(e={priority:-10,reuseExistingChunk:!0},function(n){return{...e,test:n}}),o={chunks:"all",minChunks:1,minSize:2e4,maxSize:25e4,enforceSizeThreshold:5e4,maxAsyncRequests:30,maxInitialRequests:30,minRemainingSize:0,hidePathInfo:!0,cacheGroups:{json:{type:"json"},CHANGELOG:i(/CHANGELOG\.md/),site:i(/site/),vendors:{test:n.node_modules,priority:-10,reuseExistingChunk:!0},"monaco-editor":{test:/[\\/]node_modules[\\/]monaco-editor/,name:"monaco-editor",chunks:"all"},common:{minChunks:2,priority:-20,reuseExistingChunk:!0}}};export default o;
|
package/lib/plugin/copy.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{statSync as e}from"node:fs";import{loadFileRaw as
|
|
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{
|
|
1
|
+
import{join as e,parse as t,resolve as o,sep as s}from"node:path";import{fileURLToPath as i}from"node:url";import{Worker as r}from"node:worker_threads";import{fileExists as a,loadFile as n}from"@moneko/utils";import m from"webpack";import{module_federation_schema as p}from"../process-env.mjs";import l 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 r(i(new URL("../worker/dts.mjs",import.meta.url))),this.worker.setMaxListeners(0),this.worker.postMessage({options:{compilerOptions:{isolatedModules:!1,outFile:this.assetName,verbatimModuleSyntax:!1},include:[...Object.values(e.exposes),"typings/**/*.d.ts"]}}),this.worker.once("message",e=>{this.dts=e,this.worker.terminate()})}apply(i){let{exposes:r}=this.option,h=Object.keys(r).map(e=>{let t=e.replace(/\.tsx?$/i,"");return{key:e,name:t,path:o(`types/${this.option.name}/${t}.d.ts`),originPath:r[e]}});i.hooks.thisCompilation.tap({name:this.name,stage:i.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS},o=>{o.hooks.processAssets.tapPromise(this.name,async()=>{let i=h.map(async o=>{if(a(o.originPath)){let i=t(o.originPath),r=`export * from '${t(i.dir).name}/${i.name}'`;if("public-path"===i.name){let e=await n(o.originPath.replace(/\.mjs$/,".d.mts"));e&&(r=e)}return[l(e(this.option.name,o.name),r),l(e(p,this.option.name,o.name).replace(s,":"),r)].join("\n")}return""}),r=await Promise.all(i);r.unshift(this.dts),o.emitAsset("module-federation.d.ts",new m.sources.RawSource(r.join("\n")),{javascriptModule:!1})})})}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync as t,readFileSync as e}from"node:fs";import
|
|
1
|
+
import{existsSync as t,readFileSync as e}from"node:fs";import{basename as s,posix as i,resolve as n}from"node:path";import{URL as o}from"node:url";import a from"webpack";function h(...t){let e=t[0];if(/^https?:\/\//.test(e)){let s=e;for(let e=1;e<t.length;e++)s=new o(t[e],s).href;return s}return i.join(...t)}export class HtmlPlugin{constructor(t={}){this.AddEntry=/(?:.*\/)?main\.[a-zA-Z0-9]+\.bundle\.js$/,this.faviconPath="",this.name="HtmlPlugin",this.cachedMetaTags=null,this.cachedCustomTags=null,this.options={title:"WebApp",filename:"index.html",inject:"head",...t}}getPublicPath(t){if("string"==typeof this.options.publicPath)return this.options.publicPath;let e=t.getAssetPath(t.outputOptions.publicPath,{hash:t.hash}),s="auto"===e?"/":e;return s.length&&!s.endsWith("/")&&(s+="/"),s}apply(i){i.hooks.compilation.tap(this.name,o=>{o.hooks.processAssets.tap({name:this.name,stage:a.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL},()=>{let r;if(this.options.favicon){let r=n(i.context,this.options.favicon);if(t(r)){let t=s(this.options.favicon),i=e(r);o.emitAsset(t,new a.sources.RawSource(i),{javascriptModule:!1});let n=this.getPublicPath(o);this.faviconPath=h(n,t)}else o.warnings.push(new a.WebpackError(`Favicon file ${r} does not exist`))}if(r=this.options.templateContent?this.options.templateContent(this.options):this.options.template?e(n(i.context,this.options.template),{encoding:"utf-8"}):this.generateDefaultTemplate(),this.options.inject){let t=this.getAssets(o);r=this.injectAssets(r,t,this.options.inject)}let l="function"==typeof this.options.filename?this.options.filename("index"):this.options.filename||"index.html";o.emitAsset(l,new a.sources.RawSource(r),{javascriptModule:!1})})})}generateDefaultTemplate(){let t=this.generateMetaTags();return`<!DOCTYPE html><html><head><meta charset="utf-8">${t}<title>${this.options.title}</title><link rel="icon" type="image/x-icon" href="${this.faviconPath}"></head><body><div id="root"></div></body></html>`}generateMetaTags(){if(null!==this.cachedMetaTags)return this.cachedMetaTags;if(!this.options.meta)return this.cachedMetaTags="","";let t=Object.entries(this.options.meta).map(([t,e])=>{if("string"==typeof e)return`<meta name="${t}" content="${e}">`;if(void 0===e)return"";let s=Object.entries(e).map(([t,e])=>`${t}="${e}"`).join(" ");return`<meta ${s}>`}).join("");return this.cachedMetaTags=t,t}generateCustomTags(){if(null!==this.cachedCustomTags)return this.cachedCustomTags;let t={head:"",body:""};if(!this.options.tags)return this.cachedCustomTags=t,t;let e=[],s=[];return this.options.tags.forEach(t=>{let{tag:i="script",textContent:n="",inject:o=this.options.inject,...a}=t,h=Object.entries(a).filter(([,t])=>null!=t).map(([t,e])=>!0===e?t:`${t}="${e}"`).join(" "),r=`<${i} ${h}>${n}</${i}>`;"head"===o?e.push(r):s.push(r)}),t.head=e.join(""),t.body=s.join(""),this.cachedCustomTags=t,t}getAssets(t){let e={js:[],css:[]},s=["import-scripts","require","async-node"],i=this.getPublicPath(t);for(let n of t.entrypoints.values())for(let t of n.chunks){let n=t.getEntryOptions(),o=n?.chunkLoading;if(!(n?.asyncChunks||o&&s.includes(o)))for(let s of t.files)s.endsWith(".js")?e.js.push(h(i,s)):s.endsWith(".css")&&e.css.push(h(i,s))}return e}injectAssets(t,e,s){let i=e.css.length?e.css.map(t=>`<link href="${t}" rel="stylesheet" />`).join(""):"",n=e.js.length?e.js.map(t=>`<script defer ${this.AddEntry.test(t)?'entry="true" ':""}src="${t}"></script>`).join(""):"",o=this.generateCustomTags(),a=t.split("</head>");if(2===a.length){let[t,e]=a,h=e.split("</body>");return"head"===s?`${t}${i}${n}${o.head}</head>${h[0]}${o.body}</body>${h[1]||""}`:`${t}${o.head}</head>${h[0]}${i}${n}${o.body}</body>${h[1]||""}`}return t}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync as s,readFileSync as t}from"node:fs";import
|
|
1
|
+
import{existsSync as s,readFileSync as t}from"node:fs";import{basename as e,join as i,resolve as o}from"node:path";import r from"webpack";import{isDev as n,packageJson as a}from"../../process-env.mjs";export*from"./types.mjs";let{PROCESS_ASSETS_STAGE_SUMMARIZE:p,PROCESS_ASSETS_STAGE_REPORT:c}=r.Compilation;export class ManifestPlugin{constructor(s){this.name="ManifestPlugin",this.options={filename:"site.webmanifest",resourcesFilename:"app-resource.json",name:a.name,description:a.description,scope:"/",display:"standalone",background_color:"#fff",icons:[{src:"https://h5static.dewucdn.com/node-common/718d5e10-576d-8b14-b0b1-e4c58c3b3f40.webp",type:"image/webp",sizes:"512x512"}]},this.options={...this.options,...s}}getPublicPath(s){if(this.options.publicPath)return this.options.publicPath;let t=s.getAssetPath(s.outputOptions.publicPath,{hash:s.hash}),e="auto"===t?"/":t;return e.length&&!e.endsWith("/")&&(e+="/"),e}addAsset(n,a,p){if(!p)return;let c=this.getPublicPath(a);return p.map(p=>{let l={...p};if(l.src&&!l.src.startsWith("http")){let p=o(n.context,l.src);if(s(p)){let s=e(l.src),o=t(p);a.emitAsset(s,new r.sources.RawSource(o),{javascriptModule:!1}),l.src=i(c,s)}else a.warnings.push(new r.WebpackError(`Asset file ${p} does not exist`))}return l})}apply(s){let t=this.name,{filename:e,resourcesFilename:i,start_url:o,icons:r,screenshots:l,...h}=this.options;s.hooks.thisCompilation.tap(t,u=>{u.hooks.processAssets.tap({name:t,stage:n?p:c},()=>{let t={...h,start_url:o??this.getPublicPath(u),screenshots:this.addAsset(s,u,l),icons:this.addAsset(s,u,r),version:`${a.version}(${n?"Dev":u.fullHash})`};if(u.emitAsset(e,new s.webpack.sources.RawSource(JSON.stringify(t)),{javascriptModule:!1}),i){let t=[];if(n)for(let[,s]of u.entrypoints)s.getFiles().forEach(s=>{t.includes(s)||t.push(s)});else t=u.getAssets().map(s=>s.name);u.emitAsset(i,new s.webpack.sources.RawSource(JSON.stringify(t)),{javascriptModule:!0})}})})}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"webpack";import
|
|
1
|
+
import{join as e,parse as t,relative as r,sep as o}from"node:path";import s from"webpack";import m from"../commom/module-resolve.mjs";import a from"../commom/paths.mjs";import{CONFIG as l}from"../config.mjs";import n from"../utils/fetch-module-federation-dts.mjs";import{resolveProgram as p}from"../utils/index.mjs";import{mf_vm as i}from"../vm/mf.mjs";import{ModuleFederationExposesDeclarationPlugin as f}from"./exposes-declararion.mjs";import{ExternalRemotesPlugin as h}from"./external-remotes.mjs";let u=s.NormalModuleReplacementPlugin,c=s.container.ModuleFederationPlugin,d={},$=[];function x(e,r){let s=e.replaceAll(o,"/").replace(/\.tsx?$/i,""),m=t(r);i.setData(s,{type:".tsx",source:()=>{if(r.startsWith(a.nodeModules)){let e=r.substring(a.nodeModules.length).split("node_modules").pop()?.replaceAll(o,"/").replace(/^\//,"");return`export * from '${e}';`}return r.startsWith(l.alias["@"])?`export * from '@/${t(m.dir).name}/${m.name}'`:"export {};"}})}let y=l.moduleFederation?.map(t=>{let o={},s={},l={};if(Array.isArray(t.remotes))for(let e=0,r=t.remotes.length;e<r;e++){let r=t.remotes[e],o=r.alias||r.name,m=r.filename||"remote_entry.js";if(s[o]=`${r.name}@${r.host}/${m}`,Array.isArray(r.library))for(let e=0,t=r.library.length;e<t;e++)d[r.library[e]]=`${o}/${r.library[e]}`;n(r.host,r.name)}if(Array.isArray(t.exposes)){t.exposes.length>0&&!t.exposes.find(e=>"public-path"===e)&&t.exposes.push({name:"public-path",path:`./${r(a.programPath,e(a.corePath,"./polyfills/public-path.mjs"))}`});for(let e=0,r=t.exposes.length;e<r;e++){let r=t.exposes[e];if("string"==typeof r){let e=r.startsWith(".");o[`./${r}`]=m(e?p(r):r),e&&(l[r]=o[`./${r}`],x(`${t.name}/${r}`,l[r]))}else if("[object Object]"===Object.prototype.toString.call(r)){let e=r.path.startsWith(".");o[`./${r.name}`]=m(e?p(r.path):r.path),e&&(l[`./${r.name}`]=o[`./${r.name}`],x(`${t.name}/${r.name}`,l[`./${r.name}`]))}}t.exposes?.length&&$.push(new f({exposes:l,name:t.name}))}return new c({filename:"remote_entry.js",...t,remotes:s,exposes:o})});y.length>0&&(y.push(new h),y.push(new u(/(.*)/,e=>{d[e.request]&&(e.request=d[e.request])})),$.forEach(e=>y.push(e))),l.env.injectRemoteReactRefresh=Object.keys(d).includes("react-dom");export default y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{relative as e}from"node:path";import{fileExists as t}from"@moneko/utils";import r from"../commom/paths.mjs";let o="OverrideResolverPlugin";export class OverrideResolverPlugin{constructor(e){this.options=e}apply(i){let s=i.ensureHook("resolved"),{override:a,original:l}=this.options;if(a&&l){let n=`./${e(r.programPath,l)}`,p=`./${e(r.programPath,a)}`;i.getHook("existing-file").tapAsync(o,(e,r,h)=>{let m=e.request||e.path;if(m&&m.startsWith(l)&&e.relativePath){let u=m.replace(l,a);if(t(u)){let t=e.relativePath.replace(n,p);return Object.assign(e,{path:u,relativePath:t,__innerRequest_relativePath:t,__innerRequest:t}),i.doResolve(s,e,`${o} 使用目标模块${a}`,r,h)}}return h()})}}}
|
package/lib/utils/dts.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"typescript";import
|
|
1
|
+
import e from"typescript";import t from"../commom/rule.mjs";let i={declaration:!0,emitDeclarationOnly:!0,target:e.ScriptTarget.ESNext,skipLibCheck:!0,checkJs:!1,skipDefaultLibCheck:!0,noResolve:!0,types:[],noEmitOnError:!1,noImplicitAny:!1,noImplicitThis:!1,noImplicitReturns:!1,noUnusedLocals:!1,noUnusedParameters:!1,noFallthroughCasesInSwitch:!1,strictNullChecks:!1,strictFunctionTypes:!1,strictBindCallApply:!1,strictPropertyInitialization:!1,strict:!1};export function extractMfModules(t){let i=e.createSourceFile("temp.ts",t,e.ScriptTarget.Latest,!0),r=[];return!function t(i){if(e.isModuleDeclaration(i)){let e=i.name.text;if(e.startsWith("mf:")){let t=e.substring(3);r.push(t)}}e.forEachChild(i,t)}(i),r}export function generateDeclaration(r,a){let s=(t.js.test(a)?a:`${a}.ts`).replace(/^\.+/,""),n="";return e.createProgram([s],i,{getSourceFile:t=>{if(t===s)return e.createSourceFile(t,r,i.target)},writeFile:(e,t)=>{e.endsWith(".d.ts")&&(n=t)},getDefaultLibFileName:()=>"lib.d.ts",getCurrentDirectory:()=>"",getCanonicalFileName:e=>e,useCaseSensitiveFileNames:()=>!0,getNewLine:()=>"\n",fileExists:()=>!0,readFile:()=>"",directoryExists:()=>!0,getDirectories:()=>[]}).emit(),n}export function getExportKeys(t,i){let r=new Set;for(let a of e.createSourceFile(i,t,e.ScriptTarget.Latest,!0).statements)if(e.isExportDeclaration(a)){if(a.exportClause&&e.isNamedExports(a.exportClause))for(let e of a.exportClause.elements)r.add(e.name.text)}else if(e.isExportAssignment(a))r.add("default");else if((e.isVariableStatement(a)||e.isFunctionDeclaration(a)||e.isClassDeclaration(a))&&a.modifiers?.some(t=>t.kind===e.SyntaxKind.ExportKeyword)){if(e.isFunctionDeclaration(a)||e.isClassDeclaration(a))a.name&&r.add(a.name.text);else if(e.isVariableStatement(a))for(let t of a.declarationList.declarations)e.isIdentifier(t.name)&&r.add(t.name.text)}return Array.from(r)}
|
package/lib/utils/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createHash as e,createHmac as t}from"node:crypto";import{
|
|
1
|
+
import{createHash as e,createHmac as t}from"node:crypto";import{resolve as o}from"node:path";import{fileExists as r}from"@moneko/utils";import n from"../commom/paths.mjs";import c from"../commom/require.mjs";export function toCamelCase(e){return e.replace(/-./g,e=>e.charAt(1).toUpperCase())}export function convertToCamelCase(e){return e.toLowerCase().replace(/^@/,"").replace(/\//g,"-").replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():"").replace(/^./,e=>e.toUpperCase()).replace(/Ui$/,"UI")}export function resolveProgram(e){return o(n.programPath,`./${e}`)}export function node_modules(e){return o(n.nodeModules,`./${e}`)}export function isObject(e){let t=typeof e;return null!==e&&("object"===t||"function"===t)}export function isFunction(e){return["[object Function]","[object AsyncFunction]","[object GeneratorFunction]"].includes(Object.prototype.toString.call(e))}export function transformModule(e){let t="";if("string"==typeof e)t=e;else for(let[o,r]of Object.entries(e))t+=`export const ${o} = ${isFunction(r)?r:JSON.stringify(r)};`;return t}export function empty(){}export function digest(e,o){return t(o?.algorithm??"sha1",o?.secret??"mo").update(e).digest(o?.encoding??"hex")}export function md5(t,o="hex"){return e("md5").update(t).digest(o)}export function getConfigWithTypescript(e,t){return r(e)?(delete c.cache[e],c(e)):t??{}}
|
package/lib/utils/seo.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{scanRouter as
|
|
1
|
+
import{join as o}from"node:path";import{scanRouter as m,sitemap as t}from"@moneko/mdx";import{saveFileSync as r}from"@moneko/utils";import{routeDir as e}from"../commom/paths.mjs";import{outputConfig as i}from"../common.mjs";import{CONFIG as p}from"../config.mjs";import{isLibrary as s}from"../process-env.mjs";import{resolveProgram as n}from"./index.mjs";export default function(){let{domain:f,jekyll:a,path:l}=p.seo||{},j=l&&n(l)||i?.path;if(!f||!j)return;let x=`https://${f}${p.basename}`;r(o(j,"CNAME"),f),r(o(j,"robots.txt"),`User-agent: *
|
|
2
2
|
Allow: /
|
|
3
3
|
|
|
4
|
-
Sitemap: ${x}/sitemap.txt`),
|
|
4
|
+
Sitemap: ${x}/sitemap.txt`),r(o(j,"sitemap.txt"),[x,...t(e,x,m(e,s))].join("\n")),a||r(o(j,".nojekyll"),"")};
|
package/lib/vm/app.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getAppEntry as
|
|
1
|
+
import{join as e}from"node:path";import{getAppEntry as r,getAppFallback as o,getAppMergeRouter as m,getAppNormalizeCss as t,getAppPrefixRouter as s,getAppRem as a,getAppSuspense as p}from"@moneko/mdx";import n,{routeDir as i}from"../commom/paths.mjs";import f from"../commom/reactive-object.mjs";import{readJson as c}from"../commom/read-json.mjs";import{CONFIG as l}from"../config.mjs";import d from"../plugin/module-federation.mjs";import{app_schema as u,APPTYPE as j,FRAMEWORK as x,framework as y,frameworkVersionStr as g,SSR as h}from"../process-env.mjs";import k from"../utils/create-types.mjs";import{generateDeclaration as v}from"../utils/dts.mjs";import{convertToCamelCase as C,transformModule as b}from"../utils/index.mjs";import{getEnvDts as D,vm_dts as w}from"./dts.mjs";import{generateLocales as z}from"./locales.mjs";import M from"./render-app.mjs";import{getRouter as P}from"./routes.mjs";export const app_vm=new f({env:{type:".ts",source:()=>{let e=`${u}:env`,r=D(b(l.env));return w.setData(e,k(e,v(r,e))),r}},info:r=>{let o=e(n.programPath,"package.json"),m=c(o),t=b({...m,projectName:C(m.name),ssr:h,base:l.basename,type:j,routerMode:l.routerMode,prefixCls:l.prefixCls,theme:l.theme,frameworkVersion:g,framework:y}),s=`${u}:info`;return r?.addDependency(o),w.setData(s,k(s,v(t,s))),t},render:{type:".tsx",source:()=>"react"===x?M:""},entry:()=>r(e(l.alias["@"],"./index.ts"),!!d.length,!!l.rem,!!l.normalizeCss,j,x),fallback:()=>o(l.fallbackCompPath),"merge-router":()=>m(),"prefix-router":()=>s(),suspense:{type:".tsx",source:()=>p(j,x)},routes:e=>(e.addContextDependency(i),P()),locals:r=>{let o=e(l.alias["@"],"./locales");return r.addContextDependency(o),z()},normalize:{type:".css",source:()=>t()},rem:()=>a(l.rem?.designSize||1680)});
|
package/lib/vm/docs.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e;import{
|
|
1
|
+
let e;import{join as t,sep as o}from"node:path";import{loadFile as r,scanFolderSync as m}from"@moneko/utils";import n from"../commom/paths.mjs";import s from"../commom/reactive-object.mjs";import c from"../commom/rule.mjs";import{CONFIG as a}from"../config.mjs";import{app_schema as p,docs_schema as l,FRAMEWORK as i,framework as d,isLibrary as u,isReact as f,isSolid as $}from"../process-env.mjs";import g from"./coverage.mjs";import{generatorExample as h}from"./example.mjs";import x from"./generate-doc.mjs";let j={react:"createElement",solid:"createComponent"}[i],v=()=>u?m(a.alias["@pkg"],["\\.tsx?$"]).filter(e=>!/(^|\/)\.[^\\/\\.]|\.test\./i.test(e)).map(e=>{let t=getCommentPath(e),o=t.replace(`${l}:`,"");return docs_vm.has(o)||docs_vm.setData(o,{type:".txt",source:async t=>{let o=await r(e);return t.addDependency(e),x(o,e)}}),t}):[];export const docs_vm=new s({coverage:{source:e=>(e.addDependency(n.coveragePath),g(n.coveragePath))},docs:{source:async e=>{e.addContextDependency(n.componentsPath);let t=v();return getDocs(t)}},example:{source:e=>(e.addContextDependency(n.componentsPath),h())}});export const getCommentPath=(e=a.alias["@pkg"]?.length,o=>t(`${l}:comment`,o.substring(e)).replace(/\\/g,"/"));export const getDocs=e=>{let t=`import { ${j}${$?",Dynamic":""} } from "${d}${$?"/web":""}";import SuspenseComp from "${p}:suspense";function call_then(res) {return {default: ${f?"() =>":""}${j}(${$?"Dynamic":"'div'"}, {${$?"innerHTML: res.default, component: 'div', class: 'n-md-box' ":"dangerouslySetInnerHTML: {__html:res.default}, className: 'n-md-box'"} })};}`,r={};e.forEach(e=>{let t=e.replace(/docs:comment[/\\]/,"").split(o),m=t.pop(),n=t.join("/");r[n]||(r[n]={}),r[n][m]=`rr(() => ${j}(SuspenseComp, { comp: () => import(/* webpackChunkName: '${e}' */ '${e}').then(call_then)}))rr`});let m={};for(let e in r)Object.hasOwn(r,e)&&(m[e]=Object.values(r[e]));return`${t}export default ${JSON.stringify(m).replace(c.extract_func,"$1")}`};v();
|
package/lib/vm/dts.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{loadFileSync as
|
|
1
|
+
import{join as e}from"node:path";import{loadFileSync as t,updateFile as o,updateFileSync as r}from"@moneko/utils";import s from"../commom/paths.mjs";import n from"../commom/reactive-object.mjs";import{readJson as m}from"../commom/read-json.mjs";import{app_schema as a,APPTYPE as i,CACHE_NAME as p,FRAMEWORK as d,framework as l,frameworkVersionStr as c,packageJson as v,service_worker_schema as f,SSR as u,virtual_schema as j}from"../process-env.mjs";import $ from"../utils/create-types.mjs";import{generateDeclaration as y}from"../utils/dts.mjs";import{convertToCamelCase as h,transformModule as g}from"../utils/index.mjs";export const dts_path=e(s.nodeModules,"@types",p,"index.d.ts");export const vm_dts=new n({});export function getEnvDts(e){return`${e};declare global {import AppEnv from '${a}:env';type ImportMetaEnv = Readonly<typeof AppEnv>;interface ImportMeta {readonly env: ImportMetaEnv;}namespace NodeJS {interface ProcessEnv extends ImportMetaEnv {readonly [key: string]: string | number | boolean | undefined;}}}`}vm_dts.on("change",()=>{let e=Object.values(vm_dts.data).join("\n");o(dts_path,e)});export function initDts(o){let n=$(`${a}:env`,y(getEnvDts(g(o.env)),`${a}:env`));vm_dts.setData(`${a}:env`,n);let M=$(`${a}:info`,y(g({...m(e(s.programPath,"package.json")),projectName:h(v.name),ssr:u,type:i,frameworkVersion:c,framework:l,base:o.basename,routerMode:o.routerMode,prefixCls:o.prefixCls,theme:o.theme}),`${a}:info`));vm_dts.setData(`${a}:info`,M),vm_dts.setData(`${f}:precaching`,$(`${f}:precaching`,t(e(s.corePath,"./service-worker/precaching.d.ts"))||"")),o.virtualModule&&Object.keys(o.virtualModule).map(e=>{let t=g(o.virtualModule[e]),r=`${j}:${e}`;vm_dts.setData(r,$(r,y(t,r)))});let x=o.moduleFederation?.flatMap(e=>Array.isArray(e.remotes)?e.remotes.map(e=>e.name):[]).filter(Boolean);r(dts_path,Object.values(vm_dts.data).join("\n")),r(e(s.nodeModules,"@moneko/init.d.json"),JSON.stringify({extends:`@moneko/${d}/base`,compilerOptions:{types:[`@moneko/${d}/env.d.ts`,`@types/${p}/index.d.ts`,...x.map(e=>`@types/${p}/${e}.d.ts`)]}}))}
|
package/lib/vm/example.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{join as e}from"node:path";import{generateExample as t}from"@moneko/mdx";import o from"../commom/paths.mjs";import m from"../commom/reactive-object.mjs";import r from"../commom/rule.mjs";import{CONFIG as n}from"../config.mjs";import{example_schema as a,isLibrary as p}from"../process-env.mjs";export const example_vm=new m({});let c=new m({});export function generatorExample(){if(!p)return"export default {}";let m=p&&!1!==n.htmlPluginOption?JSON.parse(t(o.componentsPath,`${a}:`,"6")):{},i={};for(let t in m){if(!Object.hasOwn(m,t))continue;c.setData(t,m[t]);let r=t.replace(`${a}:`,"");example_vm.has(r)||example_vm.setData(r,{source:m=>(m.addContextDependency(e(o.componentsPath,r)),c.getData(t))}),Object.assign(i,{[t]:`rr(() => import('${t}'))rr`})}return`export default ${JSON.stringify(i).replace(r.extract_func,"$1")}`}generatorExample();
|
package/lib/vm/generate-doc.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e
|
|
1
|
+
import{dirname as e}from"node:path";import t from"typescript";import{CONFIG as n}from"../config.mjs";import r from"../options/md-to-html.mjs";import{digest as l}from"../utils/index.mjs";let o=t.ScriptKind,i=t.ScriptTarget,a=t.SyntaxKind,c=t.createSourceFile,s=t.forEachChild,u=t.getLeadingCommentRanges,f=t.isInterfaceDeclaration,m=t.isQuestionToken,p=t.isPropertySignature,g=t.isFunctionTypeNode,$=t.isUnionTypeNode,d=t.isMethodSignature,h={};function b(e){let t=u(e.getSourceFile().text,e.pos);if(t){let n=e.getSourceFile().text.slice(t[0].pos,t[0].end).match(/\/\*\*([\s\S]*?)\*\//);if(n)return n[1].replaceAll(/^\s*\* ?/gm,"").replace(/\s+$/,"").trim()}}function y(e){if(!e)return;let t=e.match(/@since\s+([^\n]+)/);return t?t[1].trim():void 0}function x(e){if(!e)return;let t=e.match(/@author (\w+)\s*(?:<([^>]+)>)?/);if(t&&t.length>0){let e=t[1].trim(),n=t[2]?.trim(),r=/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(n);return n?r&&(n=`mailto:${n}`):n=`https://github.com/${e}`,`[${e}](${n})`}}function j(e){if(!e)return;let t=e.match(/@ignore\s+([^\n]+)/);return t?t[1].trim():void 0}let A=/(?<!['"])(unknown|any|void|bigint|object|undefined|null|boolean|number|string|symbol)(?!['"])/g;function S(e,t){if(!e)return;let r=e.replaceAll(/\b([A-Z][a-zA-Z0-9]*)\b/g,e=>{if(h[e]){let r=`/${[n.basename,h[e]].join("/").split("/").filter(Boolean).join("/")}`;return t?`[\\color{#009688}{${e}}](${r})`:`[${e}](${r})`}return t?`\\color{#009688}{${e}}`:e});return t&&(r=r.replaceAll(A,e=>`\\color{#009688}{${e}}`)),r}function T(e){if(e)return(function(e){let t;if(!e)return;let n=[];for(;t=/\\color{([^|}]*)\|?([^|}]*)\|?([^|}]*)\|?([^}]*)}{([^}]*)}/g.exec(e);)n.push(t[0]);return e.replaceAll(/[{}[\]()=>]|keyof|typeof|true|false/g,e=>n.some(t=>t.includes(e))?e:`\\color{#569cd6}{${e}}`)})(e)?.replaceAll(/^\s*\|\s*|\s*\|\s*$/gm,"").replaceAll(/\n/g,"<br/>").replaceAll(/\*/g,"\\*").replaceAll(/\|/g,"\\|").replaceAll(/(['"])((?:(?!\1).)*)\1/g,"\\color{#ce9178}{$1$2$1}")}function k(e){if(e)return e.replaceAll(/@example\s*([\s\S]*?)(?=@[a-zA-Z]|\n*$)/g,"").replaceAll(/^@[a-z].+/gm,"").replaceAll(/(\n\s+)+/g,"<br />").replaceAll(/\n/g,"<br />").replaceAll(/(<br \/>)$/g,"")}let v=new Map;export default function w(u,A){let w=l(u),B=v.get(w);if(B)return B;let z=c(A,u,i.Latest,!0,o.TS),F="";s(z,r=>{f(r)?F+=function(r){let l=r.name.text;Object.assign(h,{[r.name.text]:e(r.getSourceFile().fileName).replace(n.alias["@pkg"],"")});let o=b(r),i=y(o),c=k(o),s=j(o)?.split("|")||[],u=s.includes("comment"),f=s.includes("initial"),A=s.includes("optional"),v=s.includes("version"),w=s.includes("author"),B=c?`\\color{|4||0.45}{${l}}`:l,z=(function(e){let n=[];if(e.heritageClauses){for(let r of e.heritageClauses)if(r.token===t.SyntaxKind.ExtendsKeyword)for(let e of r.types)n.push(e.getText())}return n})(r)?.map(e=>`<n-tag color="#4c81db" css=".tag{gap:0px;}">${S(T(e))}</n-tag>`),F=[c,B,i&&`\\color{#52c11b|1||0.9}{${i}}`,z.length>0&&`<sub>\`extends\`</sub> ${z.join(" ")}`].filter(Boolean).join(" "),N=`## ${F}`,K=r.members.filter(e=>p(e)&&e.type?.kind!==a.NeverKeyword||d(e)),C=[];if(K.length>0){for(let e=0,t=K.length;e<t;e++){let t=K[e],n=S(T(d(t)?`(${t.parameters.map(e=>`${e.name.getText()}: ${e.type?.getText()||"any"}`).join(", ")}): ${t.type?.getText()||"any"}`:t.type?.getText()||"any"),!0),r=b(t),l=T(t.name.getText());l&&!l.startsWith("\\color")&&(d(t)||function(e){if(e.type){if(!$(e.type))return g(e.type);else for(let t of e.type.types)if(g(t))return!0}return!1}(t)||n?.includes("=>")?l=`\\color{#f9a913}{${l}}`:/^["'](.+)["']$/.test(l)||(l=`\\color{#4c81db}{${l}}`));let i=t.questionToken&&m(t.questionToken);C.push([l,!A&&`\\color{${i?"#f9a913":"#52c11b"}\\|\\|\\|0.9}{${i?"✘":"✔"}}`,!u&&T(k(r)),n,!f&&T(function(e){if(!e)return;let t=e.match(/@default\s+([^\n]+)/);return t?t[1].trim():void 0}(r)),!v&&T(y(r)),!w&&(x(r)||x(o)),function(e){if(!e)return;let t=e.match(/@example\s*([\s\S]*?)(?=@[a-zA-Z]|\n*$)/);return t?t[1].trim():void 0}(r)])}let e=!1,t=!1,n=!1,r=!1;for(let l=0,o=C.length;l<o;l++){let o=C[l];!u&&o[2]&&(r=!0),!f&&o[4]&&(n=!0),!v&&o[5]&&(t=!0),!w&&o[6]&&(e=!0)}N+="\n";let l=["属性",!A&&"必要",r&&"说明","类型",n&&"默认值",t&&"版本",e&&"作者"].filter(Boolean).join("|");N+=`|${l}|`;let i=[":-",!A&&":-",r&&":-",":-",n&&":-",t&&":-",e&&":-"].filter(Boolean);N+="\n";let a=i.join("|");N+=`|${a}|`;for(let l=0,o=C.length;l<o;l++){let o=C[l];N+="\n";let i=[(o[7]?`<n-popover arrow="true" trigger="click" content=${JSON.stringify(`<n-md css=.n-md-body{margin-bottom:0;padding:0.5rem;background-color:transparent;backdrop-filter:none;box-shadow:none;}>${o[7]}</n-md>`)}><n-button size="small" type="primary" circle="true" style="margin-right:8px;">?</n-button></n-popover>`:"")+(o[0]||"-"),!A&&(o[1]||"-"),r&&(o[2]||"-"),o[3]||"-",n&&(o[4]||"-"),t&&(o[5]||"-"),e&&(o[6]||"-")].filter(Boolean).join("|");N+=`|${i}|`}N+="\n"}return N+"\n"}(r):t.isEnumDeclaration(r)&&(F+=function(r){let l=r.name.text,o=b(r),i=k(o),a=y(o);Object.assign(h,{[r.name.text]:e(r.getSourceFile().fileName).replace(n.alias["@pkg"],"")});let c=i?`\\color{|4||0.45}{${l}}`:l,s=[i,c,a&&`\\color{#52c11b|1||0.9}{${a}}`].filter(Boolean).join(" "),u=j(o)?.split("|")||[],f=u.includes("comment"),m=u.includes("version"),p=u.includes("author"),g=`## ${s}`;if(r.members.length>0){let e=[];for(let n=0,l=r.members.length;n<l;n++){let l=r.members[n],i=T(l.name.getText()),a=b(l),c=T(function(e){let n=e.initializer;if(n&&t.isStringLiteral(n))return` '${n.text}'`}(l)),s=T(y(a)),u=T(k(a));!i||i.startsWith("\\color")||/^["'](.+)["']$/.test(i)||(i=`\\color{#4c81db}{${i}}`),e.push([i,!f&&u,c,!m&&s,!p&&(x(a)||x(o))])}let n=!1,l=!1,i=!1;for(let t=0,r=e.length;t<r;t++){let r=e[t];!f&&r[1]&&(i=!0),!m&&r[3]&&(l=!0),!p&&r[4]&&(n=!0)}g+="\n";let a=["属性",i&&"说明","值",l&&"版本",n&&"作者"].filter(Boolean).join("|");g+=`|${a}|`;let c=[":-",i&&":-",":-",l&&":-",n&&":-"].filter(Boolean);g+="\n";let s=c.join("|");g+=`|${s}|`;for(let t=0,r=e.length;t<r;t++){let r=e[t];g+="\n";let o=[r[0]||"-",i&&(r[1]||"-"),r[2]||"-",l&&(r[3]||"-"),n&&(r[4]||"-")].filter(Boolean).join("|");g+=`|${o}|`}}return g+"\n\n"}(r))});let N=r(F);return v.set(w,N),N}
|
package/lib/vm/locales.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
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);${i}`}if(
|
|
1
|
+
import{basename as e,join as t}from"node:path";import{directoryExists as a,scanFolderSync as o}from"@moneko/utils";import l from"../commom/log.mjs";import r from"../commom/require.mjs";import{CONFIG as n}from"../config.mjs";import{FRAMEWORK as c}from"../process-env.mjs";export function generateLocales(){let s=t(n.alias["@"],"./locales"),g={react:'import sso from "shared-store-object";',solid:'import { createEffect, createRoot, getOwner } from "solid-js";import { createStore } from "solid-js/store";'},i={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;'}[c];function u(e,t){return`${g[c]}
|
|
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);${i}`}if(a(s)&&!1!==n.htmlPluginOption){let t={};o(s,[".ts$"]).filter(e=>!/^\..*|\.d\.ts$/.test(e)).forEach(a=>{let o=e(a).replace(/\.[^.]+$/,"");try{delete r.cache[a],Object.assign(t,{[o]:r(a).default})}catch(e){Object.assign(t,{[o]:{}}),l(e)}});let a=[],n={};for(let e in t){if(!Object.hasOwn(t,e))continue;let{language:o=e,title:l=o,icon:r,translation:c={}}=t[e];a.push({language:o,title:l,icon:r}),n[o]={language:o,title:l,icon:r,translation:c}}return u(a,n)}return u([],{})}
|
package/lib/vm/scope.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{join as o}from"node:path";import{getAppScope as m}from"@moneko/mdx";import e from"../commom/has-pkg.mjs";import r from"../commom/reactive-object.mjs";import{CONFIG as s}from"../config.mjs";export const scope_vm=new r({components:{source:()=>{let r=o(s.alias["@"],"./scope.tsx"),t=o(s.alias["@"],"./scope.ts");return!e(r)&&e(t)&&(r=t),m(r,"@/scope")}}});
|
package/lib/vm/sw.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{join as o}from"node:path";import{loadFileSync as r}from"@moneko/utils";import e from"../commom/reactive-object.mjs";import{paths as m}from"../index.mjs";export const sw_vm=new e({precaching:{type:".ts",source:()=>r(o(m.corePath,"./service-worker/precaching.js"))||""}});
|
package/lib/worker/eslint.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let a,e;import{parentPort as
|
|
1
|
+
let a,t;import{relative as e}from"node:path";import{parentPort as r}from"node:worker_threads";import{ESLint as o}from"@moneko/eslint";import s from"../commom/paths.mjs";if(!r)throw Error("This file must be run as a worker");r?.setMaxListeners(0),r.on("message",async({options:i})=>{try{a||(a=new o({cache:i.cache,cacheLocation:i.cacheLocation,cacheStrategy:i.cacheStrategy,fix:i.fix}),t=await a.loadFormatter("stylish"));let m=i.files.map(a=>(i.lintDirtyModulesOnly?e(s.programPath,a):a).replace(/\\/g,"/")),c=await a.lintFiles(m),n=[],h=[];i.fix&&await o.outputFixes(c),c.forEach(a=>{a.errorCount?h.push(a):a.warningCount&&n.push(a)});let l=await Promise.all([t.format(n,{cwd:s.programPath,rulesMeta:{}}),t.format(h,{cwd:s.programPath,rulesMeta:{}})]);r.postMessage(l.map(a=>a.replace(/[^\r\n]*(\r?\n)*$/,"")))}catch{r.postMessage(["",""])}});
|
package/lib/worker/stylelint.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parentPort as e}from"node:worker_threads";import{stylelint as r}from"@moneko/stylelint";
|
|
1
|
+
import{parentPort as e}from"node:worker_threads";import{stylelint as r}from"@moneko/stylelint";if(!e)throw Error("This file must be run as a worker");let t=await r.formatters.string;e?.setMaxListeners(0),e.on("message",async({options:a})=>{try{let i=await r.lint({cache:a.cache,cacheLocation:a.cacheLocation,fix:a.fix,files:a.files.map(e=>e.replace(/\\/g,"/")),quietDeprecationWarnings:a.quietDeprecationWarnings,quiet:a.quiet});delete i.output;let n=[],s=[];i.results.forEach(e=>{if(!e.ignored&&(e.errored||e.parseErrors.length||e.invalidOptionWarnings.length||e.deprecations.length)){let r=[],t=[];e.warnings.forEach(e=>{"error"===e.severity?r.push(e):"warning"===e.severity&&t.push(e)}),r.length>0&&n.push({...e,warnings:r}),t.length>0&&s.push({...e,warnings:t})}});let o=[t(s,i),t(n,i)];e.postMessage(o.map(e=>e.replace(/[^\r\n]*(\r?\n)*$/,"")))}catch{e.postMessage(["",""])}});
|