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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
1
  export type * from '../typings/global.js';
2
2
  export type { CommitRuleConfig, CommitRules } from './bin/commit-lint.mjs';
3
3
  export type { cssInJsMinify, CssInJsMinifyOption } from './commom/css-in-js-minify.mjs';
4
+ export { declToMd } from './commom/decl-to-md.mjs';
4
5
  export * from './commom/git.mjs';
5
6
  export { default as hasPkg } from './commom/has-pkg.mjs';
6
7
  export { getIPv4, getPort } from './commom/net.mjs';
@@ -23,7 +24,6 @@ export type { OverrideResolverOption } from './plugin/override-resolve.mjs';
23
24
  export type { VirtualModules } from './plugin/virtual-module.mjs';
24
25
  export { APPTYPE, coreName, FRAMEWORK, isCI, isDev, isLibrary, isMicro, mainDirectory, packageJson, PACKAGENAME } from './process-env.mjs';
25
26
  export { type AlgorithmIdentifier, digest, md5, node_modules, resolveProgram, toCamelCase } from './utils/index.mjs';
26
- export { generateDoc } from './vm/generate-doc.mjs';
27
27
  export * from '@moneko/mdx';
28
28
  export * from '@moneko/utils';
29
29
  import webpack from 'webpack';
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- 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{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{generateDoc}from"./vm/generate-doc.mjs";export*from"@moneko/mdx";export*from"@moneko/utils";import o from"webpack";export{o as webpack};
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{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/vm/docs.mjs CHANGED
@@ -1 +1 @@
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 a from"../commom/reactive-object.mjs";import*as s from"../commom/rule.mjs";import{CONFIG as c}from"../config.mjs";import{app_schema as p,docs_schema as i,FRAMEWORK as l,framework as d,isLibrary as f,isSolid as u}from"../process-env.mjs";import g from"./coverage.mjs";import{generatorExample as h}from"./example.mjs";import{generateDoc as $}from"./generate-doc.mjs";let x={react:"createElement",solid:"createComponent"}[l],b=()=>f?m(c.alias["@pkg"],["\\.tsx?$"]).filter(e=>!/(^|\/)\.[^\\/\\.]|\.test\./i.test(e)).map(e=>{let t=getCommentPath(e),o=t.replace(`${i}:`,"");return docs_vm.has(o)||docs_vm.setData(o,{type:".txt",source:async t=>{let o=await r(e);return t.addDependency(e),$(o,e)}}),t}):[];export const docs_vm=new a({coverage:{source:e=>(e.addDependency(n.coveragePath),g(n.coveragePath))},docs:{source:async e=>{e.addContextDependency(n.componentsPath);let t=b();return getDocs(t)}},example:{source:e=>(e.addContextDependency(n.componentsPath),h())}});export const getCommentPath=(e=c.alias["@pkg"]?.length,o=>t(`${i}:comment`,o.substring(e)).replace(/\\/g,"/"));export const getDocs=e=>{let t=`import { ${x}${u?",Dynamic":""} } from "${d}${u?"/web":""}";import SuspenseComp from "${p}:suspense";function call_then(res) {return {default: () => ${x}(${u?"Dynamic":"'n-md'"}, {text: res.default, css: "table td a {display: inline-flex;align-items: center;gap: 4px;}table td a n-img,table td a img {display: inline-block;overflow: hidden;border-radius: var(--border-radius);inline-size: 24px;block-size: 24px;}", ${u?"component: 'n-md' ":""} })};}`,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(() => ${x}(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(s.extract_func,"$1")}`};b();
1
+ let e;import{join as t,sep as o}from"node:path";import{loadFile as m,scanFolderSync as r}from"@moneko/utils";import{declToMd as a}from"../commom/decl-to-md.mjs";import n from"../commom/paths.mjs";import s from"../commom/reactive-object.mjs";import*as c from"../commom/rule.mjs";import{CONFIG as p}from"../config.mjs";import{app_schema as i,docs_schema as l,FRAMEWORK as d,framework as f,isLibrary as u,isSolid as g}from"../process-env.mjs";import h from"./coverage.mjs";import{generatorExample as $}from"./example.mjs";let x={react:"createElement",solid:"createComponent"}[d],b=()=>u?r(p.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 m(e);return t.addDependency(e),a(o,e,p.basename,p.alias["@pkg"])}}),t}):[];export const docs_vm=new s({coverage:{source:e=>(e.addDependency(n.coveragePath),h(n.coveragePath))},docs:{source:async e=>{e.addContextDependency(n.componentsPath);let t=b();return getDocs(t)}},example:{source:e=>(e.addContextDependency(n.componentsPath),$())}});export const getCommentPath=(e=p.alias["@pkg"]?.length,o=>t(`${l}:comment`,o.substring(e)).replace(/\\/g,"/"));export const getDocs=e=>{let t=`import { ${x}${g?",Dynamic":""} } from "${f}${g?"/web":""}";import SuspenseComp from "${i}:suspense";function call_then(res) {return {default: () => ${x}(${g?"Dynamic":"'n-md'"}, {text: res.default, css: "table td a {display: inline-flex;align-items: center;gap: 4px;}table td a n-img,table td a img {display: inline-block;overflow: hidden;border-radius: var(--border-radius);inline-size: 24px;block-size: 24px;}", ${g?"component: 'n-md' ":""} })};}`,m={};e.forEach(e=>{let t=e.replace(/docs:comment[/\\]/,"").split(o),r=t.pop(),a=t.join("/");m[a]||(m[a]={}),m[a][r]=`rr(() => ${x}(SuspenseComp, { comp: () => import(/* webpackChunkName: '${e}' */ '${e}').then(call_then)}))rr`});let r={};for(let e in m)Object.hasOwn(m,e)&&(r[e]=Object.values(m[e]));return`${t}export default ${JSON.stringify(r).replace(c.extract_func,"$1")}`};b();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "4.7.0-beta.0",
3
+ "version": "4.7.0-beta.1",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- export declare function generateDoc(content: string, path: string): string;
@@ -1 +0,0 @@
1
- import{dirname as e}from"node:path";import t from"typescript";import{getGitInfo as n}from"../commom/git.mjs";import{CONFIG as r}from"../config.mjs";let l=t.ScriptKind,o=t.ScriptTarget,i=t.SyntaxKind,a=t.createSourceFile,c=t.forEachChild,s=t.getLeadingCommentRanges,u=t.isInterfaceDeclaration,f=t.isQuestionToken,p=t.isPropertySignature,m=t.isFunctionTypeNode,g=t.isUnionTypeNode,$=t.isMethodSignature,d={};function h(e){let t=s(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 b(e){if(!e)return;let t=e.match(/@since\s+([^\n]+)/);return t?t[1].trim():void 0}let y=n();function x(e){let t;if(!e)return;let n=/@author\s+([^<\n]+?)(?:\s*<([^>]+)>)?(?=\s*(?:\n|$))/g,r=[];for(;null!==(t=n.exec(e));){let e,n=t[1].trim(),l=t[2]?.trim();if(l){let t=/^[\w.-]+@[\w-]+(\.[\w-]+)+$/.test(l),n=/^https?:\/\/.+/i.test(l);e=t?`mailto:${l}`:n?l:`${y?.domain}/${l}`}else/^[a-z\d](?:[a-z\d-]{0,38})$/i.test(n)&&(e=`${y?.domain}/${n}`);let o=e?`[![${n}-alt](${y?.type==="github"?`https://avatars.githubusercontent.com/${e.split("/").pop()}?s=48`:`https://www.gravatar.com/avatar/${n}?s=48&d=identicon`})${n}](${e})`:n;r.includes(o)||r.push(o)}return r.join(" ")}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 n=e.replaceAll(/\b([A-Z][a-zA-Z0-9]*)\b/g,e=>{if(d[e]){let n=`/${[r.basename,d[e]].join("/").split("/").filter(Boolean).join("/")}`;return t?`[\\color{#009688}{${e}}](${n})`:`[${e}](${n})`}return t?`\\color{#009688}{${e}}`:e});return t&&(n=n.replaceAll(A,e=>`\\color{#009688}{${e}}`)),n}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 v(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,"")}export function generateDoc(n,s){let y=a(s,n,o.Latest,!0,l.TS),A="";return c(y,n=>{u(n)?A+=function(n){let l=n.name.text;Object.assign(d,{[n.name.text]:e(n.getSourceFile().fileName).replace(r.alias["@pkg"],"")});let o=h(n),a=b(o),c=v(o),s=j(o)?.split("|")||[],u=s.includes("comment"),y=s.includes("initial"),A=s.includes("optional"),k=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})(n)?.map(e=>`<n-tag color="#4c81db" css=".tag{gap:0px;}">${S(T(e))}</n-tag>`),F=[c,B,a&&`\\color{#52c11b|1||0.9}{${a}}`,z.length>0&&`<sub>\`extends\`</sub> ${z.join(" ")}`].filter(Boolean).join(" "),N=`## ${F}`,K=n.members.filter(e=>p(e)&&e.type?.kind!==i.NeverKeyword||$(e)),C=[];if(K.length>0){for(let e=0,t=K.length;e<t;e++){let t=K[e],n=S(T($(t)?`(${t.parameters.map(e=>`${e.name.getText()}: ${e.type?.getText()||"any"}`).join(", ")}): ${t.type?.getText()||"any"}`:t.type?.getText()||"any"),!0),r=h(t),l=T(t.name.getText());l&&!l.startsWith("\\color")&&($(t)||function(e){if(e.type){if(!g(e.type))return m(e.type);else for(let t of e.type.types)if(m(t))return!0}return!1}(t)||n?.includes("=>")?l=`\\color{#f9a913}{${l}}`:/^["'](.+)["']$/.test(l)||(l=`\\color{#4c81db}{${l}}`));let i=t.questionToken&&f(t.questionToken);C.push([l,!A&&`\\color{${i?"#f9a913":"#52c11b"}\\|\\|\\|0.9}{${i?"✘":"✔"}}`,!u&&T(v(r)),n,!y&&T(function(e){if(!e)return;let t=e.match(/@default\s+([^\n]+)/);return t?t[1].trim():void 0}(r)),!k&&T(b(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),!y&&o[4]&&(n=!0),!k&&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"}(n):t.isEnumDeclaration(n)&&(A+=function(n){let l=n.name.text,o=h(n),i=v(o),a=b(o);Object.assign(d,{[n.name.text]:e(n.getSourceFile().fileName).replace(r.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"),p=u.includes("version"),m=u.includes("author"),g=`## ${s}`;if(n.members.length>0){let e=[];for(let r=0,l=n.members.length;r<l;r++){let l=n.members[r],i=T(l.name.getText()),a=h(l),c=T(function(e){let n=e.initializer;if(n&&t.isStringLiteral(n))return` '${n.text}'`}(l)),s=T(b(a)),u=T(v(a));!i||i.startsWith("\\color")||/^["'](.+)["']$/.test(i)||(i=`\\color{#4c81db}{${i}}`),e.push([i,!f&&u,c,!p&&s,!m&&(x(a)||x(o))])}let r=!1,l=!1,i=!1;for(let t=0,n=e.length;t<n;t++){let n=e[t];!f&&n[1]&&(i=!0),!p&&n[3]&&(l=!0),!m&&n[4]&&(r=!0)}g+="\n";let a=["属性",i&&"说明","值",l&&"版本",r&&"作者"].filter(Boolean).join("|");g+=`|${a}|`;let c=[":-",i&&":-",":-",l&&":-",r&&":-"].filter(Boolean);g+="\n";let s=c.join("|");g+=`|${s}|`;for(let t=0,n=e.length;t<n;t++){let n=e[t];g+="\n";let o=[n[0]||"-",i&&(n[1]||"-"),n[2]||"-",l&&(n[3]||"-"),r&&(n[4]||"-")].filter(Boolean).join("|");g+=`|${o}|`}}return g+"\n\n"}(n))}),A}