@moneko/core 4.0.0-bate.2 → 4.0.0-bate.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/commom/reactive-object.d.mts +2 -1
- package/lib/commom/reactive-object.mjs +1 -1
- package/lib/index.d.mts +1 -0
- package/lib/module.config.mjs +1 -1
- package/lib/plugin/virtual-module.d.mts +14 -0
- package/lib/plugin/virtual-module.mjs +1 -0
- package/lib/plugins.config.mjs +1 -1
- package/lib/vm/app.d.mts +3 -0
- package/lib/vm/app.mjs +1 -0
- package/lib/vm/docs.d.mts +3 -2
- package/lib/vm/docs.mjs +1 -1
- package/lib/vm/example.d.mts +3 -2
- package/lib/vm/example.mjs +1 -1
- package/lib/vm/generate-doc.mjs +1 -1
- package/lib/vm/scope.d.mts +3 -0
- package/lib/vm/scope.mjs +1 -0
- package/lib/vm/virtual.d.mts +3 -0
- package/lib/vm/virtual.mjs +1 -0
- package/package.json +1 -1
- package/typings/global.d.ts +2 -0
- package/lib/loader/ts-doc.cjs +0 -1
- package/lib/loader/ts-doc.d.cts +0 -7
- package/lib/vm/modules.d.mts +0 -8
- package/lib/vm/modules.mjs +0 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import EventEmitter from 'node:events';
|
|
2
|
-
declare class ReactiveObject<T extends object = Record<string,
|
|
2
|
+
declare class ReactiveObject<T extends object = Record<string, unknown | undefined>> extends EventEmitter {
|
|
3
3
|
readonly data: T;
|
|
4
4
|
constructor(props?: T);
|
|
5
|
+
has(key: keyof T): boolean;
|
|
5
6
|
setData(key: keyof T, value: T[keyof T]): void;
|
|
6
7
|
getData(key: keyof T): T[keyof T];
|
|
7
8
|
removeData(key: keyof T): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import t from"node:events";class e extends t{constructor(t={}){super(),this.data=t,this.setMaxListeners(0)}setData(t,e){this.data[t]!==e&&(this.data[t]=e,this.emit("change",t,e))}getData(t){return this.data[t]}removeData(t){Object.prototype.hasOwnProperty.call(this.data,t)&&(delete this.data[t],this.emit("change",t,null))}[Symbol.iterator](){let t=Object.keys(this.data),e=0;return{next:()=>{if(e<t.length){let a=t[e++];return{value:[a,this.data[a]],done:!1}}return{value:void 0,done:!0}}}}}export default e;
|
|
1
|
+
import t from"node:events";class e extends t{constructor(t={}){super(),this.data=t,this.setMaxListeners(0)}has(t){return t in this.data}setData(t,e){this.data[t]!==e&&(this.data[t]=e,this.emit("change",t,e))}getData(t){return this.data[t]}removeData(t){Object.prototype.hasOwnProperty.call(this.data,t)&&(delete this.data[t],this.emit("change",t,null))}[Symbol.iterator](){let t=Object.keys(this.data),e=0;return{next:()=>{if(e<t.length){let a=t[e++];return{value:[a,this.data[a]],done:!1}}return{value:void 0,done:!0}}}}}export default e;
|
package/lib/index.d.mts
CHANGED
|
@@ -19,6 +19,7 @@ export type { CompressionPluginOptions } from './plugin/compression.mjs';
|
|
|
19
19
|
export type { HtmlMeta, HtmlPluginOption } from './plugin/html-plugin.mjs';
|
|
20
20
|
export * from './plugin/manifest/index.mjs';
|
|
21
21
|
export type { OverrideResolverOption } from './plugin/override-resolve.mjs';
|
|
22
|
+
export type { VirtualModules } from './plugin/virtual-module.mjs';
|
|
22
23
|
export { APPTYPE, coreName, FRAMEWORK, isCI, isDev, isLibrary, isMicro, mainDirectory, packageJson, PACKAGENAME, } from './process-env.mjs';
|
|
23
24
|
export { type AlgorithmIdentifier, digest, md5, node_modules, resolveProgram, toCamelCase, } from './utils/index.mjs';
|
|
24
25
|
export * from '@moneko/mdx';
|
package/lib/module.config.mjs
CHANGED
|
@@ -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 n from"./commom/rule.mjs";import i from"./options/modify-vars.mjs";import l 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{
|
|
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 n from"./commom/rule.mjs";import i from"./options/modify-vars.mjs";import l 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 x,virtual_schema as g}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:l.lessLoader,options:{sourceMap:!!h.sourceMap,lessOptions:{modifyVars:i,javascriptEnabled:!0}}},M=new Map,P=["components","example","mock","site","src","server"].map(d);function L(e){return new Promise(s=>{s([...P,t.corePath,...h.rulesInclude?.[e]?.map(e=>"string"==typeof e?function(e){if(M.has(e))return M.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),M.set(e,[s]),[s]}catch{try{let s=a.resolve(`${e}${o}package.json`).replace(`${o}package.json`,"");M.set(e,[s])}catch{M.set(e,[p(e),p(`.pnpm/${e}`)])}return M.get(e)}}(e):e).flat()||[]])})}r&&P.push(d(r)),h.overrideResolve&&h.overrideResolve.override&&P.push(h.overrideResolve.override);let C=await Promise.all([L("css"),L("js"),L("media"),L("wasm"),L("font")]),I=C[0],O=C[1],_=C[2],b=C[3],N=C[4];l.sassLoader&&(e={loader:l.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:n.wasm,type:"webassembly/async",include:b},{test:n.txt,type:"asset/source"},{test:n.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:_},{test:n.video,type:"asset",dependency:{not:["url"]},generator:{filename:"assets/video/[hash][ext]"},include:_},{test:n.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:{...h.reactCompiler,panicThreshold:x?void 0:"NONE"}}),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:l.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:n.js,use:[...B,r].filter(Boolean),include:O,extractSourceMap:!0},...h.cssModules.map(e=>({test:s=>n.node_modules_css_module.test(s)&&s.includes(e),use:[v],type:"css/module"})),{test:n.css,use:[v],type:"css/auto",include:I},e&&{test:n.scss,use:[v,e],type:"css/auto",include:I},{test:n.less,use:[v,w],type:"css/auto",include:I},{test:n.markdown,use:[...B,{loader:s(t.corePath,"/loader/mdx.cjs"),options:h.mdx}].filter(Boolean),exclude:[n.node_modules,e=>e.startsWith(`${y}:`)||e.startsWith(`${g}:`)]}].filter(Boolean)},...h.moduleRules].filter(Boolean)}});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Compiler, type experiments } from 'webpack';
|
|
2
|
+
import type ReactiveObject from '../commom/reactive-object.mjs';
|
|
3
|
+
type VirtualModule = ConstructorParameters<typeof experiments.schemes.VirtualUrlPlugin>[0];
|
|
4
|
+
export interface VirtualModules extends VirtualModule {
|
|
5
|
+
[key: string]: VirtualModules[keyof VirtualModules];
|
|
6
|
+
}
|
|
7
|
+
export declare class VirtualModulePlugin {
|
|
8
|
+
private vm;
|
|
9
|
+
private modules;
|
|
10
|
+
private schema;
|
|
11
|
+
constructor(modules: ReactiveObject<VirtualModules>, schema: string);
|
|
12
|
+
apply(compiler: Compiler): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"webpack";let s=e.experiments.schemes.VirtualUrlPlugin;export class VirtualModulePlugin{constructor(e,t){this.modules=e,this.schema=t,this.vm=new s(this.modules.data,this.schema)}apply(e){this.vm.apply(e),this.modules.on("change",(e,s)=>{var t,i;this.vm.modules=Object.assign(this.vm.modules,(t={[e]:s},i=this.schema,Object.keys(t).reduce((e,s)=>{var o,r,m;return e[r=s,m=i,`${m}:${r}`]="string"==typeof(o=t[s])?{type:"",source:()=>o}:"function"==typeof o?{type:"",source:o}:o,e},{})))})}}
|
package/lib/plugins.config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"webpack";import{CompressionPlugin as t}from"./plugin/compression.mjs";import{CopyPlugin as
|
|
1
|
+
import e from"webpack";import{CompressionPlugin as t}from"./plugin/compression.mjs";import{CopyPlugin as o}from"./plugin/copy.mjs";import{CssModuleDtsPlugin as i}from"./plugin/css-module-dts.mjs";import{HtmlPlugin as r}from"./plugin/html-plugin.mjs";import{ManifestPlugin as p}from"./plugin/manifest/index.mjs";import n from"./plugin/module-federation.mjs";import{VirtualModulePlugin as s}from"./plugin/virtual-module.mjs";import{app_vm as l}from"./vm/app.mjs";import{docs_vm as m}from"./vm/docs.mjs";import{example_vm as a}from"./vm/example.mjs";import{scope_vm as c}from"./vm/scope.mjs";import{virtual_vm as h}from"./vm/virtual.mjs";import{CONFIG as f}from"./config.mjs";import{app_schema as u,docs_schema as g,example_schema as d,isLibrary as w,packageJson as j,scope_schema as v,virtual_schema as b}from"./process-env.mjs";let y="object"==typeof f.compression?f.compression:{},x=[...n,new s(l,u),w&&new s(m,g),w&&new s(a,d),w&&new s(c,v),f.virtualModule&&new s(h,b),new o(f.copy),new e.DefinePlugin({"process.env":JSON.stringify(f.env)}),new e.IgnorePlugin({resourceRegExp:/\/(__(tests|mocks)__|test|spec|e2e)\//}),new i,...f.plugins].filter(Boolean);if(f.compression&&x.push(new t({algorithm:f.devServer.https?"brotli":"gzip",test:/\.(js|css|html|svg|ttf|woff|woff2|png|jpg|jpeg)$/,...y})),f.manifest&&x.push(new p(f.manifest)),f.htmlPluginOption){let e={charset:"UTF-8","X-UA-Compatible":{"http-equiv":"X-UA-Compatible",content:"IE=edge,Chrome=1"},HandheldFriendly:"true",MobileOptimized:"320","screen-orientation":"portrait","x5-orientation":"portrait",browsermode:"application","x5-page-mode":"app","msapplication-tap-highlight":"no","mobile-web-app-capable":"yes",renderer:"webkit",description:j.description,keywords:Array.isArray(j.keywords)?j.keywords.toString():"","http-equiv":"refresh",viewport:"width=device-width, initial-scale=1"};f.seo&&(e.relCanonical={rel:"canonical",href:`https://${f.seo.domain}${f.basename}`}),f.htmlPluginOption.meta&&Object.assign(e,f.htmlPluginOption.meta),x.push(new r({...f.htmlPluginOption,meta:e}))}if(f.fixBrowserRouter){let e=f.basename.split("/").filter(Boolean).length,t=`${Array(e).fill("..").join("/")+(e?"/":"")}404.html`,o=f.fixBrowserRouter.pathSegmentsToKeep??e;x.push(new r({filename:f.fixBrowserRouter.path??t,inject:!1,templateContent:()=>`<html lang="en"><head><title>Redirect</title><script>const pathKeep = ${o};const l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>`}))}f.sourceMap&&x.push(new e.SourceMapDevToolPlugin(f.sourceMap));export default x;
|
package/lib/vm/app.d.mts
ADDED
package/lib/vm/app.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{join as e}from"node:path";import{getAppEntry as o,getAppFallback as r,getAppMergeRouter as t,getAppNormalizeCss as m,getAppPrefixRouter as s,getAppRem as n,getAppSuspense as a}from"@moneko/mdx";import{updateFileSync as p}from"@moneko/utils";import i,{routeDir as c}from"../commom/paths.mjs";import l from"../commom/reactive-object.mjs";import u from"../commom/require.mjs";import{CONFIG as d}from"../config.mjs";import{updateMocks as f}from"../dev/mock.mjs";import j from"../plugin/module-federation.mjs";import{app_schema as x,APPTYPE as y,FRAMEWORK as k}from"../process-env.mjs";import g from"../utils/create-types.mjs";import{generateDeclaration as h}from"../utils/dts.mjs";import{node_modules as v,transformModule as D}from"../utils/index.mjs";import $ from"./info.mjs";import{generateLocales as b}from"./locales.mjs";import C from"./render-app.mjs";import{getRouter as z}from"./routes.mjs";let P=new l({});P.on("change",()=>{p(v(`@types/$${x}/index.d.ts`),Object.values(P.data).join("\n"))});export const app_vm=new l({mock:{source:e=>(e.addContextDependency(i.mockPath),f(),"export default null;")},env:{source:()=>{let e=`${x}:env`,o=D(d.env);return P.setData(e,g(e,h(o,e))),o}},info:{source:o=>{let r=`${x}:info`,t=e(i.programPath,"package.json");o.addDependency(t),delete u.cache[t];let m=D({...u(t),...$});return P.setData(r,g(r,h(m,r))),m}},render:{type:".tsx",source:()=>"react"===k?C:""},entry:{type:".tsx",source:()=>{let r=`${x}:entry`,t=o(e(d.alias["@"],"./index.ts"),!!j.length,!!d.rem,!!d.normalizeCss,y,k);return P.setData(r,g(r,h(t,r))),t}},fallback:{source:()=>{let e=`${x}:fallback`,o=r(d.fallbackCompPath);return P.setData(e,g(e,h(o,e))),o}},"merge-router":t(),"prefix-router":s(),suspense:{type:".tsx",source:()=>a(y,k)},routes:{source:e=>(e.addContextDependency(c),z())},locals:{source:o=>{let r=e(d.alias["@"],"./locales");return o.addContextDependency(r),b()}},normalize:{type:".css",source:m},rem:n(d.rem?.designSize||1680)});
|
package/lib/vm/docs.d.mts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ReactiveObject from '../commom/reactive-object.mjs';
|
|
2
|
-
|
|
2
|
+
import type { VirtualModules } from '../plugin/virtual-module.mjs';
|
|
3
|
+
export declare const docs_vm: ReactiveObject<VirtualModules>;
|
|
3
4
|
export declare const getCommentPath: (file: string) => string;
|
|
4
|
-
export declare const getDocs: () => string;
|
|
5
|
+
export declare const getDocs: (comments: string[]) => string;
|
package/lib/vm/docs.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{sep as
|
|
1
|
+
import{join as e,sep as t}from"node:path";import{loadFile as o,scanFolderSync as r}from"@moneko/utils";import m from"../commom/paths.mjs";import n from"../commom/reactive-object.mjs";import c from"../commom/rule.mjs";import{CONFIG as s}from"../config.mjs";import{app_schema as a,docs_schema as p,FRAMEWORK as l,framework as i,isLibrary as d,isReact as u,isSolid as f}from"../process-env.mjs";import $ from"./coverage.mjs";import{generatorExample as g}from"./example.mjs";import h from"./generate-doc.mjs";let x={react:"createElement",solid:"createComponent"}[l],j=()=>d?r(s.alias["@pkg"],["\\.tsx?$"]).filter(e=>!/(^|\/)\.[^\\/\\.]|\.test\./i.test(e)).map(e=>{let t=getCommentPath(e),r=t.replace(`${p}:`,"");return docs_vm.has(r)||docs_vm.setData(r,{type:".txt",source:async t=>{let r=await o(e);return t.addDependency(e),h(r,e)}}),t}):[];export const docs_vm=new n({coverage:{source:e=>(e.addDependency(m.coveragePath),$(m.coveragePath))},docs:{source:async e=>{e.addContextDependency(m.componentsPath);let t=j();return getDocs(t)}},example:{source:e=>(e.addContextDependency(m.componentsPath),g())}});export const getCommentPath=function(){let t=s.alias["@pkg"]?.length;return o=>e(`${p}:comment`,o.substring(t)).replace(/\\/g,"/")}();export const getDocs=e=>{let o=`import { ${x}${f?",Dynamic":""} } from "${i}${f?"/web":""}";import SuspenseComp from "${a}:suspense";function call_then(res) {return {default: ${u?"() =>":""}${x}(${f?"Dynamic":"'div'"}, {${f?"innerHTML: res.default, component: 'div', class: 'n-md-box' ":"dangerouslySetInnerHTML: {__html:res.default}, className: 'n-md-box'"} })};}`,r={};e.forEach(e=>{let o=e.replace(/docs:comment[/\\]/,"").split(t),m=o.pop(),n=o.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`${o}export default ${JSON.stringify(m).replace(c.extract_func,"$1")}`};j();
|
package/lib/vm/example.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import ReactiveObject from '../commom/reactive-object.mjs';
|
|
2
|
-
|
|
3
|
-
export declare
|
|
2
|
+
import type { VirtualModules } from '../plugin/virtual-module.mjs';
|
|
3
|
+
export declare const example_vm: ReactiveObject<VirtualModules>;
|
|
4
|
+
export declare function generatorExample(): string;
|
package/lib/vm/example.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{generateExample as
|
|
1
|
+
import{generateExample as e}from"@moneko/mdx";import o from"../commom/paths.mjs";import r from"../commom/reactive-object.mjs";import t from"../commom/rule.mjs";import{CONFIG as m}from"../config.mjs";import{example_schema as n,isLibrary as p}from"../process-env.mjs";export const example_vm=new r({});export function generatorExample(){if(!p)return"export default {}";let r=p&&!1!==m.htmlPluginOption?JSON.parse(e(o.componentsPath,`${n}:`,"6")):{},a={};for(let e in r)Object.hasOwn(r,e)&&(example_vm.setData(e.replace(`${n}:`,""),{source:t=>(t.addContextDependency(o.componentsPath),r[e])}),Object.assign(a,{[e]:`rr(() => import('${e}'))rr`}));return`export default ${JSON.stringify(a).replace(t.extract_func,"$1")}`}generatorExample();
|
package/lib/vm/generate-doc.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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";let
|
|
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{md5 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 WeakMap;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/scope.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{join as o}from"node:path";import{getAppScope as m}from"@moneko/mdx";import e from"../commom/has-pkg.mjs";import t from"../commom/reactive-object.mjs";import{CONFIG as r}from"../config.mjs";export const scope_vm=new t({components:{source:()=>{let t=!1,s=o(r.alias["@"],"./scope.tsx"),p=o(r.alias["@"],"./scope.ts");return e(s)?t=s:e(p)&&(t=p),t?m(t,"@/scope"):"export defatlu {}"}}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{updateFileSync as t}from"@moneko/utils";import m from"../commom/reactive-object.mjs";import{CONFIG as o}from"../config.mjs";import{virtual_schema as r}from"../process-env.mjs";import e from"../utils/create-types.mjs";import{generateDeclaration as i}from"../utils/dts.mjs";import{node_modules as s,transformModule as l}from"../utils/index.mjs";export const virtual_vm=new m({});o.virtualModule&&t(s(`@types/$${r}/index.d.ts`),Object.keys(o.virtualModule).map(t=>{let m=l(o.virtualModule[t]);virtual_vm.setData(t,m);let s=`${r}:${t}`;return e(s,i(m,s))}).join("\n"));
|
package/package.json
CHANGED
package/typings/global.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
WebpackPluginInstance,
|
|
14
14
|
SourceMapDevToolPlugin,
|
|
15
15
|
RuleSetConditionAbsolute,
|
|
16
|
+
experiments,
|
|
16
17
|
} from 'webpack';
|
|
17
18
|
|
|
18
19
|
import type { CopyPluginOption } from '../lib/plugin/copy.mjs';
|
|
@@ -31,6 +32,7 @@ import type { ProxyConfig } from '../lib/dev/proxy.mjs';
|
|
|
31
32
|
import type { OverrideResolverOption } from '../lib/plugin/override-resolve.mjs';
|
|
32
33
|
import type { OptimizationSplitChunksOptions } from '../lib/options/split-chunk.mjs';
|
|
33
34
|
import type { HtmlPluginOption } from '../lib/plugin/html-plugin.mjs';
|
|
35
|
+
|
|
34
36
|
export interface VirtualModulePluginOption {
|
|
35
37
|
[key: string]: string | object;
|
|
36
38
|
}
|
package/lib/loader/ts-doc.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return i}});const t=require("fs"),r=(e=require("../commom/log.mjs"))&&e.__esModule?e:{default:e},s={};function i(e){let i=this.resourcePath;if(i.endsWith(".d.ts"))return e;this.cacheable&&this.cacheable();try{let r=(0,t.statSync)(i).mtime.getTime();if(s[i]!==r){Object.assign(s,{[i]:r});let{comment:t,generateDoc:a,getCommentPath:c}=this.getOptions();t.setData(c(i),a(e,i))}}catch(e){(0,r.default)(e)}return e}
|
package/lib/loader/ts-doc.d.cts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { LoaderContext } from 'webpack';
|
|
2
|
-
import type ReactiveObject from '../commom/reactive-object.mjs';
|
|
3
|
-
export default function (this: LoaderContext<{
|
|
4
|
-
comment: ReactiveObject<Record<string, string>>;
|
|
5
|
-
generateDoc(content: string, path: string): string;
|
|
6
|
-
getCommentPath(filepath: string): string;
|
|
7
|
-
}>, value: string): string;
|
package/lib/vm/modules.d.mts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import webpack from 'webpack';
|
|
2
|
-
type VirtualModules = ConstructorParameters<typeof webpack.experiments.schemes.VirtualUrlPlugin>[0];
|
|
3
|
-
export declare const app_vm: VirtualModules;
|
|
4
|
-
export declare const docs_vm: VirtualModules;
|
|
5
|
-
export declare const example_vm: VirtualModules;
|
|
6
|
-
export declare const scope_vm: VirtualModules;
|
|
7
|
-
export declare const virtual_vm: VirtualModules;
|
|
8
|
-
export {};
|
package/lib/vm/modules.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{join as e}from"node:path";import{getAppEntry as o,getAppFallback as t,getAppMergeRouter as r,getAppNormalizeCss as m,getAppPrefixRouter as s,getAppRem as a,getAppScope as c,getAppSuspense as n}from"@moneko/mdx";import{updateFileSync as p}from"@moneko/utils";import l from"../commom/has-pkg.mjs";import i,{routeDir as d}from"../commom/paths.mjs";import u from"../commom/reactive-object.mjs";import f from"../commom/require.mjs";import v from"../commom/rule.mjs";import{CONFIG as x}from"../config.mjs";import{updateMocks as j}from"../dev/mock.mjs";import g from"../plugin/module-federation.mjs";import{app_schema as y,APPTYPE as D,docs_schema as h,example_schema as $,FRAMEWORK as _,isLibrary as k,virtual_schema as b}from"../process-env.mjs";import C from"../utils/create-types.mjs";import{generateDeclaration as O}from"../utils/dts.mjs";import{md5 as P,node_modules as z,transformModule as w}from"../utils/index.mjs";import M from"./coverage.mjs";import{comment as S,getDocs as q}from"./docs.mjs";import{examples as E,generatorExample as J}from"./example.mjs";import N from"./info.mjs";import{generateLocales as A}from"./locales.mjs";import B from"./render-app.mjs";import{getRouter as F}from"./routes.mjs";let G=new u({});G.on("change",()=>{p(z(`@types/$${y}/index.d.ts`),Object.values(G.data).join("\n"))});export const app_vm={mock:{source:e=>(e.addContextDependency(i.mockPath),j(),"export default null;")},env:{source:()=>{let e=`${y}:env`,o=w(x.env);return G.setData(e,C(e,O(o,e))),o}},info:{source:o=>{let t=`${y}:info`,r=e(i.programPath,"package.json");o.addDependency(r),delete f.cache[r];let m=w({...f(r),...N});return G.setData(t,C(t,O(m,t))),m}},render:{type:".tsx",source:()=>"react"===_?B:""},entry:{type:".tsx",source:()=>{let t=`${y}:entry`,r=o(e(x.alias["@"],"./index.ts"),!!g.length,!!x.rem,!!x.normalizeCss,D,_);return G.setData(t,C(t,O(r,t))),r}},fallback:{source:()=>{let e=`${y}:fallback`,o=t(x.fallbackCompPath);return G.setData(e,C(e,O(o,e))),o}},"merge-router":r(),"prefix-router":s(),suspense:{type:".tsx",source:()=>n(D,_)},routes:{source:e=>(e.addContextDependency(d),F())},locals:{source:o=>{let t=e(x.alias["@"],"./locales");return o.addContextDependency(t),A()}}};x.normalizeCss&&(app_vm.normalize={type:".css",source:m}),x.rem&&(app_vm.rem=a(x.rem?.designSize||1680));export const docs_vm={};export const example_vm={};export const scope_vm={};if(k){for(let o of(scope_vm.components={source:()=>{let o=!1,t=e(x.alias["@"],"./scope.tsx"),r=e(x.alias["@"],"./scope.ts");return l(t)?o=t:l(r)&&(o=r),o?c(o,"@/scope"):"export defatlu {}"}},docs_vm.coverage={source:e=>(e.addDependency(i.coveragePath),M(i.coveragePath))},docs_vm.docs={source:()=>q()},docs_vm.example={source:e=>{e.addContextDependency(i.componentsPath),J();let o={};return Object.keys(E.data).forEach(e=>{Object.assign(o,{[e]:`rr(() => import('${e}'))rr`})}),`export default ${JSON.stringify(o).replace(v.extract_func,"$1")}`}},S))docs_vm[o[0].replace(`${h}:`,"")]={type:".txt",source:()=>S.getData(o[0]),version:()=>P(S.getData(o[0]))};for(let e of(E.on("change",e=>{example_vm[e.replace(`${$}:`,"")]={source:o=>(o.addDependency(e),E.getData(e))}}),E))example_vm[e[0].replace(`${$}:`,"")]={source:()=>E.getData(e[0]),version:()=>P(E.getData(e[0]))}}export const virtual_vm={};let H=new u({});for(let e in H.on("change",()=>{p(z(`@types/$${b}/index.d.ts`),Object.values(H.data).join("\n"))}),x.virtualModule){if(!Object.hasOwn(x.virtualModule,e))continue;let o=w(x.virtualModule[e]);virtual_vm[e]=o;let t=`${b}:${e}`;H.setData(t,C(t,O(o,t)))}
|