@moneko/core 4.9.0 → 4.10.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ // 解除 Windows TCP 排除端口范围。
2
+ // 须管理员身份运行。非管理员或非 Windows 静默忽略。
3
+ //
4
+ // 静态段(带 *)用 netsh delete 删;动态段(不带 *)由 winnat 运行时分配,
5
+ // delete 无效,需重启 winnat 服务。治标不治本,治本需换端口或关 Hyper-V/WSL。
6
+ interface ExcludedTcpRange {
7
+ start: number;
8
+ end: number;
9
+ /** true=winnat 动态段(不带 *),只能重启 winnat;false=静态段(带 *),可 netsh delete */ isDynamic: boolean;
10
+ }
11
+ /** 解析当前 TCP 排除端口范围列表。 */ export declare function getExcludedTcpRanges(): ExcludedTcpRange[];
12
+ /** 查找包含指定端口的排除段。 */ export declare function hitPortInExcludedRanges(port: number): ExcludedTcpRange | undefined;
13
+ /**
14
+ * 释放指定端口所在排除段。
15
+ * - 静态段: netsh delete 删整段
16
+ * - 动态段: 重启 winnat
17
+ * - 不在范围/非 Windows/失败: 静默忽略
18
+ */ export declare function releasePortExclusion(port: number): void;
19
+ export { };
@@ -0,0 +1 @@
1
+ import{execSync as t}from"node:child_process";import{platform as e}from"node:os";import n from"./log.mjs";export function getExcludedTcpRanges(){try{let e=t("netsh interface ipv4 show excludedportrange protocol=tcp",{windowsHide:!0,encoding:"utf8"}),n=[];for(let t of e.split(/\r?\n/)){let e=t.match(/^\s*(\d+)\s+(\d+)\s*(\*)?\s*$/);e&&n.push({start:+e[1],end:+e[2],isDynamic:"*"!==e[3]})}return n}catch(t){return n(t),[]}}export function hitPortInExcludedRanges(t){return getExcludedTcpRanges().find(e=>t>=e.start&&t<=e.end)}export function releasePortExclusion(r){if("win32"!==e())return;let o=hitPortInExcludedRanges(r);if(!o)return;let s=o.isDynamic?"net stop winnat && net start winnat":`netsh interface ipv4 delete excludedportrange protocol=tcp startport=${o.start} numberofports=${o.end-o.start+1}`;try{t(s,{windowsHide:!0,stdio:"pipe",shell:!0})}catch(t){n(t)}}
@@ -1,2 +1,2 @@
1
- import{ink as e,println as o,termClear as r}from"@moneko/utils";import{hostHelp as t}from"../commom/host.mjs";import s from"../commom/log.mjs";import{getIPv4 as m,getPort as n}from"../commom/net.mjs";import i from"../commom/print-log.mjs";import{CONFIG as l}from"../config.mjs";let a=l.devServer.port||3e3;export const PORT=await n(a);l.devServer.port=PORT;let c="/"===l.basename?"":l.basename,d=a!==PORT&&e(`Port ${e(`${a}`,"yellow")} is in use, trying ${e(`${PORT}`,"green")} instead.
2
- `,"245");export function getServerAddress(e){return`${l.devServer.https?"https":"http"}://${"local"===e?l.devServer.host:m()}:${PORT}${c}`}let p=e("You application is running here:","245");export function devLog(m,n){r(3);let a=(n?.endTime??0)-(n?.startTime??0);if(o(p,!0),o("",!0),i("Local",getServerAddress("local"),{timestamp:!1,labelBackgroundColor:"blue",labelLen:9}),i("Network",getServerAddress("net"),{timestamp:!1,labelBackgroundColor:"29"}),o("",!0),o(e(`Compiled successfully in ${e(`${a}ms`,"green")}`,"245"),!0),o("",!0),d&&o(d),t(l.devServer.host),n){let e=[];n.compilation.warnings.forEach(r=>{r.message.includes("Conflicting order between css ./node_modules/")&&r.message.includes("monaco-editor")?e.push(r.message):o(r.message)}),n.compilation.errors.forEach(e=>{o(e.message)}),e.length&&s(e.join("\n"))}m&&o(m.message)}
1
+ import{ink as e,println as o,termClear as r}from"@moneko/utils";import{hostHelp as m}from"../commom/host.mjs";import t from"../commom/log.mjs";import{getIPv4 as s,getPort as n}from"../commom/net.mjs";import i from"../commom/print-log.mjs";import{releasePortExclusion as l}from"../commom/release-port-exclusion.mjs";import{CONFIG as a}from"../config.mjs";let c=a.devServer.port||3e3;export const PORT=await n(c);l(PORT),a.devServer.port=PORT;let p="/"===a.basename?"":a.basename,d=c!==PORT&&e(`Port ${e(`${c}`,"yellow")} is in use, trying ${e(`${PORT}`,"green")} instead.
2
+ `,"245");export function getServerAddress(e){return`${a.devServer.https?"https":"http"}://${"local"===e?a.devServer.host:s()}:${PORT}${p}`}let g=e("You application is running here:","245");export function devLog(s,n){r(3);let l=(n?.endTime??0)-(n?.startTime??0);if(o(g,!0),o("",!0),i("Local",getServerAddress("local"),{timestamp:!1,labelBackgroundColor:"blue",labelLen:9}),i("Network",getServerAddress("net"),{timestamp:!1,labelBackgroundColor:"29"}),o("",!0),o(e(`Compiled successfully in ${e(`${l}ms`,"green")}`,"245"),!0),o("",!0),d&&o(d),m(a.devServer.host),n){let e=[];n.compilation.warnings.forEach(r=>{r.message.includes("Conflicting order between css ./node_modules/")&&r.message.includes("monaco-editor")?e.push(r.message):o(r.message)}),n.compilation.errors.forEach(e=>{o(e.message)}),e.length&&t(e.join("\n"))}s&&o(s.message)}
@@ -1 +1 @@
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*as 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(e=>d(e));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 k=f.library?.type==="umd"&&!1===h.htmlPluginOption,B=[{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:k?()=>!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}],W=h.prefixJsLoader.filter(Boolean)||[];"react"===j&&h.reactCompiler&&W.unshift({loader:s(t.corePath,"/loader/react-compiler.cjs"),options:{panicThreshold:g?void 0:"NONE",...h.reactCompiler}}),h.cssInJs&&"object"==typeof h.cssInJs.minify&&W.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:[...B,{test:l.js,use:[...W,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:[...W,{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
+ 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*as n from"./commom/rule.mjs";import l 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 y}from"./config.mjs";import{app_schema as h,FRAMEWORK as j,virtual_schema as g}from"./process-env.mjs";let x={loader:s(t.corePath,"/loader/lightning-css.cjs"),options:{sourceMap:!!y.sourceMap,targets:c(),rem:!!y.rem,importLoaders:2}},v={loader:i.lessLoader,options:{sourceMap:!!y.sourceMap,lessOptions:{modifyVars:l,javascriptEnabled:!0}}},w=new Map,L=["components","example","mock","site","src","server"].map(e=>d(e));function M(e){return new Promise(s=>{s([...L,t.corePath,...y.rulesInclude?.[e]?.map(e=>"string"==typeof e?function(e){if(w.has(e))return w.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),w.set(e,[s]),[s]}catch{try{let s=a.resolve(`${e}${o}package.json`).replace(`${o}package.json`,"");w.set(e,[s])}catch{w.set(e,[p(e),p(".pnpm",e)])}return w.get(e)}}(e):e).flat()||[]])})}r&&L.push(d(r)),y.overrideResolve&&y.overrideResolve.override&&L.push(y.overrideResolve.override);let P=await Promise.all([M("css"),M("js"),M("media"),M("wasm"),M("font")]),_=P[0],I=P[1],b=P[2],O=P[3],C=P[4];i.sassLoader&&(e={loader:i.sassLoader,options:{implementation:await import("sass"),sassOptions:{}}});let k=f.library?.type==="umd"&&!1===y.htmlPluginOption,B=[{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:n.wasm,type:"webassembly/async",include:O},{test:n.txt,type:"asset/source"},{test:n.image,type:"asset",dependency:{not:["url"]},parser:{dataUrlCondition:k?()=>!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:b},{test:n.video,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/video/[hash][ext]"},include:b},{test:n.font,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/fonts/[hash][ext]"},include:C}],N=y.prefixJsLoader.filter(Boolean)||[];y.cssInJs&&"object"==typeof y.cssInJs.minify&&N.unshift({loader:s(t.corePath,"/loader/css-in-js-minify.cjs"),options:Object.assign({moduleName:"@moneko/css",allowFuncs:["css","injectGlobal"]},y.cssInJs.minify)});export default(o=>{let r={react:{loader:i.swcLoader,options:m(o)},solid:{loader:s(t.corePath,"/loader/solid.cjs"),options:{jsxOptions:y.jsxDomExpressions,refresh:y.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:y.noParse,rules:[{oneOf:[...B,{test:n.js,use:[...N,r].filter(Boolean),include:I},...y.cssModules.map(e=>({test:s=>n.node_modules_css_module.test(s)&&s.includes(e),use:[x],type:"css/module"})),{test:n.css,use:[x],type:"css/auto",include:_},e&&{test:n.sass_global,use:[x,e],type:"css/auto",include:_},e&&{test:n.scss,use:[x,e],type:"css/module",include:_},{test:n.less_global,use:[x,v],type:"css/auto",include:_},{test:n.less,use:[x,v],type:"css/module",include:_},{test:n.markdown,use:[...N,{loader:s(t.corePath,"/loader/mdx.cjs"),options:y.mdx}].filter(Boolean),exclude:[n.node_modules,e=>e.startsWith(`${h}:`)||e.startsWith(`${g}:`)]}].filter(Boolean)},...y.moduleRules].filter(Boolean)}});
@@ -1 +1 @@
1
- import{merge as e}from"webpack-merge";import r from"../commom/paths.mjs";import{swcImportOnDemandConfig as o}from"../commom/transfer-import-on-demand.mjs";import{CONFIG as t}from"../config.mjs";import m,{coreJsVersion as s}from"../polyfills/polyfills.mjs";import{isDev as p,isReact as a,jsxImportSource as i}from"../process-env.mjs";import c from"./reslove.mjs";let l={include:m(),mode:"entry",coreJs:s};export default((m,s={})=>e({module:{type:"es6",resolveFully:!0},sync:!0,jsc:{parser:{syntax:"typescript",tsx:a,decorators:!0,dynamicImport:!0},loose:!0,target:t.polyfill?void 0:"es2017",externalHelpers:!1,keepClassNames:!0,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:t.reactJsxRuntime||"automatic",throwIfNamespace:!0,refresh:a&&p,development:p,importSource:i},optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:r.swcCachePath,plugins:[!!(t.importOnDemand&&Object.keys(t.importOnDemand).length)&&[c.transformImports,o(t.importOnDemand)]].filter(Boolean)}},env:t.polyfill?l:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof t.swcrc?t.swcrc(p):t.swcrc||{},s));
1
+ import{merge as e}from"webpack-merge";import r from"../commom/paths.mjs";import{swcImportOnDemandConfig as o}from"../commom/transfer-import-on-demand.mjs";import{CONFIG as t}from"../config.mjs";import m,{coreJsVersion as s}from"../polyfills/polyfills.mjs";import{isDev as p,isReact as a,jsxImportSource as i}from"../process-env.mjs";import c from"./reslove.mjs";let l={include:m(),mode:"entry",coreJs:s};export default((m,s={})=>e({module:{type:"es6",resolveFully:!0},sync:!0,jsc:{parser:{syntax:"typescript",tsx:a,decorators:!0,dynamicImport:!0},loose:!0,target:t.polyfill?void 0:"es2017",externalHelpers:!1,keepClassNames:!0,transform:{legacyDecorator:!0,decoratorMetadata:!0,react:{runtime:t.reactJsxRuntime||"automatic",throwIfNamespace:!0,refresh:a&&p,development:p,importSource:i},reactCompiler:t.reactCompiler,optimizer:{simplify:!1}},experimental:{emitAssertForImportAttributes:!0,cacheRoot:r.swcCachePath,plugins:[!!(t.importOnDemand&&Object.keys(t.importOnDemand).length)&&[c.transformImports,o(t.importOnDemand)]].filter(Boolean)}},env:t.polyfill?l:void 0,sourceMaps:!0,parseMap:!0},"function"==typeof t.swcrc?t.swcrc(p):t.swcrc||{},s));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "4.9.0",
3
+ "version": "4.10.0-beta.1",
4
4
  "description": "@moneko/core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
@@ -130,7 +130,7 @@
130
130
  "homepage": "https://moneko-o.github.io/neko-ui/@moneko/config",
131
131
  "license": "MIT",
132
132
  "dependencies": {
133
- "@jsonjoy.com/fs-node": "4.57.7",
133
+ "@jsonjoy.com/fs-node": "4.64.0",
134
134
  "@moneko/convert": "1.3.0",
135
135
  "@moneko/eslint": "1.11.2",
136
136
  "@moneko/mdx": "1.0.3",
@@ -139,17 +139,17 @@
139
139
  "@moneko/stylelint": "1.8.3",
140
140
  "@moneko/transform-imports": "1.5.0",
141
141
  "@moneko/utils": "0.3.3",
142
- "@swc/core": "1.15.41",
143
- "browserslist": "4.28.2",
142
+ "@swc/core": "1.15.46",
143
+ "browserslist": "4.28.7",
144
144
  "core-js": "3.49.0",
145
145
  "core-js-compat": "3.49.0",
146
146
  "husky": "9.1.7",
147
- "less": "4.6.6",
147
+ "less": "4.8.0",
148
148
  "less-loader": "12.3.3",
149
- "lightningcss": "1.32.0",
149
+ "lightningcss": "1.33.0",
150
150
  "swc-loader": "0.2.7",
151
151
  "typescript": "6.0.3",
152
- "webpack": "5.107.2",
152
+ "webpack": "5.109.0",
153
153
  "webpack-hot-middleware": "2.26.1",
154
154
  "webpack-merge": "6.0.1"
155
155
  },