@moneko/core 4.7.6 → 4.7.8-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.
@@ -1 +1,4 @@
1
+ import { type EnumDeclaration, type InterfaceDeclaration } from 'typescript';
2
+ export declare function generateInterfaceDocumentation(node: InterfaceDeclaration, basename: string, slicePrefix: string): string;
3
+ export declare function generateEnumDocumentation(node: EnumDeclaration, slicePrefix: string): string;
1
4
  export declare function declToMd(content: string, filepath: string, basename: string, slicePrefix: string): string;
@@ -1,7 +1,5 @@
1
- import{dirname as e}from"node:path";import t from"typescript";import{getGitInfo as n}from"./git.mjs";let l=n(),r=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,d=t.isMethodSignature,$={};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}function y(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(),o=t[2]?.trim();if(o){let t=/^[\w.-]+@[\w-]+(\.[\w-]+)+$/.test(o),n=/^https?:\/\/.+/i.test(o);e=t?`mailto:${o}`:n?o:`${l?.domain}/${o}`}else/^[a-z\d](?:[a-z\d-]{0,38})$/i.test(n)&&(e=`${l?.domain}/${n}`);let i=e?`[![${n}-alt](${l?.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(i)||r.push(i)}return r.join(" ")}function x(e){if(!e)return;let t=e.match(/@ignore\s+([^\n]+)/);return t?t[1].trim():void 0}let S=/(?<!['"])(unknown|any|void|bigint|object|undefined|null|boolean|number|string|symbol)(?!['"])/g;function A(e,t,n){if(!t)return;let l=t.replaceAll(/\b([A-Z][a-zA-Z0-9]*)\b/g,t=>{if($[t]){let l=`/${[e,$[t]].join("/").split("/").filter(Boolean).join("/")}`;return n?`[\\color{#009688}{${t}}](${l})`:`[${t}](${l})`}return n?`\\color{#009688}{${t}}`:t});return n&&(l=l.replaceAll(S,e=>`\\color{#009688}{${e}}`)),l}function j(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 T(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 declToMd(n,l,s,S){let v=a(l,n,o.Latest,!0,r.TS),k="";return c(v,function l(r){if(t.isModuleDeclaration(r)&&r.name&&t.isStringLiteral(r.name)){let e=r.name.text,l=r.body;for(;l&&t.isModuleDeclaration(l);)l=l.body;if(l&&t.isModuleBlock(l)){let t=n.slice(l.getStart(v)+1,l.getEnd()-1);k+=`
2
- `,k+=`
3
- `,k+=`# Module \`${e}\``,k+=`
4
- `,k+=`
5
- `,k+=declToMd(t,e,s,S),k+=`
6
- `,k+=`
7
- `}}else u(r)?k+=function(n,l,r){let o=l.name.text;Object.assign($,{[l.name.text]:e(l.getSourceFile().fileName).replace(r,"")});let a=h(l),c=b(a),s=T(a),u=x(a)?.split("|")||[],S=u.includes("comment"),v=u.includes("initial"),k=u.includes("optional"),w=u.includes("version"),B=u.includes("author"),z=s?`\\color{|4||0.45}{${o}}`:o,M=(function(e){let n=[];if(e.heritageClauses){for(let l of e.heritageClauses)if(l.token===t.SyntaxKind.ExtendsKeyword)for(let e of l.types)n.push(e.getText())}return n})(l)?.map(e=>`<n-tag color="#4c81db" css=".tag{gap:0px;}">${A(n,j(e))}</n-tag>`),F=[s,z,c&&`\\color{#52c11b|1||0.9}{${c}}`,M.length>0&&`<sub>\`extends\`</sub> ${M.join(" ")}`].filter(Boolean).join(" "),N=`## ${F}`,C=l.members.filter(e=>p(e)&&e.type?.kind!==i.NeverKeyword||d(e)),K=[];if(C.length>0){for(let e=0,t=C.length;e<t;e++){let t=C[e],l=A(n,j(d(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),o=j(t.name.getText());o&&!o.startsWith("\\color")&&(d(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)||l?.includes("=>")?o=`\\color{#f9a913}{${o}}`:/^["'](.+)["']$/.test(o)||(o=`\\color{#4c81db}{${o}}`));let i=t.questionToken&&f(t.questionToken);K.push([o,!k&&`\\color{${i?"#f9a913":"#52c11b"}\\|\\|\\|0.9}{${i?"✘":"✔"}}`,!S&&j(T(r)),l,!v&&j(function(e){if(!e)return;let t=e.match(/@default\s+([^\n]+)/);return t?t[1].trim():void 0}(r)),!w&&j(b(r)),!B&&(y(r)||y(a)),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,l=!1,r=!1;for(let n=0,o=K.length;n<o;n++){let o=K[n];!S&&o[2]&&(r=!0),!v&&o[4]&&(l=!0),!w&&o[5]&&(t=!0),!B&&o[6]&&(e=!0)}N+="\n";let o=["属性",!k&&"必要",r&&"说明","类型",l&&"默认值",t&&"版本",e&&"作者"].filter(Boolean).join("|");N+=`|${o}|`;let i=[":-",!k&&":-",r&&":-",":-",l&&":-",t&&":-",e&&":-"].filter(Boolean);N+="\n";let c=i.join("|");N+=`|${c}|`;for(let n=0,o=K.length;n<o;n++){let o=K[n];N+="\n";let i=[(o[7]?`<n-popover arrow="true" trigger="click" encode-uri="true" content=${JSON.stringify(encodeURIComponent(`<n-md code-classic="false" 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]||"-"),!k&&(o[1]||"-"),r&&(o[2]||"-"),o[3]||"-",l&&(o[4]||"-"),t&&(o[5]||"-"),e&&(o[6]||"-")].filter(Boolean).join("|");N+=`|${i}|`}N+="\n"}return N+"\n"}(s,r,S):t.isEnumDeclaration(r)&&(k+=function(n,l){let r=n.name.text,o=h(n),i=T(o),a=b(o);Object.assign($,{[n.name.text]:e(n.getSourceFile().fileName).replace(l,"")});let c=i?`\\color{|4||0.45}{${r}}`:r,s=[i,c,a&&`\\color{#52c11b|1||0.9}{${a}}`].filter(Boolean).join(" "),u=x(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 l=0,r=n.members.length;l<r;l++){let r=n.members[l],i=j(r.name.getText()),a=h(r),c=j(function(e){let n=e.initializer;if(n&&t.isStringLiteral(n))return` '${n.text}'`}(r)),s=j(b(a)),u=j(T(a));!i||i.startsWith("\\color")||/^["'](.+)["']$/.test(i)||(i=`\\color{#4c81db}{${i}}`),e.push([i,!f&&u,c,!p&&s,!m&&(y(a)||y(o))])}let l=!1,r=!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]&&(r=!0),!m&&n[4]&&(l=!0)}g+="\n";let a=["属性",i&&"说明","值",r&&"版本",l&&"作者"].filter(Boolean).join("|");g+=`|${a}|`;let c=[":-",i&&":-",":-",r&&":-",l&&":-"].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]||"-",r&&(n[3]||"-"),l&&(n[4]||"-")].filter(Boolean).join("|");g+=`|${o}|`}}return g+"\n\n"}(r,S));c(r,l)}),k}
1
+ import{dirname as e}from"node:path";import t from"typescript";import{getGitInfo as n}from"./git.mjs";let r=n(),l=t.ScriptKind,o=t.ScriptTarget,i=t.SyntaxKind,a=t.createSourceFile,c=t.forEachChild,s=t.getLeadingCommentRanges,u=t.isInterfaceDeclaration,f=t.isQuestionToken,m=t.isPropertySignature,p=t.isFunctionTypeNode,g=t.isUnionTypeNode,d=t.isMethodSignature,$={};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}function y(e){let t;if(!e)return;let n=/@author\s+([^<\n]+?)(?:\s*<([^>]+)>)?(?=\s*(?:\n|$))/g,l=[];for(;null!==(t=n.exec(e));){let e,n=t[1].trim(),o=t[2]?.trim();if(o){let t=/^[\w.-]+@[\w-]+(\.[\w-]+)+$/.test(o),n=/^https?:\/\/.+/i.test(o);e=t?`mailto:${o}`:n?o:`${r?.domain}/${o}`}else/^[a-z\d](?:[a-z\d-]{0,38})$/i.test(n)&&(e=`${r?.domain}/${n}`);let i=e?`[![${n}-alt](${r?.type==="github"?`https://avatars.githubusercontent.com/${e.split("/").pop()}?s=48`:`https://www.gravatar.com/avatar/${n}?s=48&d=identicon`})${n}](${e})`:n;l.includes(i)||l.push(i)}return l.join(" ")}function x(e){if(!e)return;let t=e.match(/@ignore\s+([^\n]+)/);return t?t[1].trim():void 0}let S=/(?<!['"])(unknown|any|void|bigint|object|undefined|null|boolean|number|string|symbol)(?!['"])/g;function A(e,t,n){if(!t)return;let r=t.replaceAll(/\b([A-Z][a-zA-Z0-9]*)\b/g,t=>{if($[t]){let r=`/${[e,$[t]].join("/").split("/").filter(Boolean).join("/")}`;return n?`[\\color{#009688}{${t}}](${r})`:`[${t}](${r})`}return n?`\\color{#009688}{${t}}`:t});return n&&(r=r.replaceAll(S,e=>`\\color{#009688}{${e}}`)),r}function j(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 T(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 generateInterfaceDocumentation(n,r,l){let o=n.name.text;Object.assign($,{[n.name.text]:e(n.getSourceFile().fileName).replace(l,"")});let a=h(n),c=b(a),s=T(a),u=x(a)?.split("|")||[],S=u.includes("comment"),v=u.includes("initial"),k=u.includes("optional"),w=u.includes("version"),B=u.includes("author"),z=s?`\\color{|4||0.45}{${o}}`:o,D=(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;}">${A(r,j(e))}</n-tag>`),M=[s,z,c&&`\\color{#52c11b|1||0.9}{${c}}`,D.length>0&&`<sub>\`extends\`</sub> ${D.join(" ")}`].filter(Boolean).join(" "),E=`## ${M}`,F=n.members.filter(e=>m(e)&&e.type?.kind!==i.NeverKeyword||d(e)),N=[];if(F.length>0){for(let e=0,t=F.length;e<t;e++){let t=F[e],n=A(r,j(d(t)?`(${t.parameters.map(e=>`${e.name.getText()}: ${e.type?.getText()||"any"}`).join(", ")}): ${t.type?.getText()||"any"}`:t.type?.getText()||"any"),!0),l=h(t),o=j(t.name.getText());o&&!o.startsWith("\\color")&&(d(t)||function(e){if(e.type){if(!g(e.type))return p(e.type);else for(let t of e.type.types)if(p(t))return!0}return!1}(t)||n?.includes("=>")?o=`\\color{#f9a913}{${o}}`:/^["'](.+)["']$/.test(o)||(o=`\\color{#4c81db}{${o}}`));let i=t.questionToken&&f(t.questionToken);N.push([o,!k&&`\\color{${i?"#f9a913":"#52c11b"}\\|\\|\\|0.9}{${i?"✘":"✔"}}`,!S&&j(T(l)),n,!v&&j(function(e){if(!e)return;let t=e.match(/@default\s+([^\n]+)/);return t?t[1].trim():void 0}(l)),!w&&j(b(l)),!B&&(y(l)||y(a)),function(e){if(!e)return;let t=e.match(/@example\s*([\s\S]*?)(?=@[a-zA-Z]|\n*$)/);return t?t[1].trim():void 0}(l)])}let e=!1,t=!1,n=!1,l=!1;for(let r=0,o=N.length;r<o;r++){let o=N[r];!S&&o[2]&&(l=!0),!v&&o[4]&&(n=!0),!w&&o[5]&&(t=!0),!B&&o[6]&&(e=!0)}E+="\n";let o=["属性",!k&&"必要",l&&"说明","类型",n&&"默认值",t&&"版本",e&&"作者"].filter(Boolean).join("|");E+=`|${o}|`;let i=[":-",!k&&":-",l&&":-",":-",n&&":-",t&&":-",e&&":-"].filter(Boolean);E+="\n";let c=i.join("|");E+=`|${c}|`;for(let r=0,o=N.length;r<o;r++){let o=N[r];E+="\n";let i=[(o[7]?`<n-popover arrow="true" trigger="click" encode-uri="true" content=${JSON.stringify(encodeURIComponent(`<n-md code-classic="false" 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]||"-"),!k&&(o[1]||"-"),l&&(o[2]||"-"),o[3]||"-",n&&(o[4]||"-"),t&&(o[5]||"-"),e&&(o[6]||"-")].filter(Boolean).join("|");E+=`|${i}|`}E+="\n"}return E+"\n"}export function generateEnumDocumentation(n,r){let l=n.name.text,o=h(n),i=T(o),a=b(o);Object.assign($,{[n.name.text]:e(n.getSourceFile().fileName).replace(r,"")});let c=i?`\\color{|4||0.45}{${l}}`:l,s=[i,c,a&&`\\color{#52c11b|1||0.9}{${a}}`].filter(Boolean).join(" "),u=x(o)?.split("|")||[],f=u.includes("comment"),m=u.includes("version"),p=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=j(l.name.getText()),a=h(l),c=j(function(e){let n=e.initializer;if(n&&t.isStringLiteral(n))return` '${n.text}'`}(l)),s=j(b(a)),u=j(T(a));!i||i.startsWith("\\color")||/^["'](.+)["']$/.test(i)||(i=`\\color{#4c81db}{${i}}`),e.push([i,!f&&u,c,!m&&s,!p&&(y(a)||y(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),!m&&n[3]&&(l=!0),!p&&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"}export function declToMd(e,n,r,i){let s=a(n,e,o.Latest,!0,l.TS),f="";return c(s,function n(l){if(t.isModuleDeclaration(l)&&l.name&&t.isStringLiteral(l.name)){let n=l.name.text,o=l.body;for(;o&&t.isModuleDeclaration(o);)o=o.body;if(o&&t.isModuleBlock(o)){let t=e.slice(o.getStart(s)+1,o.getEnd()-1);f+=`# Module \`${n}\``,f+=`
2
+ `,f+=`
3
+ `,f+=declToMd(t,n,r,i),f+=`
4
+ `,f+=`
5
+ `}}else u(l)?f+=generateInterfaceDocumentation(l,r,i):t.isEnumDeclaration(l)&&(f+=generateEnumDocumentation(l,i));c(l,n)}),f}
@@ -18,15 +18,9 @@ export interface HarvesterOptions {
18
18
  */ generate?: (params: HarvesterGenerateParams) => string | boolean;
19
19
  }
20
20
  export interface HarvesterGenerateParams {
21
- /**
22
- * 请求方法
23
- */ method: string;
24
- /**
25
- * 请求 URL 的 pathname
26
- */ pathname: string;
27
- /**
28
- * 转换文件名的函数
29
- */ convert: typeof convertUriToFileName;
21
+ /** 请求方法 */ method: string;
22
+ /** 请求 URL 的 pathname */ pathname: string;
23
+ /** 转换文件名的函数 */ convert: typeof convertUriToFileName;
30
24
  }
31
25
  export type ProxyItem = {
32
26
  target: string;
package/lib/dev/proxy.mjs CHANGED
@@ -1 +1 @@
1
- import{request as e}from"node:http";import{request as t}from"node:https";import{URL as r}from"node:url";import{brotliDecompressSync as o,gunzipSync as n,inflateSync as i}from"node:zlib";import{updateFile as a}from"@moneko/utils";import p from"../commom/log.mjs";import{isFunction as s,isObject as m}from"../utils/index.mjs";import{containMockUrl as l}from"./mock.mjs";export function convertUriToFileName(e){let t={" ":"➯","/":">",":":"◍"};return e.replace(/[\s/:]/g,e=>t[e]||e)}export async function setupProxy(c,h,d){if(h.writableEnded)return h;let f=c.url,u=Object.keys(d).find(e=>new RegExp(e).test(f));if(!u)return!1;let g="string"==typeof d[u]?{target:d[u],pathRewrite:void 0,changeOrigin:!0,secure:!0,ws:!1}:d[u],w=new r(g.target),y=f;if(g.pathRewrite&&"object"==typeof g.pathRewrite)for(let e in g.pathRewrite)Object.prototype.hasOwnProperty.call(g.pathRewrite,e)&&(y=f.replace(new RegExp(e),g.pathRewrite[e]));let v="https:"===w.protocol,x={method:c.method,hostname:w.hostname,port:w.port||(v?443:80),path:y,headers:{...c.headers},protocol:w.protocol};g.changeOrigin&&(x.headers.host=w.host);let R=v?t:e;return new Promise(e=>{let t=R(x,t=>{let p=c.method||"GET",d=new r(`${w.origin}${c.url}`).pathname,f=`${p} ${d}`,u=t.statusCode||404,y=u>=400,v=!!l(f);if(y&&v)return e(!1);if(h.writeHead(u,t.headers),!y&&!v&&g.harvester){let e=m(g.harvester)&&s(g.harvester.generate)?g.harvester.generate({method:p,pathname:d,convert:convertUriToFileName}):convertUriToFileName(f);if(e){let r=[];t.on("data",e=>r.push(e)),t.on("end",()=>{let p=Buffer.concat(r),s=t.headers["content-encoding"]||"",m=null;(m=s.includes("gzip")?n(p).toString():s.includes("br")?o(p).toString():s.includes("deflate")?i(p).toString():p.toString())&&a(`mock/${e}.ts`,`import type { MockConfiguration } from '@moneko/core';const conf: MockConfiguration = {'${f}': ${m}};export default conf;`)})}}t.pipe(h),e(h)});t.on("error",t=>(p(t),h.headersSent?h.end():(h.writeHead(502,{"Content-Type":"text/plain"}),h.end(`Proxy Error: ${t.message}`)),e(!1))),c.pipe(t)})}
1
+ import{request as e}from"node:http";import{request as t}from"node:https";import{URL as r}from"node:url";import{brotliDecompressSync as o,gunzipSync as n,inflateSync as i}from"node:zlib";import{updateFile as a}from"@moneko/utils";import p from"../commom/log.mjs";import{isFunction as s,isObject as m}from"../utils/index.mjs";import{containMockUrl as l}from"./mock.mjs";export function convertUriToFileName(e){let t={" ":"➯","/":">",":":"◍"};return e.replace(/[\s/:]/g,e=>t[e]||e)}function c(e){return{target:e,pathRewrite:void 0,changeOrigin:!0,secure:!0,ws:!1}}export async function setupProxy(h,d,f){if(d.writableEnded)return d;let u=h.url,g=Object.keys(f).find(e=>new RegExp(e).test(u));if(!g)return!1;let w="string"==typeof f[g]?c(f[g]):{...c(f[g].target),...f[g]},y=new r(w.target),v=u;if(w.pathRewrite&&"object"==typeof w.pathRewrite)for(let e in w.pathRewrite)Object.prototype.hasOwnProperty.call(w.pathRewrite,e)&&(v=u.replace(new RegExp(e),w.pathRewrite[e]));let x="https:"===y.protocol,R={method:h.method,hostname:y.hostname,port:y.port||(x?443:80),path:v,headers:{...h.headers},protocol:y.protocol};w.changeOrigin&&(R.headers.host=y.host);let $=x?t:e;return new Promise(e=>{let t=$(R,t=>{let p=h.method||"GET",c=new r(`${y.origin}${h.url}`).pathname,f=`${p} ${c}`,u=t.statusCode||404,g=u>=400,v=!!l(f);if(g&&v)return e(!1);if(d.writeHead(u,t.headers),!g&&!v&&w.harvester){let e=m(w.harvester)&&s(w.harvester.generate)?w.harvester.generate({method:p,pathname:c,convert:convertUriToFileName}):convertUriToFileName(f);if(e){let r=[];t.on("data",e=>r.push(e)),t.on("end",()=>{let p=Buffer.concat(r),s=t.headers["content-encoding"]||"",m=null;(m=s.includes("gzip")?n(p).toString():s.includes("br")?o(p).toString():s.includes("deflate")?i(p).toString():p.toString())&&a(`mock/${e}.ts`,`import type { MockConfiguration } from '@moneko/core';const conf: MockConfiguration = {'${f}': ${m}};export default conf;`)})}}t.pipe(d),e(d)});t.on("error",t=>(p(t),d.headersSent?d.end():(d.writeHead(502,{"Content-Type":"text/plain"}),d.end(`Proxy Error: ${t.message}`)),e(!1))),h.pipe(t)})}
package/lib/index.d.mts CHANGED
@@ -24,6 +24,7 @@ export type { OverrideResolverOption } from './plugin/override-resolve.mjs';
24
24
  export type { VirtualModules } from './plugin/virtual-module.mjs';
25
25
  export { APPTYPE, coreName, FRAMEWORK, isCI, isDev, isLibrary, isMicro, mainDirectory, packageJson, PACKAGENAME } from './process-env.mjs';
26
26
  export { type AlgorithmIdentifier, digest, md5, node_modules, resolveProgram, toCamelCase } from './utils/index.mjs';
27
+ export * from '@moneko/convert/solid';
27
28
  export * from '@moneko/mdx';
28
29
  export * from '@moneko/utils';
29
30
  import webpack from 'webpack';
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{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};
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{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/convert/solid";export*from"@moneko/mdx";export*from"@moneko/utils";import o from"webpack";export{o as webpack};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "4.7.6",
3
+ "version": "4.7.8-beta.0",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",
@@ -130,7 +130,7 @@
130
130
  "license": "MIT",
131
131
  "dependencies": {
132
132
  "@jsonjoy.com/fs-node": "4.56.10",
133
- "@moneko/convert": "1.2.0",
133
+ "@moneko/convert": "1.3.0",
134
134
  "@moneko/eslint": "1.11.1",
135
135
  "@moneko/mdx": "1.0.3",
136
136
  "@moneko/raw-import": "1.3.0",