@moneko/core 4.7.5 → 4.7.6

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.
@@ -6,8 +6,8 @@ import { IncomingMessage, ServerResponse } from 'node:http';
6
6
  * @example
7
7
  * convertUriToFileName('GET /api/create') => 'GET➯api>create'
8
8
  * convertUriToFileName('POST /api/create') => 'POST➯api>create'
9
- */ declare function convertUriToFileName(uri: string): string;
10
- interface HarvesterOptions {
9
+ */ export declare function convertUriToFileName(uri: string): string;
10
+ export interface HarvesterOptions {
11
11
  /**
12
12
  * 生成的 Mock 文件名
13
13
  * @param params 参数
@@ -17,7 +17,7 @@ interface HarvesterOptions {
17
17
  * @returns 文件名,文件名会自动添加到 mock 目录下,如果返回false, 则不生成 Mock 文件
18
18
  */ generate?: (params: HarvesterGenerateParams) => string | boolean;
19
19
  }
20
- interface HarvesterGenerateParams {
20
+ export interface HarvesterGenerateParams {
21
21
  /**
22
22
  * 请求方法
23
23
  */ method: string;
@@ -28,7 +28,7 @@ interface HarvesterGenerateParams {
28
28
  * 转换文件名的函数
29
29
  */ convert: typeof convertUriToFileName;
30
30
  }
31
- type ProxyItem = {
31
+ export type ProxyItem = {
32
32
  target: string;
33
33
  changeOrigin?: boolean;
34
34
  secure?: boolean;
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";function c(e){let t={" ":"➯","/":">",":":"◍"};return e.replace(/[\s/:]/g,e=>t[e]||e)}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]?{target:f[g],pathRewrite:void 0,changeOrigin:!0,secure:!0,ws:!1}:f[g],y=new r(w.target),x=u;if(w.pathRewrite&&"object"==typeof w.pathRewrite)for(let e in w.pathRewrite)Object.prototype.hasOwnProperty.call(w.pathRewrite,e)&&(x=u.replace(new RegExp(e),w.pathRewrite[e]));let R="https:"===y.protocol,$={method:h.method,hostname:y.hostname,port:y.port||(R?443:80),path:x,headers:{...h.headers},protocol:y.protocol};w.changeOrigin&&($.headers.host=y.host);let k=R?t:e;return new Promise(e=>{let t=k($,t=>{let p=h.method||"GET",f=new r(`${y.origin}${h.url}`).pathname,u=`${p} ${f}`,g=t.statusCode||404,x=g>=400,R=!!l(u);if(x&&R)return e(!1);if(d.writeHead(g,t.headers),!x&&!R&&w.harvester){let e=m(w.harvester)&&s(w.harvester.generate)?w.harvester.generate({method:p,pathname:f,convert:c}):c(u);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 = {'${u}': ${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)})}
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)})}
package/lib/index.d.mts CHANGED
@@ -13,7 +13,7 @@ export { default as require } from './commom/require.mjs';
13
13
  export * as Rule from './commom/rule.mjs';
14
14
  export { default as timer } from './commom/timer.mjs';
15
15
  export { type MockConfiguration, type ProxyFuncType, type RequestFormData, yApiMock, type YApiOption, type YApiOptionBySchema, yApiSchemaMock } from './dev/mock.mjs';
16
- export type { ProxyConfig } from './dev/proxy.mjs';
16
+ export { convertUriToFileName, type HarvesterGenerateParams, type HarvesterOptions, type ProxyConfig, type ProxyItem } from './dev/proxy.mjs';
17
17
  export type { ReactCompilerOption } from './loader/react-compiler.cjs';
18
18
  export { type JsxDomExpressions, default as jsxDomExpressions } from './options/jsx-dom-expressions.mjs';
19
19
  export { type OptimizationSplitChunksOptions, default as splitChunk } from './options/split-chunk.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{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/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.5",
3
+ "version": "4.7.6",
4
4
  "description": "core",
5
5
  "main": "lib/index.mjs",
6
6
  "type": "module",