@moneko/core 4.8.5 → 4.8.6-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commom/bundle-dts.d.mts +17 -0
- package/lib/commom/bundle-dts.mjs +7 -0
- package/lib/index.d.mts +1 -0
- package/lib/index.mjs +1 -1
- package/lib/plugin/exposes-declararion.d.mts +1 -3
- package/lib/plugin/exposes-declararion.mjs +1 -1
- package/lib/worker/dts.mjs +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** 带别名的本地文件条目:key 为重新导出的模块名,value 为本地文件路径。 */ export interface BundleEntry {
|
|
2
|
+
[key: string]: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* 将一个或多个 npm 包或本地文件的类型声明打包成单一的 .d.ts 字符串。
|
|
6
|
+
* 每个文件对应一个 declare module "..." { ... } 块,传递依赖自动包含。
|
|
7
|
+
* 多包时共享 processedPkgs,全局去重,避免 declare module 重复声明。
|
|
8
|
+
*
|
|
9
|
+
* @param pkgOrPkgs - 包名、路径或带别名条目(支持混合数组),例如:
|
|
10
|
+
* - `'react'` — npm 包名
|
|
11
|
+
* - `['antd', 'dayjs']` — 多个 npm 包
|
|
12
|
+
* - `'./src/services/search.ts'` — 本地相对路径
|
|
13
|
+
* - `'/absolute/path/to/file.ts'` — 本地绝对路径
|
|
14
|
+
* - `{ 'pkg/sub': '/abs/path/to/sub.mjs' }` — 带别名的本地文件,key 作为重新导出的模块名
|
|
15
|
+
* - `['react', { 'mf:csss/app': './src/app.ts' }]` — 混合数组
|
|
16
|
+
* @param scope - 本地文件模块 ID 的作用域前缀,用于区分不同项目的声明(如 `'dflux-front'`)
|
|
17
|
+
*/ export declare function bundleDts(pkgOrPkgs: BundleEntry | string | (BundleEntry | string)[], scope?: string): Promise<string>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{readFileSync as t,statSync as e}from"node:fs";import{createRequire as r,isBuiltin as i}from"node:module";import{dirname as n,isAbsolute as l,join as s,posix as o,relative as f,resolve as d,sep as c}from"node:path";import u from"node:process";import a from"typescript";let p=new Map;function m(t){if(p.has(t))return p.get(t);try{let r=e(t).isFile();return p.set(t,r),r}catch{return p.set(t,!1),!1}}let y=new Map;function g(t){return y.has(t)||y.set(t,r(s(t,"__x__.js"))),y.get(t)}let h=r(import.meta.url),x=null;function $(){if(x)return x;let t=u.cwd(),e=a.findConfigFile(t,a.sys.fileExists,"tsconfig.json");if(e){let{config:t,error:r}=a.readConfigFile(e,a.sys.readFile);if(!r){let{options:r}=a.parseJsonConfigFileContent(t,a.sys,n(e));return x={...r,declaration:!0,emitDeclarationOnly:!0,noEmit:!1,skipLibCheck:!0,noEmitOnError:!1,declarationMap:!1}}}return x={declaration:!0,emitDeclarationOnly:!0,noEmit:!1,skipLibCheck:!0,noEmitOnError:!1,declarationMap:!1,target:a.ScriptTarget.ESNext,module:a.ModuleKind.ESNext,moduleResolution:a.ModuleResolutionKind.Bundler,jsx:a.JsxEmit.ReactJSX}}let F=null,k=null,j=new Map,O=/^(?:import|export)\s[\s\S]*?\bfrom\s+['"]([^'"]+)['"]\s*;?/gm,S=/\bimport\(\s*['"]([^'"]+)['"]\s*\)/g,w=/^\/\/\/\s*<reference\s+types="([^"]+)"\s*\/>/gm,D=/^\/\/\/\s*<reference\s+path="([^"]+)"\s*\/>/gm;function v(t){if(t){if("string"==typeof t)return t;for(let e of["import","require","default","node","browser"]){let r=t[e];if("string"==typeof r)return r;if(r&&"object"==typeof r){let t=v(r);if(t)return t}}}}function E(t,e=!1){if(t){if("string"==typeof t)return e?t:void 0;for(let e of Object.keys(t).filter(t=>"types"===t||t.startsWith("types@")).sort((t,e)=>"types"===t?-1:+("types"===e))){let r=E(t[e],!0);if(r)return r}for(let r of["import","require","default","node"]){let i=t[r];if("string"==typeof i){if(e)return i;continue}if(i&&"object"==typeof i){let t=E(i,e);if(t)return t}}}}function W(t){return t.startsWith("@types/")?t:t.startsWith("@")?`@types/${t.slice(1).replace("/","__")}`:`@types/${t}`}function b(e,r){try{let i=e.resolve(`${r}/package.json`),l=JSON.parse(t(i,"utf-8"));return{pkgDir:n(i),pkgJson:l}}catch{try{let i=n(e.resolve(r));for(;i!==n(i);){let e=s(i,"package.json");if(m(e)){let n=JSON.parse(t(e,"utf-8")),l=n.name;if(!l||l===r)return{pkgDir:i,pkgJson:n}}i=n(i)}}catch{}return null}}function J(e,r){let i,l,o=r?g(r):h,f=b(o,e)??(r?b(h,e):null);if(f&&(i=f.pkgDir,l=f.pkgJson),i&&l){let t=l.types??l.typings;if(t){let e=s(i,t);if(m(e))return{entryFile:e,pkgDir:i}}let e=s(i,"index.d.ts");if(m(e))return{entryFile:e,pkgDir:i};if(l.exports)for(let t of[".","./index"]){let e=l.exports[t];if(!e)continue;let r="string"==typeof e?void 0:E(e);if(r){let t=s(i,r);if(m(t))return{entryFile:t,pkgDir:i}}let n="string"==typeof e?e:v(e);if(n){let t=s(i,n).replace(/\.([cm]?)js$/,".d.$1ts");if(m(t))return{entryFile:t,pkgDir:i}}}if(l.typesVersions){let t=l.typesVersions["*"];if(t){let e=t["*"]??t.index;if(Array.isArray(e)&&e.length>0){let t=s(i,e[0].replace("*","index"));if(m(t))return{entryFile:t,pkgDir:i}}}}}let d=W(e);for(let e of r?[o,h]:[h])try{let r=e.resolve(`${d}/package.json`),i=JSON.parse(t(r,"utf-8")),l=n(r),o=i.types??i.typings??"index.d.ts",f=s(l,o);if(m(f))return{entryFile:f,pkgDir:l}}catch{}throw Error(`Cannot find types for "${e}"`)}function C(t,e){return f(e,t).split(c).join(o.sep).replace(/\.d\.[cm]?ts$/,"").replace(/\.[cm]?tsx?$/,"")}function M(e,r,o,f){let c=new Set,u=[],p=new Set,y=new Set;return!function o(g){let h,x=d(g);if(c.has(x))return;c.add(x);let v=/\.[cm]?tsx?$/.test(x)&&!/\.d\.[cm]?ts$/.test(x);try{if(v){if(!(h=function(t){let e=d(t);if(j.has(e))return j.get(e);let r=function(t){let e=d(t);if(k?.getSourceFile(e))return k;let r=$(),i=k?[...k.getRootFileNames(),e]:[e];return k=a.createProgram(i,r,F||(F=a.createCompilerHost($())),k??void 0)}(e),i=r.getSourceFile(e);if(!i)return j.set(e,""),"";let n="";r.emit(i,(t,e)=>{/\.d\.[cm]?ts$/.test(t)&&(n=e)},void 0,!0);let l=n.replace(/^export\s*\{\s*\};\s*$/gm,"").replace(/^#![^\n]*\n?/,"").trim();return j.set(e,l),l}(x)))return void c.delete(x)}else h=t(g,"utf-8").replace(/^#![^\n]*\n?/,"")}catch{c.delete(x);return}let E=new Map,W=t=>(E.has(t)||E.set(t,function(t,e){let r=s(n(e),t);if(m(r))return r;let i=r.lastIndexOf(".");if(i>Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\"))){let t=r.slice(0,i);for(let e of[".d.ts",".d.mts",".d.cts"]){let r=t+e;if(m(r))return r}}for(let t of[".d.ts",".d.mts",".d.cts"])if(m(r+t))return r+t;for(let t of["index.d.ts","index.d.mts","index.d.cts"]){let e=s(r,t);if(m(e))return e}for(let t of[".ts",".tsx",".mts",".cts"])if(m(r+t))return r+t;for(let t of["index.ts","index.tsx","index.mts","index.cts"]){let e=s(r,t);if(m(e))return e}return null}(t,g)),E.get(t));for(let[,t]of h.matchAll(O))if(t.startsWith(".")){let e=W(t);e&&o(e)}else if(!l(t)&&!i(t)){let e=t.startsWith("@")?t.split("/").slice(0,2).join("/"):t.split("/")[0];p.add(e),t!==e&&y.add(t)}for(let[,t]of h.matchAll(w))i(t)||p.add(t);for(let[,t]of h.matchAll(D)){let e=W(t);e&&o(e)}for(let[,t]of h.matchAll(S))if(!t.startsWith(".")&&!l(t)&&!i(t)){let e=t.startsWith("@")?t.split("/").slice(0,2).join("/"):t.split("/")[0];p.add(e),t!==e&&y.add(t)}let b=t=>{let i=C(t,r);return e?`${e}/${i}`:f?`${f}:${i}`:i},J=h.replace(O,(t,e)=>{if(!e.startsWith("."))return t;let r=W(e);if(!r)return t;let i=b(r),n=`'${e}'`,l=`"${e}"`,s=t.lastIndexOf(n),o=t.lastIndexOf(l);return s>o?`${t.slice(0,s)}'${i}'${t.slice(s+n.length)}`:o>=0?`${t.slice(0,o)}"${i}"${t.slice(o+l.length)}`:t}).replace(D,(t,e)=>{let r=W(e);return r?`/// <reference types="${b(r)}" />`:""}).replace(/\n{3,}/g,"\n\n").trim();if(!J)return;let M=b(x),A=J.replace(/^(?=.)/gm," ");u.push({id:M,content:`declare module "${M}" {
|
|
2
|
+
${A}
|
|
3
|
+
}`})}(o),{blocks:u,externalDeps:p,externalSubpaths:y}}function A(e,r,i,l,o,f){let c,{blocks:u,externalDeps:a,externalSubpaths:p}=M(e,i,r,f);for(let t of(e&&(c=`${e}/${C(d(r),i)}`,u.push({id:e,content:`declare module "${e}" {
|
|
4
|
+
export * from "${c}";
|
|
5
|
+
}`})),a))if(!l.has(t))try{let{entryFile:e,pkgDir:r}=J(t,i);l.add(t),A(t,e,r,l,o)}catch{}for(let e of p)if(!l.has(e))try{let r=function(e,r){let i,l,o=e.startsWith("@")?e.indexOf("/",e.indexOf("/")+1):e.indexOf("/");if(-1===o)return null;let f=e.slice(0,o),d=`./${e.slice(o+1)}`,c=r?g(r):h,u=b(c,f)??(r?b(h,f):null);if(u&&(i=u.pkgDir,l=u.pkgJson),!i||!l)return null;if(l.exports){let t=l.exports[d];if(t){let e="string"==typeof t?void 0:E(t);if(e){let t=s(i,e);if(m(t))return{entryFile:t,pkgDir:i}}let r="string"==typeof t?t:v(t);if(r){let t=s(i,r).replace(/\.([cm]?)js$/,".d.$1ts");if(m(t))return{entryFile:t,pkgDir:i}}}}let a=d.slice(2),p=s(i,a);if(m(p))return{entryFile:p,pkgDir:i};for(let t of[".d.ts",".d.mts",".d.cts"]){let e=p+t;if(m(e))return{entryFile:e,pkgDir:i}}for(let t of["index.d.ts","index.d.mts","index.d.cts"]){let e=s(p,t);if(m(e))return{entryFile:e,pkgDir:i}}let y=W(f);for(let e of r?[c,h]:[h])try{let r=e.resolve(`${y}/package.json`),i=JSON.parse(t(r,"utf-8")),l=n(r);if(i.exports){let t=i.exports[d];if(t){let e="string"==typeof t?void 0:E(t);if(e){let t=s(l,e);if(m(t))return{entryFile:t,pkgDir:l}}}}let o=s(l,a);if(m(o))return{entryFile:o,pkgDir:l};for(let t of[".d.ts",".d.mts",".d.cts"]){let e=o+t;if(m(e))return{entryFile:e,pkgDir:l}}}catch{}return null}(e,i);if(!r)continue;l.add(e);let f=e.startsWith("@")?e.split("/").slice(0,2).join("/"):e.split("/")[0],{blocks:d}=M(f,r.pkgDir,r.entryFile);for(let t of d)o.push(t)}catch{}for(let t of u)o.push(t)}function N(t){let e=d(t),r=u.cwd();if(/\.d\.[cm]?ts$/.test(e)&&m(e))return{entryFile:e,pkgDir:r};let i=e.match(/^(.*)\.[cm]?[tj]sx?$/);if(i){let t=i[1];for(let e of[".d.ts",".d.mts",".d.cts"]){let i=t+e;if(m(i))return{entryFile:i,pkgDir:r}}return/\.[cm]?tsx?$/.test(e)&&m(e)?{entryFile:e,pkgDir:r}:null}for(let t of[".d.ts",".d.mts",".d.cts"])if(m(e+t))return{entryFile:e+t,pkgDir:r};for(let t of["index.d.ts","index.d.mts","index.d.cts"]){let i=s(e,t);if(m(i))return{entryFile:i,pkgDir:r}}throw Error(`Cannot find local file: "${t}"`)}export async function bundleDts(t,e){let r=Array.isArray(t)?t:[t],i=new Set,n=[],s=[];for(let t of r)if("string"==typeof t)if(l(t)||t.startsWith("./")||t.startsWith("../")){let r=d(t);if(i.has(r))continue;i.add(r);let l=N(t);if(!l)continue;let{entryFile:s,pkgDir:o}=l;A("",s,o,i,n,e)}else{if(i.has(t))continue;i.add(t);let{entryFile:e,pkgDir:r}=J(t);A(t,e,r,i,n)}else for(let[r,l]of Object.entries(t)){let t=d(l);if(i.has(t))continue;i.add(t);let o=N(l);if(!o)continue;let{entryFile:f,pkgDir:c}=o,u=C(d(f),c),a=e?`${e}:${u}`:u;s.push({name:r,moduleId:a}),A("",f,c,i,n,e)}for(let{name:t,moduleId:e}of s)n.push({id:t,content:`declare module "${t}" {
|
|
6
|
+
export * from "${e}";
|
|
7
|
+
}`});let o=new Set,f=[];for(let t of n)o.has(t.id)||(o.add(t.id),f.push(t.content));return f.join("\n\n")}
|
package/lib/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type * from '../typings/global.js';
|
|
2
2
|
export type { CommitRuleConfig, CommitRules } from './bin/commit-lint.mjs';
|
|
3
|
+
export { bundleDts } from './commom/bundle-dts.mjs';
|
|
3
4
|
export type { cssInJsMinify, CssInJsMinifyOption } from './commom/css-in-js-minify.mjs';
|
|
4
5
|
export { declToMd } from './commom/decl-to-md.mjs';
|
|
5
6
|
export * from './commom/git.mjs';
|
package/lib/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{declToMd}from"./commom/decl-to-md.mjs";export*from"./commom/git.mjs";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*as Rule from"./commom/rule.mjs";export{default as timer}from"./commom/timer.mjs";export{yApiMock,yApiSchemaMock}from"./dev/mock.mjs";export{convertUriToFileName}from"./dev/proxy.mjs";export*from"./mcp/module-federation/common.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,getConfigWithTypescript,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};
|
|
1
|
+
export{bundleDts}from"./commom/bundle-dts.mjs";export{declToMd}from"./commom/decl-to-md.mjs";export*from"./commom/git.mjs";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*as Rule from"./commom/rule.mjs";export{default as timer}from"./commom/timer.mjs";export{yApiMock,yApiSchemaMock}from"./dev/mock.mjs";export{convertUriToFileName}from"./dev/proxy.mjs";export*from"./mcp/module-federation/common.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,getConfigWithTypescript,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};
|
|
@@ -6,9 +6,7 @@ interface ModuleFederationExposesDeclarationPluginOptions {
|
|
|
6
6
|
export declare class ModuleFederationExposesDeclarationPlugin {
|
|
7
7
|
private name;
|
|
8
8
|
private assetName;
|
|
9
|
-
private
|
|
10
|
-
private option;
|
|
11
|
-
private worker;
|
|
9
|
+
private options;
|
|
12
10
|
constructor(option: ModuleFederationExposesDeclarationPluginOptions);
|
|
13
11
|
apply(compiler: Compiler): void;
|
|
14
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{join as e
|
|
1
|
+
import{join as e}from"node:path";import{fileURLToPath as t}from"node:url";import{Worker as o}from"node:worker_threads";import r from"../commom/log.mjs";export class ModuleFederationExposesDeclarationPlugin{constructor(e){this.name="ModuleFederationExposesDeclarationPlugin",this.assetName="module-federation.d.ts",this.options=e}apply(s){s.hooks.done.tapPromise(this.name,async i=>{if(i.hasErrors())return;let n=s.outputFileSystem,a=s.options.output.path;if(!n||!a)return;let m=new o(t(new URL("../worker/dts.mjs",import.meta.url)));m.setMaxListeners(0);try{let t=await new Promise((e,t)=>{m.once("message",e),m.once("error",t),m.postMessage({options:this.options})});s.outputFileSystem?.writeFile(e(a,this.assetName),t,{encoding:"utf-8"},e=>{e&&r(e)})}catch(e){r(e)}m.terminate()})}}
|
package/lib/worker/dts.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{parentPort as
|
|
1
|
+
import{join as e,sep as r}from"node:path";import{parentPort as o}from"node:worker_threads";import{bundleDts as t}from"../commom/bundle-dts.mjs";import{module_federation_schema as s}from"../process-env.mjs";if(!o)throw Error("This file must be run as a worker");o?.setMaxListeners(0),o.on("message",async({options:a})=>{try{let{name:m,exposes:l}=a,p={},i=[];for(let o in l)if(Object.prototype.hasOwnProperty.call(l,o)){let t=o.replace(/\.tsx?$/i,""),a=e(m,t).replaceAll(r,"/");p[a]=l[o],i.push(`declare module "${s}:${a}" { export * from "${a}"; }`)}let n=await t(p,m);i.unshift(n);let c=i.join("\n\n");o.postMessage(c)}catch{o.postMessage("")}});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moneko/core",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.6-beta.0",
|
|
4
4
|
"description": "@moneko/core",
|
|
5
5
|
"main": "lib/index.mjs",
|
|
6
6
|
"type": "module",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
"@moneko/stylelint": "1.8.3",
|
|
140
140
|
"@moneko/transform-imports": "1.4.0",
|
|
141
141
|
"@moneko/utils": "0.3.3",
|
|
142
|
-
"@swc/core": "1.15.
|
|
142
|
+
"@swc/core": "1.15.24",
|
|
143
143
|
"browserslist": "4.28.2",
|
|
144
144
|
"core-js": "3.49.0",
|
|
145
145
|
"core-js-compat": "3.49.0",
|
|
@@ -148,8 +148,8 @@
|
|
|
148
148
|
"less-loader": "12.3.2",
|
|
149
149
|
"lightningcss": "1.32.0",
|
|
150
150
|
"swc-loader": "0.2.7",
|
|
151
|
-
"typescript": "
|
|
152
|
-
"webpack": "5.
|
|
151
|
+
"typescript": "6.0.2",
|
|
152
|
+
"webpack": "5.106.1",
|
|
153
153
|
"webpack-hot-middleware": "2.26.1",
|
|
154
154
|
"webpack-merge": "6.0.1"
|
|
155
155
|
},
|