@aicblock/nserve 1.0.2 → 1.0.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/commander.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var d=Object.create;var l=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var b=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of m(n))!h.call(e,r)&&r!==t&&l(e,r,{get:()=>n[r],enumerable:!(s=g(n,r))||s.enumerable});return e};var O=(e,n,t)=>(t=e!=null?d(y(e)):{},b(n||!e||!e.__esModule?l(t,"default",{value:e,enumerable:!0}):t,e));var R=require("esbuild");var S=O(require("js-yaml"));function i(e,n="INFO"){let t=(p,f="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[f]}${p}\x1B[0m`,r={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[n],u=t(n,r);console.log(`[${u}] - ${e}`)}var a=require("./runtime"),o=require("commander"),c=process.argv;c[2]===void 0&&c.push("serve");o.program.version("1.0.2");o.program.on("command:*",function(){let e=o.program.args[0];if(["serve","build","gen"].includes(e)){(0,a.execRun)(e);return}i("See --help for a list of available commands."),i(`Invalid command: ${e}`,"ERROR"),process.exit(0)});o.program.on("--help",function(){console.log("Commands:"),console.log(" serve Start Run the dev server"),console.log(" build Build the project"),console.log(" gen Generate code based on the configuration file")});o.program.parse(c);
2
+ "use strict";var d=Object.create;var l=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,h=Object.prototype.hasOwnProperty;var b=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of m(n))!h.call(e,r)&&r!==t&&l(e,r,{get:()=>n[r],enumerable:!(s=g(n,r))||s.enumerable});return e};var O=(e,n,t)=>(t=e!=null?d(y(e)):{},b(n||!e||!e.__esModule?l(t,"default",{value:e,enumerable:!0}):t,e));var R=require("esbuild");var x=O(require("js-yaml"));function i(e,n="INFO"){let t=(p,f="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[f]}${p}\x1B[0m`,r={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[n],u=t(n,r);console.log(`[${u}] - ${e}`)}var a=require("./runtime"),o=require("commander"),c=process.argv;c[2]===void 0&&c.push("serve");o.program.version("1.0.3");o.program.on("command:*",function(){let e=o.program.args[0];if(["serve","build","gen"].includes(e)){(0,a.execRun)(e);return}i("See --help for a list of available commands."),i(`Invalid command: ${e}`,"ERROR"),process.exit(0)});o.program.on("--help",function(){console.log("Commands:"),console.log(" serve Start Run the dev server"),console.log(" build Build the project"),console.log(" gen Generate code based on the configuration file")});o.program.parse(c);
package/lib/core/run.js CHANGED
@@ -1 +1 @@
1
- "use strict";var J=Object.create;var _=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var B=(t,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of k(n))!W.call(t,e)&&e!==r&&_(t,e,{get:()=>n[e],enumerable:!(o=K(n,e))||o.enumerable});return t};var S=(t,n,r)=>(r=t!=null?J(G(t)):{},B(n||!t||!t.__esModule?_(r,"default",{value:t,enumerable:!0}):r,t));var T=require("esbuild");var I=require("esbuild"),s=require("fs"),b=require("path"),C=S(require("vm")),L=S(require("js-yaml"));function R(t,n="INFO"){let r=(c,i="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[i]}${c}\x1B[0m`,e={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[n],l=r(n,e);console.log(`[${l}] - ${t}`)}function P(t){let n=(r,o)=>{try{let e=(0,s.readdirSync)(r);if(e.length===0){(0,s.rmdirSync)(r),o&&o();return}let l=e.length,c=0,i=f=>{f===l&&((0,s.rmdirSync)(r),o&&o())};e.forEach(f=>{let a=(0,b.join)(r,f);if((0,s.statSync)(a).isDirectory()){n(a,()=>{i(c+=1)});return}(0,s.unlinkSync)(a),i(c+=1)})}catch(e){o&&o(e)}};return new Promise((r,o)=>{if(!t||!(0,s.existsSync)(t)){r();return}if(!(0,s.statSync)(t).isDirectory()){o("The directory path to be deleted is not a directory path");return}n(t,e=>{e?o(e):r()})})}function w(t,n){try{let r=(0,s.readFileSync)(t,"utf-8"),o=(0,I.transformSync)(r,{format:"cjs",loader:"ts",platform:"node",target:"node18"}),e={module:{paths:[(0,b.join)(n,"node_modules")],exports:{default:void 0}},require,__dirname:n,global,__filename,process},l=new C.default.Script(o.code);return C.default.createContext(e),l.runInContext(e),e.module.exports.default||e.module.exports}catch(r){console.error(r),process.exit(0)}}async function v(t,n,r={}){let{createDir:o=!0,indent:e=2,noRefs:l=!0,lineWidth:c=80,skipInvalid:i=!1,quotingType:f='"',forceQuotes:a=!1,encoding:g="utf8",...h}=r;try{let p;if(typeof t=="string")try{p=JSON.parse(t)}catch(y){throw new Error(`\u65E0\u6548\u7684 JSON \u5B57\u7B26\u4E32: ${y instanceof Error?y.message:String(y)}`)}else if(typeof t=="object"&&t!==null)p=t;else throw new Error("jsonData \u5FC5\u987B\u662F\u6709\u6548\u7684 JSON \u5B57\u7B26\u4E32\u3001\u5BF9\u8C61\u6216\u6570\u7EC4");let u=L.default.dump(p,{indent:e,noRefs:l,skipInvalid:i,lineWidth:c,quotingType:f,forceQuotes:a,...h,styles:{"!!null":"canonical",...h.styles}});if(o){let y=(0,b.dirname)(n);try{(0,s.accessSync)(y)}catch{(0,s.mkdirSync)(y,{recursive:!0}),console.log(`\u5DF2\u521B\u5EFA\u76EE\u5F55: ${y}`)}}(0,s.writeFileSync)(n,u,{encoding:g});let O=Buffer.byteLength(u,g);return console.log(`YAML \u6587\u4EF6\u5DF2\u6210\u529F\u751F\u6210: ${n}`),console.log(`\u6587\u4EF6\u5927\u5C0F: ${O} \u5B57\u8282`),{content:u,filePath:n,fileSize:O}}catch(p){throw console.error("\u8F6C\u6362\u6216\u4FDD\u5B58\u5931\u8D25:",p instanceof Error?p.message:String(p)),p}}var d=require("path"),N=S(require("os")),m=require("fs"),x=require("child_process");function A(t,n){let r=Date.now(),o=()=>`${Date.now()-r}ms`;try{(0,T.build)(t).then(({errors:e})=>{if(e.length===0){n&&n(),R(`Compile successfully.[${o()}]`,"SUCCESS");return}R(JSON.stringify(e),"ERROR")})}catch(e){R(JSON.stringify(e),"ERROR")}}var U=t=>{let n=t.compilerOptions?.paths||{},r=Object.keys(n);return{name:"alias",setup(o){o.onLoad({filter:/\.ts$/},async e=>{let l=await m.promises.readFile(e.path,"utf8"),c="ts";if(r.length===0)return{contents:l,loader:c};let i=l;return r.forEach(a=>{let g=a.replace(/\*$/,""),h=new RegExp(`from[\\s]{1,}[\\'\\"]${g}((?!\\n[\\'\\"]).)*[\\'\\"]`,"g"),p=(n[a]&&n[a][0]).replace(/\*$/,"");i.replace(h,u=>`from '${u.replace("from","").replace(/['"]/g,"")}'`)}),{contents:i,loader:c}})}}};function Y(t){return new Promise(n=>{let r;N.default.type().startsWith("Windows")?r=`tasklist /FI "PID eq ${t}" /NH`:r=`kill -0 ${t} 2>/dev/null`,(0,x.exec)(r,(o,e,l)=>{o?n(!1):N.default.type().startsWith("Windows")?n(e.includes(t.toString())):n(l==="")})})}var M=(t,n,r,o)=>{let e=()=>{let c=process.platform==="win32"?"node.cmd":"node";return(0,x.spawnSync)(c,[t],{stdio:"inherit",cwd:r}).pid};(0,m.watch)(n,{recursive:!0},(()=>{let c,i=e();return()=>{c&&clearTimeout(c),c=setTimeout(()=>{Y(i).then(f=>{try{f&&process.kill(i),o&&o().then(()=>i=e())}catch(a){R("Fial","ERROR"),console.log(a)}})},500)}})())},q=()=>{try{let t=process.env.AICBLOCK_NSERVE_RUN_CWD,n=process.env.AICBLOCK_NSERVE_RUN_CONFIG_PATH,r=process.env.AICBLOCK_NSERVE_RUN_MODE,o=w(n,process.env.AICBLOCK_NSERVE_RUN_CWD),{entry:e,testing:l,outputDir:c,sourceDir:i,plugins:f,external:a,yamlConfig:g}=o;if(!i||!(0,m.existsSync)((0,d.join)(t,i)))throw Error("[ERROR] The compilation directory is not configured or does not exist");let h=(0,d.join)(t,i,e);if((!e||typeof e!="string"||!(0,m.existsSync)(h))&&r==="serve")throw Error(`[ERROR] The run file does not exist. Please check the config:[${h}]`);let p=!l,u=(0,d.join)(t,c||"dist");r==="build"&&(0,m.existsSync)(u)&&P(u);let O=(0,d.join)(t,"tsconfig.json"),y=(0,m.readFileSync)(O,"utf-8"),F=JSON.parse(y),j={entryPoints:[h],minify:p,outdir:u,plugins:[U(F),...f||[]],bundle:!0,platform:"node",format:"cjs",external:a},$=()=>new Promise(E=>{A(j,()=>{g&&v(g,(0,d.join)(u,"config.yaml")),E(void 0)})});A(j,()=>{if(g&&v(g,(0,d.join)(u,"config.yaml")),r==="build"||!e)return;let E=(0,d.basename)(e),D=E.substring(0,E.length-3)+".js",V=(0,d.join)(u,D);M(V,(0,d.join)(t,i||"src"),u,$)})}catch(t){console.error("[ERROR_STACK]",t);let n=t?.message||"[FN::esbuild::exec]";R(n,"ERROR"),process.exit(0)}};q();
1
+ "use strict";var J=Object.create;var j=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var W=(t,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of k(n))!U.call(t,e)&&e!==r&&j(t,e,{get:()=>n[e],enumerable:!(o=K(n,e))||o.enumerable});return t};var S=(t,n,r)=>(r=t!=null?J(G(t)):{},W(n||!t||!t.__esModule?j(r,"default",{value:t,enumerable:!0}):r,t));var T=require("esbuild");var A=require("esbuild"),s=require("fs"),b=require("path"),C=S(require("vm")),L=S(require("js-yaml"));function R(t,n="INFO"){let r=(c,i="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[i]}${c}\x1B[0m`,e={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[n],l=r(n,e);console.log(`[${l}] - ${t}`)}function P(t){let n=(r,o)=>{try{let e=(0,s.readdirSync)(r);if(e.length===0){(0,s.rmdirSync)(r),o&&o();return}let l=e.length,c=0,i=f=>{f===l&&((0,s.rmdirSync)(r),o&&o())};e.forEach(f=>{let a=(0,b.join)(r,f);if((0,s.statSync)(a).isDirectory()){n(a,()=>{i(c+=1)});return}(0,s.unlinkSync)(a),i(c+=1)})}catch(e){o&&o(e)}};return new Promise((r,o)=>{if(!t||!(0,s.existsSync)(t)){r();return}if(!(0,s.statSync)(t).isDirectory()){o("The directory path to be deleted is not a directory path");return}n(t,e=>{e?o(e):r()})})}function w(t,n){try{let r=(0,s.readFileSync)(t,"utf-8"),o=(0,A.transformSync)(r,{format:"cjs",loader:"ts",platform:"node",target:"node18"}),e={module:{paths:[(0,b.join)(n,"node_modules")],exports:{default:void 0}},require,__dirname:n,global,__filename,process},l=new C.default.Script(o.code);return C.default.createContext(e),l.runInContext(e),e.module.exports.default||e.module.exports}catch(r){console.error(r),process.exit(0)}}async function v(t,n,r={}){let{createDir:o=!0,indent:e=2,noRefs:l=!0,lineWidth:c=80,skipInvalid:i=!1,quotingType:f='"',forceQuotes:a=!1,encoding:m="utf8",...h}=r;try{let p;if(typeof t=="string")try{p=JSON.parse(t)}catch(y){throw new Error(`\u65E0\u6548\u7684 JSON \u5B57\u7B26\u4E32: ${y instanceof Error?y.message:String(y)}`)}else if(typeof t=="object"&&t!==null)p=t;else throw new Error("jsonData \u5FC5\u987B\u662F\u6709\u6548\u7684 JSON \u5B57\u7B26\u4E32\u3001\u5BF9\u8C61\u6216\u6570\u7EC4");let u=L.default.dump(p,{indent:e,noRefs:l,skipInvalid:i,lineWidth:c,quotingType:f,forceQuotes:a,...h,styles:{"!!null":"canonical",...h.styles}});if(o){let y=(0,b.dirname)(n);try{(0,s.accessSync)(y)}catch{(0,s.mkdirSync)(y,{recursive:!0}),console.log(`\u5DF2\u521B\u5EFA\u76EE\u5F55: ${y}`)}}(0,s.writeFileSync)(n,u,{encoding:m});let O=Buffer.byteLength(u,m);return console.log(`YAML \u6587\u4EF6\u5DF2\u6210\u529F\u751F\u6210: ${n}`),console.log(`\u6587\u4EF6\u5927\u5C0F: ${O} \u5B57\u8282`),{content:u,filePath:n,fileSize:O}}catch(p){throw console.error("\u8F6C\u6362\u6216\u4FDD\u5B58\u5931\u8D25:",p instanceof Error?p.message:String(p)),p}}var g=require("path"),N=S(require("os")),d=require("fs"),E=require("child_process");function I(t,n){let r=Date.now(),o=()=>`${Date.now()-r}ms`;try{(0,T.build)(t).then(({errors:e})=>{if(e.length===0){n&&n(),R(`Compile successfully.[${o()}]`,"SUCCESS");return}R(JSON.stringify(e),"ERROR")})}catch(e){R(JSON.stringify(e),"ERROR")}}var B=t=>{let n=t.compilerOptions?.paths||{},r=Object.keys(n);return{name:"alias",setup(o){o.onLoad({filter:/\.ts$/},async e=>{let l=await d.promises.readFile(e.path,"utf8"),c="ts";if(r.length===0)return{contents:l,loader:c};let i=l;return r.forEach(a=>{let m=a.replace(/\*$/,""),h=new RegExp(`from[\\s]{1,}[\\'\\"]${m}((?!\\n[\\'\\"]).)*[\\'\\"]`,"g"),p=(n[a]&&n[a][0]).replace(/\*$/,"");i.replace(h,u=>`from '${u.replace("from","").replace(/['"]/g,"")}'`)}),{contents:i,loader:c}})}}};function Y(t){return new Promise(n=>{let r;N.default.type().startsWith("Windows")?r=`tasklist /FI "PID eq ${t}" /NH`:r=`kill -0 ${t} 2>/dev/null`,(0,E.exec)(r,(o,e,l)=>{o?n(!1):N.default.type().startsWith("Windows")?n(e.includes(t.toString())):n(l==="")})})}var M=(t,n,r,o)=>{let e=()=>{let c=process.platform==="win32"?"node.cmd":"node";return(0,E.spawnSync)(c,[t],{stdio:"inherit",cwd:r}).pid};(0,d.watch)(n,{recursive:!0},(()=>{let c,i=e();return()=>{c&&clearTimeout(c),c=setTimeout(()=>{Y(i).then(f=>{try{f&&process.kill(i),o&&o().then(()=>i=e())}catch(a){R("Fial","ERROR"),console.log(a)}})},500)}})())},q=()=>{try{let t=process.env.AICBLOCK_NSERVE_RUN_CWD,n=process.env.AICBLOCK_NSERVE_RUN_CONFIG_PATH,r=process.env.AICBLOCK_NSERVE_RUN_MODE,o=w(n,process.env.AICBLOCK_NSERVE_RUN_CWD),{entry:e,testing:l,outputDir:c,sourceDir:i,plugins:f,external:a,yamlConfig:m}=o;if(!i||!(0,d.existsSync)((0,g.join)(t,i)))throw Error("[ERROR] The compilation directory is not configured or does not exist");let h=(0,g.join)(t,i,e);if((!e||typeof e!="string"||!(0,d.existsSync)(h))&&r==="serve")throw Error(`[ERROR] The run file does not exist. Please check the config:[${h}]`);let p=!l,u=(0,g.join)(t,c||"dist");r==="build"&&(0,d.existsSync)(u)&&P(u);let O=(0,g.join)(t,"tsconfig.json"),y=(0,d.readFileSync)(O,"utf-8"),$=JSON.parse(y),_={entryPoints:[h],minify:p,outdir:u,plugins:[B($),...f||[]],bundle:!0,platform:"node",format:"cjs",external:a},F=()=>new Promise(x=>{I(_,()=>{m&&v(m,(0,g.join)(u,"config.yaml")),x(void 0)})});I(_,()=>{if(m&&v(m,(0,g.join)(u,"config.yaml")),r==="build"||!e)return;let x=(0,g.basename)(e),D=x.substring(0,x.length-3)+".js",V=(0,g.join)(u,D);M(V,(0,g.join)(t,i||"src"),u,F)})}catch(t){console.error("[ERROR_STACK]",t);let n=t?.message||"[FN::esbuild::exec]";R(n,"ERROR"),process.exit(0)}};q();
package/lib/index.js CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";var T=Object.create;var h=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,G=Object.prototype.hasOwnProperty;var F=(e,t)=>{for(var r in t)h(e,r,{get:t[r],enumerable:!0})},x=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of w(t))!G.call(e,n)&&n!==r&&h(e,n,{get:()=>t[n],enumerable:!(s=P(t,n))||s.enumerable});return e};var V=(e,t,r)=>(r=e!=null?T(D(e)):{},x(t||!e||!e.__esModule?h(r,"default",{value:e,enumerable:!0}):r,e)),B=e=>x(h({},"__esModule",{value:!0}),e);var Q={};F(Q,{DefineGenRouter:()=>L,DefineNserveConfig:()=>j,default:()=>z,nbuild:()=>q});module.exports=B(Q);var b=require("esbuild");var K=require("esbuild"),f=require("fs"),m=require("path");var $=V(require("js-yaml"));function v(e,t="INFO"){let r=(c,u="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[u]}${c}\x1B[0m`,n={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[t],o=r(t,n);console.log(`[${o}] - ${e}`)}function O(e,t){let r=(n,o)=>{if(Object.prototype.toString.call(n)!=="[object Object]"||Object.prototype.toString.call(o)!=="[object Object]")return console.warn("[STACK_LOG] AICBLOCK_UTIL: \u53C2\u6570\u9519\u8BEF"),{};let c={},u=Object.keys(n);return Object.keys(o).filter(l=>!u.includes(l)).forEach(l=>Object.assign(c,{[l]:o[l]})),Object.keys(n).forEach(l=>{let i=o[l],p=n[l];if(i!==void 0&&Object.prototype.toString.call(i)==="[object Object]"&&Object.prototype.toString.call(p)==="[object Object]"){Object.assign(c,{[l]:r(p,i)});return}Object.assign(c,{[l]:i!==void 0?i:p})}),c};return(Array.isArray(t)?t:[t]).reduce((n,o)=>r(n,o),e)}function Y(e,t){let r=e.findIndex(n=>n===t);if(r<0||e.length-1===r)return;let s=e[r+1];if(s.indexOf("--")!==0)return s}function J(e){return e===void 0||e===""||e===null}function M(e){let t={};return e.split(/(\r\n)|[\r\n]/).filter(s=>!J(s)).forEach(s=>{let n=s.split("="),o=(n[0]||"").trim(),c=(n[1]||"").trim();o.split("")[0]!=="#"&&o!==""&&(t[o]=c)}),t}function k(e){let t=Number(e);if(!isNaN(t)&&e.trim()!=="")return t;let r=e.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="null")return null;if(r!=="undefined")return e}function U(e,t="."){let r=e.trim().split(`
2
- `),s={};return r.filter(n=>n.indexOf("YAML_CONFIG"+t)===0).forEach(n=>{if(!n.trim())return;let[o,c]=n.split("=");if(!o||c===void 0)return;let u=o.trim(),a=c.trim(),l=u.split(t),i=s;for(let p=0;p<l.length;p++){let d=l[p];p===l.length-1?i[d]=k(a):((!i[d]||typeof i[d]!="object")&&(i[d]={}),i=i[d])}}),s}function S(e,t){let r={},s={},n={},o=(0,m.join)(e,".env"),c=process.env.AICBLOCK_NSERVE_RUN_ARGV||"[]",u=Y(JSON.parse(c),"--mode"),a=u!==void 0&&u||(t==="build"?"production":"development"),l=(0,m.join)(e,`.env.${a}`),i={},p=[o,l],d=(0,m.join)(e,".env.local");(0,f.existsSync)(d)&&p.push(d);let C=(0,m.join)(e,`.env.${a}.local`);(0,f.existsSync)(C)&&p.push(C);let R=[],_=g=>{if(!(0,f.existsSync)(g))return;let y=(0,f.readFileSync)(g,"utf-8"),E=M(y);R.push(y),Object.assign(i,E)};p.forEach(_);let A=["YAML_CONFIG."];return Object.keys(i).forEach(g=>{if(A.some(I=>g.indexOf(I)===0))return;let y=i[g];if(g.indexOf("AICBLOCK_NSERVE_APP_")===0){r[g]=y;return}let E=t==="serve"?g.replace(/^(APPTEST_)/,""):g;s[E]=y}),R.join("").indexOf("YAML_CONFIG.")>=0&&Object.assign(n,U(R.join(`
3
- `))),{system:r,app:s,yamlConfig:n}}var W=e=>{let{servicePath:t,serviceHandler:r,routers:s,middleware:n}=e,o=s.map(c=>{let{name:u}=c;return Object.assign(c,{handler:u})});return{prefix:t,service:o,handler:r,middleware:n}},N=W;var q={transformSync:b.transformSync,build:b.build};function j(e){try{let t=process.env.AICBLOCK_NSERVE_RUN_CWD,r=process.env.AICBLOCK_NSERVE_RUN_MODE,s={},n=S(t,r),{app:o,system:c}=n;n.system.AICBLOCK_NSERVE_APP_ENTRY&&Object.assign(s,{entry:n.system.AICBLOCK_NSERVE_APP_ENTRY}),Object.keys(n.yamlConfig||{}).length>0&&Object.assign(s,{yamlConfig:n.yamlConfig.YAML_CONFIG});let u=l=>{let i=o&&o[l];i&&(process.env[l]=i)};Object.keys(o||{}).forEach(u);let a=O({outputDir:"dist",entry:"app.ts",sourceDir:"src"},{...e,envs:{system:c}});return Object.keys(n.yamlConfig||{}).length>0&&(a=O(a||{},{yamlConfig:n.yamlConfig.YAML_CONFIG})),a.lifecycleBefore&&typeof a.lifecycleBefore=="function"&&(a=O(a||{},a.lifecycleBefore(a)||{})),a}catch(t){v("defineNserveConfig fial::","ERROR"),console.error(t)}}var L=N,z={DefineNserveConfig:j,DefineGenRouter:L};0&&(module.exports={DefineGenRouter,DefineNserveConfig,nbuild});
1
+ "use strict";var T=Object.create;var h=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var G=(e,t)=>{for(var r in t)h(e,r,{get:t[r],enumerable:!0})},E=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of $(t))!D.call(e,n)&&n!==r&&h(e,n,{get:()=>t[n],enumerable:!(s=P(t,n))||s.enumerable});return e};var F=(e,t,r)=>(r=e!=null?T(w(e)):{},E(t||!e||!e.__esModule?h(r,"default",{value:e,enumerable:!0}):r,e)),V=e=>E(h({},"__esModule",{value:!0}),e);var Z={};G(Z,{DefineGenRouter:()=>A,DefineNserveConfig:()=>j,default:()=>q,nbuild:()=>z});module.exports=V(Z);var C=require("esbuild");var B=require("esbuild"),f=require("fs"),m=require("path");var K=F(require("js-yaml"));function S(e,t="INFO"){let r=(c,p="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[p]}${c}\x1B[0m`,n={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[t],o=r(t,n);console.log(`[${o}] - ${e}`)}function O(e,t){let r=(n,o)=>{if(Object.prototype.toString.call(n)!=="[object Object]"||Object.prototype.toString.call(o)!=="[object Object]")return console.warn("[STACK_LOG] AICBLOCK_UTIL: \u53C2\u6570\u9519\u8BEF"),{};let c={},p=Object.keys(n);return Object.keys(o).filter(l=>!p.includes(l)).forEach(l=>Object.assign(c,{[l]:o[l]})),Object.keys(n).forEach(l=>{let i=o[l],u=n[l];if(i!==void 0&&Object.prototype.toString.call(i)==="[object Object]"&&Object.prototype.toString.call(u)==="[object Object]"){Object.assign(c,{[l]:r(u,i)});return}Object.assign(c,{[l]:i!==void 0?i:u})}),c};return(Array.isArray(t)?t:[t]).reduce((n,o)=>r(n,o),e)}function Y(e,t){let r=e.findIndex(n=>n===t);if(r<0||e.length-1===r)return;let s=e[r+1];if(s.indexOf("--")!==0)return s}function k(e){return e===void 0||e===""||e===null}function J(e){let t={};return e.split(/(\r\n)|[\r\n]/).filter(s=>!k(s)).forEach(s=>{let n=s.split("="),o=(n[0]||"").trim(),c=(n[1]||"").trim();o.split("")[0]!=="#"&&o!==""&&(t[o]=c)}),t}function M(e){let t=Number(e);if(!isNaN(t)&&e.trim()!=="")return t;let r=e.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="null")return null;if(r!=="undefined")return e}function U(e,t="."){let r=e.trim().split(`
2
+ `),s={};return r.filter(n=>n.indexOf("YAML_CONFIG"+t)===0).forEach(n=>{if(!n.trim())return;let[o,c]=n.split("=");if(!o||c===void 0)return;let p=o.trim(),a=c.trim(),l=p.split(t),i=s;for(let u=0;u<l.length;u++){let d=l[u];u===l.length-1?i[d]=M(a):((!i[d]||typeof i[d]!="object")&&(i[d]={}),i=i[d])}}),s}function v(e,t){let r={},s={},n={},o=(0,m.join)(e,".env"),c=process.env.AICBLOCK_NSERVE_RUN_ARGV||"[]",p=Y(JSON.parse(c),"--mode"),a=p!==void 0&&p||(t==="build"?"production":"development"),l=(0,m.join)(e,`.env.${a}`),i={},u=[o,l],d=(0,m.join)(e,".env.local");(0,f.existsSync)(d)&&u.push(d);let b=(0,m.join)(e,`.env.${a}.local`);(0,f.existsSync)(b)&&u.push(b);let R=[],L=g=>{if(!(0,f.existsSync)(g))return;let y=(0,f.readFileSync)(g,"utf-8"),x=J(y);R.push(y),Object.assign(i,x)};u.forEach(L);let _=["YAML_CONFIG."];return Object.keys(i).forEach(g=>{if(_.some(I=>g.indexOf(I)===0))return;let y=i[g];if(g.indexOf("AICBLOCK_NSERVE_APP_")===0){r[g]=y;return}let x=t==="serve"?g.replace(/^(APPTEST_)/,""):g;s[x]=y}),R.join("").indexOf("YAML_CONFIG.")>=0&&Object.assign(n,U(R.join(`
3
+ `))),{system:r,app:s,yamlConfig:n}}var W=e=>{let{servicePath:t,serviceHandler:r,routers:s,middleware:n}=e,o=s.map(c=>{let{name:p}=c;return Object.assign(c,{handler:p})});return{prefix:t,service:o,handler:r,middleware:n}},N=W;var z={transformSync:C.transformSync,build:C.build};function j(e){try{let t=process.env.AICBLOCK_NSERVE_RUN_CWD,r=process.env.AICBLOCK_NSERVE_RUN_MODE,s={},n=v(t,r),{app:o,system:c}=n;n.system.AICBLOCK_NSERVE_APP_ENTRY&&Object.assign(s,{entry:n.system.AICBLOCK_NSERVE_APP_ENTRY}),Object.keys(n.yamlConfig||{}).length>0&&Object.assign(s,{yamlConfig:n.yamlConfig.YAML_CONFIG});let p=l=>{let i=o&&o[l];i&&(process.env[l]=i)};Object.keys(o||{}).forEach(p);let a=O({outputDir:"dist",entry:"app.ts",sourceDir:"src"},{...e,envs:{system:c}});return Object.keys(n.yamlConfig||{}).length>0&&(a=O(a||{},{yamlConfig:n.yamlConfig.YAML_CONFIG})),a.lifecycleBefore&&typeof a.lifecycleBefore=="function"&&(a=O(a||{},a.lifecycleBefore(a)||{})),a}catch(t){S("defineNserveConfig fial::","ERROR"),console.error(t)}}var A=N,q={DefineNserveConfig:j,DefineGenRouter:A};0&&(module.exports={DefineGenRouter,DefineNserveConfig,nbuild});
package/lib/runtime.js CHANGED
@@ -1,21 +1,21 @@
1
- "use strict";var Ne=Object.create;var Y=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty;var we=(e,r)=>{for(var o in r)Y(e,o,{get:r[o],enumerable:!0})},fe=(e,r,o,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ae(r))!je.call(e,i)&&i!==o&&Y(e,i,{get:()=>r[i],enumerable:!(c=xe(r,i))||c.enumerable});return e};var de=(e,r,o)=>(o=e!=null?Ne(Le(e)):{},fe(r||!e||!e.__esModule?Y(o,"default",{value:e,enumerable:!0}):o,e)),De=e=>fe(Y({},"__esModule",{value:!0}),e);var Je={};we(Je,{default:()=>We,execRun:()=>_e});module.exports=De(Je);var q=require("path");var me=require("esbuild"),$=require("fs"),ee=require("path"),Z=de(require("vm")),Ue=de(require("js-yaml"));function S(e,r="INFO"){let o=(l,u="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[u]}${l}\x1B[0m`,i={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[r],d=o(r,i);console.log(`[${d}] - ${e}`)}function te(e,r){let o=e.findIndex(i=>i===r);if(o<0||e.length-1===o)return;let c=e[o+1];if(c.indexOf("--")!==0)return c}function F(e,r){try{let o=(0,$.readFileSync)(e,"utf-8"),c=(0,me.transformSync)(o,{format:"cjs",loader:"ts",platform:"node",target:"node18"}),i={module:{paths:[(0,ee.join)(r,"node_modules")],exports:{default:void 0}},require,__dirname:r,global,__filename,process},d=new Z.default.Script(c.code);return Z.default.createContext(i),d.runInContext(i),i.module.exports.default||i.module.exports}catch(o){console.error(o),process.exit(0)}}var re=require("fs"),Te=require("child_process");var g=require("fs"),b=require("path");function ge(e){return!e||typeof e!="string"?e:e.replace(/([A-Z])/g," $1").trim().split(/\s+/).join("-").toLowerCase()}function P(e){return!e||typeof e!="string"?e:e.split(/[\-\_]/g).map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join("")}var ve=e=>{let r=[],o=new Map,c=new Map;function i(n){if(!c.has(n))return c.set(n,1),n;let t=c.get(n)+1;return c.set(n,t),`${n}${t}`}function d(n,t,a){let s=[];if(t.type==="array"){if(t.properties&&Object.keys(t.properties).length>0){let p=t.name||i(`${a||"Anonymous"}_${n}_Item`),y=l(p,t.properties,t.description);return y&&(o.set(p,y),s.push(p)),{type:`${p}[]`,generatedInterfaces:s}}return{type:"any[]",generatedInterfaces:s}}if(t.type==="object"&&t.properties){let p=t.name||i(`${a||"Anonymous"}_${n}`),y=l(p,t.properties,t.description);return y&&(o.set(p,y),s.push(p)),{type:p,generatedInterfaces:s}}return typeof t.type=="object"?{type:t.type.name,generatedInterfaces:s}:{type:t.type||"string",generatedInterfaces:s}}function l(n,t,a){let s=[];return a&&s.push(`// ${a}`),Object.entries(t).forEach(([p,y])=>{let h=d(p,y,n),O=y.description?` // ${y.description}`:"",A=` ${p}${y.required===!1?"?":""}: ${h.type};`;s.push(O?`${O}
2
- ${A}`:A)}),s.length===0?`interface ${n} {}`:`interface ${n} {
1
+ "use strict";var xe=Object.create;var K=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty;var we=(e,r)=>{for(var o in r)K(e,o,{get:r[o],enumerable:!0})},pe=(e,r,o,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ae(r))!je.call(e,i)&&i!==o&&K(e,i,{get:()=>r[i],enumerable:!(c=Ce(r,i))||c.enumerable});return e};var fe=(e,r,o)=>(o=e!=null?xe(Le(e)):{},pe(r||!e||!e.__esModule?K(o,"default",{value:e,enumerable:!0}):o,e)),De=e=>pe(K({},"__esModule",{value:!0}),e);var Je={};we(Je,{default:()=>We,execRun:()=>_e});module.exports=De(Je);var B=require("path");var de=require("esbuild"),N=require("fs"),te=require("path"),ee=fe(require("vm")),Ue=fe(require("js-yaml"));function x(e,r="INFO"){let o=(l,u="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[u]}${l}\x1B[0m`,i={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[r],d=o(r,i);console.log(`[${d}] - ${e}`)}function ne(e,r){let o=e.findIndex(i=>i===r);if(o<0||e.length-1===o)return;let c=e[o+1];if(c.indexOf("--")!==0)return c}function W(e,r){try{let o=(0,N.readFileSync)(e,"utf-8"),c=(0,de.transformSync)(o,{format:"cjs",loader:"ts",platform:"node",target:"node18"}),i={module:{paths:[(0,te.join)(r,"node_modules")],exports:{default:void 0}},require,__dirname:r,global,__filename,process},d=new ee.default.Script(c.code);return ee.default.createContext(i),d.runInContext(i),i.module.exports.default||i.module.exports}catch(o){console.error(o),process.exit(0)}}function D(e){return!e||typeof e!="string"?e:e.split(/[\-_]/g).map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join("")}function me(e,r="_"){return!e||typeof e!="string"?e:e.replace(/([A-Z])([A-Z])(?=[a-z])/g,`$1${r}$2`).replace(/([a-z])([A-Z])/g,`$1${r}$2`).toLowerCase()}var oe=require("fs"),Te=require("child_process");var g=require("fs"),O=require("path");var Me=e=>{let r=[],o=new Map,c=new Map;function i(n){if(!c.has(n))return c.set(n,1),n;let t=c.get(n)+1;return c.set(n,t),`${n}${t}`}function d(n,t,a){let s=[];if(t.type==="array"){if(t.properties&&Object.keys(t.properties).length>0){let p=t.name||i(`${a||"Anonymous"}_${n}_Item`),y=l(p,t.properties,t.description);return y&&(o.set(p,y),s.push(p)),{type:`${p}[]`,generatedInterfaces:s}}return{type:"any[]",generatedInterfaces:s}}if(t.type==="object"&&t.properties){let p=t.name||i(`${a||"Anonymous"}_${n}`),y=l(p,t.properties,t.description);return y&&(o.set(p,y),s.push(p)),{type:p,generatedInterfaces:s}}return typeof t.type=="object"?{type:t.type.name,generatedInterfaces:s}:{type:t.type||"string",generatedInterfaces:s}}function l(n,t,a){let s=[];return a&&s.push(`// ${a}`),Object.entries(t).forEach(([p,y])=>{let h=d(p,y,n),T=y.description?` // ${y.description}`:"",C=` ${p}${y.required===!1?"?":""}: ${h.type};`;s.push(T?`${T}
2
+ ${C}`:C)}),s.length===0?`interface ${n} {}`:`interface ${n} {
3
3
  ${s.join(`
4
4
  `)}
5
5
  }`}function u(n){if(n.type!==void 0){let s=[];return n.description&&s.push(`// ${n.description}`),s.push(`type ${n.name} = ${n.type};`),s.join(`
6
- `)}Object.entries(n.properties||{}).forEach(([s,p])=>{d(s,p,n.name)});let t="";if(n.genericity)if(typeof n.genericity=="string"){let s=m(n);s?t=` extends ${n.genericity}<${s}>`:t=` extends ${n.genericity}`}else{let{name:s,typeParams:p}=n.genericity;t=` extends ${s}<${p.join(", ")}>`}else n.extends&&(Array.isArray(n.extends)?t=` extends ${n.extends.join(", ")}`:t=` extends ${n.extends}`);if(n.genericity)return`interface ${n.name}${t} {}`;let a=[];return Object.entries(n.properties||{}).forEach(([s,p])=>{let y=d(s,p,n.name),h=p.description?` // ${p.description}`:"",O=` ${s}${p.required===!1?"?":""}: ${y.type};`;a.push(h?`${h}
7
- ${O}`:O)}),`interface ${n.name}${t} {
6
+ `)}Object.entries(n.properties||{}).forEach(([s,p])=>{d(s,p,n.name)});let t="";if(n.genericity)if(typeof n.genericity=="string"){let s=m(n);s?t=` extends ${n.genericity}<${s}>`:t=` extends ${n.genericity}`}else{let{name:s,typeParams:p}=n.genericity;t=` extends ${s}<${p.join(", ")}>`}else n.extends&&(Array.isArray(n.extends)?t=` extends ${n.extends.join(", ")}`:t=` extends ${n.extends}`);if(n.genericity)return`interface ${n.name}${t} {}`;let a=[];return Object.entries(n.properties||{}).forEach(([s,p])=>{let y=d(s,p,n.name),h=p.description?` // ${p.description}`:"",T=` ${s}${p.required===!1?"?":""}: ${y.type};`;a.push(h?`${h}
7
+ ${T}`:T)}),`interface ${n.name}${t} {
8
8
  ${a.join(`
9
9
  `)}
10
10
  }`}function m(n){let t=n.properties?.list;if(t&&t.type==="array"&&t.name)return t.name;for(let[a,s]of Object.entries(n.properties||{}))if(s.type==="array"&&s.name)return s.name;return null}let E=u(e);return o.forEach(n=>{r.push(n)}),r.push(E),r.join(`
11
11
 
12
- `)},ne=ve;var Me=(e,r,o,c="@")=>{let i=(0,b.join)(r,o,"handler"),d=(0,b.join)(r,o,"logic"),l=(0,b.join)(r,o,"types");!(0,g.existsSync)(i)&&(0,g.mkdirSync)(i,{recursive:!0}),!(0,g.existsSync)(d)&&(0,g.mkdirSync)(d,{recursive:!0}),!(0,g.existsSync)(l)&&(0,g.mkdirSync)(l,{recursive:!0});let m=Object.assign({},{genDir:"nserve-config",routerDir:"router",modelDir:"model"},e),{genDir:E,routerDir:n,middleware:t}=m,a=(0,b.join)(r,E),s=(0,b.join)(a,n||"");if(!(0,g.existsSync)(s)){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u5B58\u5728::",s);return}if(!(0,g.statSync)(s).isDirectory()){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u662F\u76EE\u5F55");return}let y=(0,g.readdirSync)(s).filter(N=>N.endsWith(".ts")||N.endsWith(".js"));if(y.length===0){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u76EE\u5F55\u4E0B\u6CA1\u6709\u63CF\u8FF0\u751F\u6210\u6587\u4EF6");return}let h=[],O=[];y.forEach(N=>{let oe=F((0,b.join)(s,N),__dirname);if(!oe)return;let x=oe,se=N.replace(".ts",".handler"),ie=P(N.replace(".ts",""))+"Server",be=(0,b.join)(i,[se,".ts"].join("")),Ie=[c,"handler",se].join("/");h.push(`import ${ie} from '${Ie}'`),O.push(ie);let k=[],ce=[],K=(0,b.join)(d,x.handler),W=(0,b.join)(l,x.handler);!(0,g.existsSync)(K)&&(0,g.mkdirSync)(K,{recursive:!0}),!(0,g.existsSync)(W)&&(0,g.mkdirSync)(W,{recursive:!0});let ae=["ErrorResponse","SuccessResponse"],J=["import type { Request, Response } from 'express'"],G={},M={};t&&Object.keys(t).forEach(f=>{let{libName:T,funcName:_}=t[f],j=_?`{${_} as ${f}}`:f;G[f]=`import ${j} from '${T}'`}),x.service?.forEach(f=>{let T=ge(f.handler),_=[];if(f.responseDataType&&_.push(ne(f.responseDataType)),f.requestDataType&&_.push(ne(f.requestDataType)),_.length>0){let L=(0,b.join)(W,`${T}.types.d.ts`);(0,g.writeFileSync)(L,_.join(`
13
- `),"utf-8")}let j=f.method?.toLowerCase()||"get",H=P(f.handler),w=[];if(f.middleware&&m.middleware){let L=Array.isArray(f.middleware)?f.middleware:[f.middleware];if(!L.every(R=>{let I=typeof R=="string"?R:R.name;return!!G[I]}))throw new Error(`[ERROR] \u8DEF\u7531\u914D\u7F6E\u4E2D\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u4E2D\u95F4\u4EF6::${L}`);let B=[];L.forEach(R=>{let I=typeof R=="string"?R:R.name;M[I]=G[I];let pe=(typeof R=="string"?void 0:Array.isArray(R.value)?R.value:[R.value])?.map(z=>typeof z=="string"?`'${z}'`:z),Se=pe?`${I}(${pe.join(",")})`:I;B.push(Se)}),w.push(...B)}let X=[c,"logic",x.handler,T].join("/");k.push(`import ${H} from '${X}.logic'`),ce.push(`Router.${j}('${f.path}',${w.join(",")}${w.length>0?",":""}${H})`),f.docRemark&&J.concat(`// ${f.docRemark}`);let D=[];if(f.requestDataType&&f.requestDataType.properties){let L=f.requestDataType,U=L.properties,B=Object.keys(U).reduce((R,I)=>{let ue=typeof U[I].type=="string"?U[I].type:"object";return R[I]={required:U[I].required===void 0||U[I].required===!0,type:ue},R},{});D.push(`const data = ${f.method==="GET"?"req.query":"req.body"} as ${L.name}`,`CheckFieldRequired(data, ${JSON.stringify(B)})`),ae.push("CheckFieldRequired")}J.push(`import { ${ae.join(",")} } from '@aicblock/nserve/lib/tools'`);let $e=J.concat(`
12
+ `)},re=Me;var ve=(e,r,o,c="@")=>{let i=(0,O.join)(r,o,"handler"),d=(0,O.join)(r,o,"logic"),l=(0,O.join)(r,o,"types");!(0,g.existsSync)(i)&&(0,g.mkdirSync)(i,{recursive:!0}),!(0,g.existsSync)(d)&&(0,g.mkdirSync)(d,{recursive:!0}),!(0,g.existsSync)(l)&&(0,g.mkdirSync)(l,{recursive:!0});let m=Object.assign({},{genDir:"nserve-config",routerDir:"router",modelDir:"model"},e),{genDir:E,routerDir:n,middleware:t}=m,a=(0,O.join)(r,E),s=(0,O.join)(a,n||"");if(!(0,g.existsSync)(s)){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u5B58\u5728::",s);return}if(!(0,g.statSync)(s).isDirectory()){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u662F\u76EE\u5F55");return}let y=(0,g.readdirSync)(s).filter(A=>A.endsWith(".ts")||A.endsWith(".js"));if(y.length===0){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u76EE\u5F55\u4E0B\u6CA1\u6709\u63CF\u8FF0\u751F\u6210\u6587\u4EF6");return}let h=[],T=[];y.forEach(A=>{let F=W((0,O.join)(s,A),__dirname);if(!F)return;let b=F,M=A.replace(".ts",".handler"),se=D(A.replace(".ts",""))+"Server",Oe=(0,O.join)(i,[M,".ts"].join("")),be=[c,"handler",M].join("/");h.push(`import ${se} from '${be}'`),T.push(se);let Q=[],ie=[],z=(0,O.join)(d,b.handler),H=(0,O.join)(l,b.handler);!(0,g.existsSync)(z)&&(0,g.mkdirSync)(z,{recursive:!0}),!(0,g.existsSync)(H)&&(0,g.mkdirSync)(H,{recursive:!0});let Y={},v={};t&&Object.keys(t).forEach(f=>{let{libName:_,funcName:I}=t[f],L=I?`{${I} as ${f}}`:f;Y[f]=`import ${L} from '${_}'`}),b.service?.forEach(f=>{let _=["import type { Request, Response } from 'express'"],I=["ErrorResponse","SuccessResponse"],L=me(f.handler,"-"),P=[];if(f.responseDataType&&P.push(re(f.responseDataType)),f.requestDataType&&P.push(re(f.requestDataType)),P.length>0){let j=(0,O.join)(H,`${L}.types.d.ts`);(0,g.writeFileSync)(j,P.join(`
13
+ `),"utf-8")}let V=f.method?.toLowerCase()||"get",k=D(f.handler),w=[];if(f.middleware&&m.middleware){let j=Array.isArray(f.middleware)?f.middleware:[f.middleware];if(!j.every(R=>{let S=typeof R=="string"?R:R.name;return!!Y[S]}))throw new Error(`[ERROR] \u8DEF\u7531\u914D\u7F6E\u4E2D\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u4E2D\u95F4\u4EF6::${j}`);let q=[];j.forEach(R=>{let S=typeof R=="string"?R:R.name;v[S]=Y[S];let ue=(typeof R=="string"?void 0:Array.isArray(R.value)?R.value:[R.value])?.map(Z=>typeof Z=="string"?`'${Z}'`:Z),Ne=ue?`${S}(${ue.join(",")})`:S;q.push(Ne)}),w.push(...q)}let Ie=[c,"logic",b.handler,L].join("/");Q.push(`import ${k} from '${Ie}.logic'`),ie.push(`Router.${V}('${f.path}',${w.join(",")}${w.length>0?",":""}${k})`),f.docRemark&&_.concat(`// ${f.docRemark}`);let ce=[];if(f.requestDataType&&f.requestDataType.properties){let j=f.requestDataType,G=j.properties,q=Object.keys(G).filter(R=>G[R].required!==!1).reduce((R,S)=>{let le=typeof G[S].type=="string"?G[S].type:"object";return R[S]={required:!0,type:le},R},{});Object.keys(q).length>0&&(ce.push(`const data = ${f.method==="GET"?"req.query":"req.body"} as ${j.name}`,`CheckFieldRequired(data, ${JSON.stringify(q)})`),I.push("CheckFieldRequired"))}_.push(`import { ${I.join(",")} } from '@aicblock/nserve/lib/tools'`);let Se=_.concat(`
14
14
  ${f.docRemark?`// ${f.docRemark}`:""}
15
15
  export async function ServiceLogic(req: Request, res: Response) {
16
16
  try {
17
17
  // todo: \u63A5\u53E3\u670D\u52A1\u903B\u8F91\u5B9E\u73B0
18
- ${D.join(`
18
+ ${ce.join(`
19
19
  `)}
20
20
  SuccessResponse(res, true)
21
21
  } catch (error) {
@@ -23,9 +23,9 @@ ${a.join(`
23
23
  }
24
24
  }
25
25
  export default ServiceLogic
26
- `),le=(0,b.join)(K,`${T}.logic.ts`);!(0,g.existsSync)(le)&&(0,g.writeFileSync)(le,$e.join(`
27
- `),"utf-8")});let Q=[];x.middleware&&(Array.isArray(x.middleware)?x.middleware:[x.middleware]).forEach(T=>{let _=typeof T=="string"?T:T.name,j=G[_];if(!j||M[_])return;M[_]=j;let w=(typeof T=="string"?void 0:Array.isArray(T.value)?T.value:[T.value])?.map(D=>typeof D=="string"?`'${D}'`:D),X=w?`${_}(${w.join(",")})`:_;Q.push(X)}),Object.keys(M).forEach(f=>{k.push(M[f])});let Ce=["// Code generated by plugin. Templates Edited by aicblock cli. DO NOT EDIT.","import express from 'express'",...k,"const app = express()","const Router = express.Router()",Q.length>0?`Router.use(${Q.join(",")})`:"",`app.use('${x.prefix}', Router)`,...ce,"export default app"];(0,g.writeFileSync)(be,Ce.join(`
28
- `))});let A=(0,b.join)(i,"router.ts"),V=["// Code generated by plugin. Templates Edited by aicblock cli. DO NOT EDIT.",...h,"export default [",O.join(","),"]"];(0,g.writeFileSync)(A,V.join(`
29
- `)),console.log("[INFO] gen router file ",A)},ye=Me;var C=require("fs"),v=require("path");var Pe=new Set(["INT","BIGINT","BIT","DECIMAL","DOUBLE","FLOAT","INTEGER","MEDIUMINT","NUMERIC","REAL","SMALLINT","TINYINT"]);function qe(e){let c=e.replace(/\/\*[\s\S]*?\*\//g,"").trim().replace(/--.*$/gm,"").replace(/\s+/g," "),i=c.match(/CREATE TABLE [`"]?([\w_]+)[`"]?\s*\(/i);if(!i)throw new Error("\u65E0\u6CD5\u89E3\u6790\u8868\u540D");let l={tableName:i[1],columns:[]},u=c.indexOf("("),m=c.lastIndexOf(")");if(u===-1||m===-1||m<=u)throw new Error("\u65E0\u6CD5\u627E\u5230\u5217\u5B9A\u4E49\u90E8\u5206");let E=c.substring(u+1,m);if(!E.trim())return l;let n=Ge(E),t=new Set,a=new Set;return n.forEach(s=>{let p=s.trim();if(p.toUpperCase().startsWith("PRIMARY KEY")){let h=p.match(/PRIMARY KEY\s*\([`"]?([\w_]+)[`"]?\)/i);h&&t.add(h[1]);return}if(p.toUpperCase().startsWith("UNIQUE")){let h=p.match(/\([`"]?([\w_]+)[`"]?(?:\s+ASC|DESC)?\)/i);h&&a.add(h[1]);return}let y=Be(p);y&&l.columns.push(y)}),l.columns.forEach(s=>{t.has(s.name)&&(s.primaryKey=!0),a.has(s.name)&&(s.unique=!0)}),l}function Ge(e){let r=[],o="",c=!1,i=!1,d=0;for(let l=0;l<e.length;l++){let u=e[l],m=l+1<e.length?e[l+1]:"";u==="'"&&!i&&(c=!c),u==="-"&&m==="-"&&!c&&(i=!0),i&&(u===","||u===")")&&(i=!1),u==="("&&!c&&!i&&d++,u===")"&&!c&&!i&&d--,u===","&&!c&&!i&&d===0?(o.trim()&&r.push(o.trim()),o=""):o+=u}return o.trim()&&r.push(o.trim()),r}function Be(e){if(e.toUpperCase().startsWith("PRIMARY KEY")||e.toUpperCase().startsWith("UNIQUE")||e.toUpperCase().startsWith("KEY"))return null;let r=/^[`"]?([\w_]+)[`"]?\s+([a-zA-Z]+)(?:\s*\(\s*(\d+)\s*\))?(?:\s+(?:CHARACTER\s+SET|CHARSET)\s+\w+)?(?:\s+COLLATE\s+\w+)?(?:\s+(NOT\s+NULL|NULL))?(?:\s+UNIQUE)?(?:\s+AUTO_INCREMENT)?(?:\s+DEFAULT\s+([\w'"-]+))?(?:\s+COMMENT\s+'([^']*)')?/i,o=e.match(r);if(!o)return null;let[,c,i,d,l,u,m]=o,E=i.toUpperCase(),n={name:c,dataType:E};if(d&&(n.length=parseInt(d,10)),l&&l.toUpperCase()==="NOT NULL"&&(n.notNull=!0),e.toUpperCase().includes("UNIQUE")&&(n.unique=!0),e.toUpperCase().includes("AUTO_INCREMENT")&&(n.autoIncrement=!0),u!==void 0&&u!==""&&u!=="NULL"){let t=u.trim();if((t.startsWith("'")&&t.endsWith("'")&&t.length>1||t.startsWith('"')&&t.endsWith('"')&&t.length>1)&&(t=t.substring(1,t.length-1)),Pe.has(E)){let a=Number(t);!isNaN(a)&&t!==""?n.defaultValue=a:t!==""&&(n.defaultValue=t)}else t!==""&&(n.defaultValue=t)}return m&&(n.comments=m),n}var Ye=(e,r,o)=>{let c={genDir:"nserve-config",modelDir:"model"},{genDir:i,modelDir:d}=Object.assign({},c,e),l=(0,v.join)(r,i,d);if(!(0,C.existsSync)(l))return;let u=(0,C.readdirSync)(l).filter(s=>s.endsWith(".sql"));if(u.length===0)throw new Error(`The SQL model directory does not contain any SQL files::${l}`);let m=(0,v.join)(r,o,d);(0,C.existsSync)(m)||(0,C.mkdirSync)(m);let E=[],n=[];u.forEach(s=>{let p=(0,v.join)(l,s),y=(0,C.readFileSync)(p,"utf-8");try{let h=qe(y),O=h.tableName,A=(0,v.join)(m,`${O}.ts`),V=["import type { TableOption } from '@dpapejs/emysql'",`const table:TableOption = ${JSON.stringify(h,null,2)}`,"export default table"];(0,C.writeFileSync)(A,V.join(`
30
- `),"utf-8");let N=P(O);n.push(N),E.push(`import ${N} from './${O}'`),S(`The model file ${O} has been generated::${A}`)}catch{throw new Error(`The SQL file ${s} is not a valid CREATE TABLE statement::${p}`)}});let t=(0,v.join)(m,"index.ts"),a=[...E,`export default [${n.join(", ")}]`];(0,C.writeFileSync)(t,a.join(`
31
- `),"utf-8"),S(`The model index file has been generated::${t}`)},he=Ye;var Ee=require("child_process"),Re=require("path"),Fe=(e,r,o)=>{try{let c=r||process.cwd();ye(e||{},c,o||"src"),he(e||{},c,o||"src");let i={semi:!1,singleQuote:!0,trailingComma:"none"},{semi:d,singleQuote:l,trailingComma:u}=Object.assign({},i,e?.codePrettier||{}),m=["npx prettier"];d===!1&&m.push("--no-semi"),l===!0&&m.push("--single-quote"),u&&m.push(`--trailing-comma ${u}`);let E=["'logic/**/*.ts'","'handler/**/*.ts'","'model/**/*.ts'","'types/**/*.d.ts'"];m.push("--write",...E);let n=m.join(" "),t=(0,Re.join)(c,o||"src");console.log("[INFO] execRunGen::",t),console.log("[INFO] cmd::",n),(0,Ee.spawnSync)(n,{cwd:t,stdio:"inherit",shell:!0}),S("[INFO] execRunGen","SUCCESS")}catch(c){S("execRunGen fial::","ERROR"),console.error(c)}},Oe=Fe;function Ve(e,r){S(`${r?`The [${r}] app has been `:""}Build DONE. [Build time:${Date.now()-e} ms]`,"SUCCESS")}function ke(e){S(e==="build"?"Build Fail.":"Serve process has exited.","ERROR")}function Ke(){let e=process.cwd(),r=te(process.argv,"--config"),o=(0,q.join)(e,"nserve.config.ts"),c=(0,q.join)(e,"nserve.config.js"),i=r?(0,q.join)(e,r):(0,re.existsSync)(o)?o:c;if(!(0,re.existsSync)(i))throw Error(`The configuration file does not exist. [${i}]`);return i}function _e(e){try{let o=Ke(),c=process.cwd(),i=e,d=te(process.argv,"--mode"),l=JSON.stringify(process.argv),u={AICBLOCK_NSERVE_RUN_CWD:c,AICBLOCK_NSERVE_RUN_CONFIG_PATH:o,AICBLOCK_NSERVE_RUN_MODE:i,AICBLOCK_NSERVE_ENV_MODE:d,AICBLOCK_NSERVE_RUN_ARGV:l};if(Object.keys(u).forEach(a=>{let s=u[a];s!==void 0&&(process.env[a]=s)}),e==="gen"){let{generateConfig:a,sourceDir:s}=F(o,process.cwd());Oe(a||{},c,s||"src");return}let m=Date.now();var r=void 0;let E=process.platform==="win32"?"node.cmd":"node",t=(0,Te.spawn)(E,["./lib/core/run.js","--cmd"],{cwd:(0,q.join)(__dirname,"../"),stdio:e==="build"?"inherit":"pipe",env:Object.assign({},process.env,u)});t.stdout?.on("data",a=>{r&&r.stop(),console.log(a.toString("utf-8"))}),t.stdout?.on("error",a=>{r&&r.stop(),console.log(a.toString())}),t.stderr?.on("data",a=>{r&&r.stop(),console.log(a.toString("utf-8"))}),t.on("exit",a=>{r&&r.stop(),a===0&&e==="build"&&Ve(m,d),a!==0&&ke(e)})}catch(o){S("execRun fial::","ERROR"),console.error(o)}}var We=_e;0&&(module.exports={execRun});
26
+ `),ae=(0,O.join)(z,`${L}.logic.ts`);!(0,g.existsSync)(ae)&&(0,g.writeFileSync)(ae,Se.join(`
27
+ `),"utf-8")});let X=[];b.middleware&&(Array.isArray(b.middleware)?b.middleware:[b.middleware]).forEach(_=>{let I=typeof _=="string"?_:_.name,L=Y[I];if(!L||v[I])return;v[I]=L;let V=(typeof _=="string"?void 0:Array.isArray(_.value)?_.value:[_.value])?.map(w=>typeof w=="string"?`'${w}'`:w),k=V?`${I}(${V.join(",")})`:I;X.push(k)}),Object.keys(v).forEach(f=>{Q.push(v[f])});let $e=["// Code generated by plugin. Templates Edited by aicblock cli. DO NOT EDIT.","import express from 'express'",...Q,"const app = express()","const Router = express.Router()",X.length>0?`Router.use(${X.join(",")})`:"",`app.use('${b.prefix}', Router)`,...ie,"export default app"];(0,g.writeFileSync)(Oe,$e.join(`
28
+ `))});let C=(0,O.join)(i,"router.ts"),J=["// Code generated by plugin. Templates Edited by aicblock cli. DO NOT EDIT.",...h,"export default [",T.join(","),"]"];(0,g.writeFileSync)(C,J.join(`
29
+ `)),console.log("[INFO] gen router file ",C)},ge=ve;var $=require("fs"),U=require("path"),Pe=new Set(["INT","BIGINT","BIT","DECIMAL","DOUBLE","FLOAT","INTEGER","MEDIUMINT","NUMERIC","REAL","SMALLINT","TINYINT"]);function Ge(e){let c=e.replace(/\/\*[\s\S]*?\*\//g,"").trim().replace(/--.*$/gm,"").replace(/\s+/g," "),i=c.match(/CREATE TABLE [`"]?([\w_]+)[`"]?\s*\(/i);if(!i)throw new Error("\u65E0\u6CD5\u89E3\u6790\u8868\u540D");let l={tableName:i[1],columns:[]},u=c.indexOf("("),m=c.lastIndexOf(")");if(u===-1||m===-1||m<=u)throw new Error("\u65E0\u6CD5\u627E\u5230\u5217\u5B9A\u4E49\u90E8\u5206");let E=c.substring(u+1,m);if(!E.trim())return l;let n=qe(E),t=new Set,a=new Set;return n.forEach(s=>{let p=s.trim();if(p.toUpperCase().startsWith("PRIMARY KEY")){let h=p.match(/PRIMARY KEY\s*\([`"]?([\w_]+)[`"]?\)/i);h&&t.add(h[1]);return}if(p.toUpperCase().startsWith("UNIQUE")){let h=p.match(/\([`"]?([\w_]+)[`"]?(?:\s+ASC|DESC)?\)/i);h&&a.add(h[1]);return}let y=Be(p);y&&l.columns.push(y)}),l.columns.forEach(s=>{t.has(s.name)&&(s.primaryKey=!0),a.has(s.name)&&(s.unique=!0)}),l}function qe(e){let r=[],o="",c=!1,i=!1,d=0;for(let l=0;l<e.length;l++){let u=e[l],m=l+1<e.length?e[l+1]:"";u==="'"&&!i&&(c=!c),u==="-"&&m==="-"&&!c&&(i=!0),i&&(u===","||u===")")&&(i=!1),u==="("&&!c&&!i&&d++,u===")"&&!c&&!i&&d--,u===","&&!c&&!i&&d===0?(o.trim()&&r.push(o.trim()),o=""):o+=u}return o.trim()&&r.push(o.trim()),r}function Be(e){if(e.toUpperCase().startsWith("PRIMARY KEY")||e.toUpperCase().startsWith("UNIQUE")||e.toUpperCase().startsWith("KEY"))return null;let r=/^[`"]?([\w_]+)[`"]?\s+([a-zA-Z]+)(?:\s*\(\s*(\d+)\s*\))?(?:\s+(?:CHARACTER\s+SET|CHARSET)\s+\w+)?(?:\s+COLLATE\s+\w+)?(?:\s+(NOT\s+NULL|NULL))?(?:\s+UNIQUE)?(?:\s+AUTO_INCREMENT)?(?:\s+DEFAULT\s+([\w'"-]+))?(?:\s+COMMENT\s+'([^']*)')?/i,o=e.match(r);if(!o)return null;let[,c,i,d,l,u,m]=o,E=i.toUpperCase(),n={name:c,dataType:E};if(d&&(n.length=parseInt(d,10)),l&&l.toUpperCase()==="NOT NULL"&&(n.notNull=!0),e.toUpperCase().includes("UNIQUE")&&(n.unique=!0),e.toUpperCase().includes("AUTO_INCREMENT")&&(n.autoIncrement=!0),u!==void 0&&u!==""&&u!=="NULL"){let t=u.trim();if((t.startsWith("'")&&t.endsWith("'")&&t.length>1||t.startsWith('"')&&t.endsWith('"')&&t.length>1)&&(t=t.substring(1,t.length-1)),Pe.has(E)){let a=Number(t);!isNaN(a)&&t!==""?n.defaultValue=a:t!==""&&(n.defaultValue=t)}else t!==""&&(n.defaultValue=t)}return m&&(n.comments=m),n}var Fe=(e,r,o)=>{let c={genDir:"nserve-config",modelDir:"model"},{genDir:i,modelDir:d}=Object.assign({},c,e),l=(0,U.join)(r,i,d);if(!(0,$.existsSync)(l))return;let u=(0,$.readdirSync)(l).filter(s=>s.endsWith(".sql"));if(u.length===0)throw new Error(`The SQL model directory does not contain any SQL files::${l}`);let m=(0,U.join)(r,o,d);(0,$.existsSync)(m)||(0,$.mkdirSync)(m);let E=[],n=[];u.forEach(s=>{let p=(0,U.join)(l,s),y=(0,$.readFileSync)(p,"utf-8");try{let h=Ge(y),T=h.tableName,C=(0,U.join)(m,`${T}.ts`),J=h.columns.map(M=>`${D(M.name)} = '${M.name}'`),A=[h.tableName,"_Field"].join(""),F=["import { DefineTable } from '@aicblock/emysql'",`const table = DefineTable(${JSON.stringify(h,null,2)})`,`export enum ${D(A)} { ${J.join(", ")}}`,"export default table"];(0,$.writeFileSync)(C,F.join(`
30
+ `),"utf-8");let b=D(T);n.push(b),E.push(`import ${b} from './${T}'`),x(`The model file ${T} has been generated::${C}`)}catch{throw new Error(`The SQL file ${s} is not a valid CREATE TABLE statement::${p}`)}});let t=(0,U.join)(m,"index.ts"),a=[...E,`export default [${n.join(", ")}]`];(0,$.writeFileSync)(t,a.join(`
31
+ `),"utf-8"),x(`The model index file has been generated::${t}`)},ye=Fe;var he=require("child_process"),Ee=require("path"),Ye=(e,r,o)=>{try{let c=r||process.cwd();ge(e||{},c,o||"src"),ye(e||{},c,o||"src");let i={semi:!1,singleQuote:!0,trailingComma:"none"},{semi:d,singleQuote:l,trailingComma:u}=Object.assign({},i,e?.codePrettier||{}),m=["npx prettier"];d===!1&&m.push("--no-semi"),l===!0&&m.push("--single-quote"),u&&m.push(`--trailing-comma ${u}`);let E=["'logic/**/*.ts'","'handler/**/*.ts'","'model/**/*.ts'","'types/**/*.d.ts'"];m.push("--write",...E);let n=m.join(" "),t=(0,Ee.join)(c,o||"src");console.log("[INFO] execRunGen::",t),console.log("[INFO] cmd::",n),(0,he.spawnSync)(n,{cwd:t,stdio:"inherit",shell:!0}),x("[INFO] execRunGen","SUCCESS")}catch(c){x("execRunGen fial::","ERROR"),console.error(c)}},Re=Ye;function Ve(e,r){x(`${r?`The [${r}] app has been `:""}Build DONE. [Build time:${Date.now()-e} ms]`,"SUCCESS")}function ke(e){x(e==="build"?"Build Fail.":"Serve process has exited.","ERROR")}function Ke(){let e=process.cwd(),r=ne(process.argv,"--config"),o=(0,B.join)(e,"nserve.config.ts"),c=(0,B.join)(e,"nserve.config.js"),i=r?(0,B.join)(e,r):(0,oe.existsSync)(o)?o:c;if(!(0,oe.existsSync)(i))throw Error(`The configuration file does not exist. [${i}]`);return i}function _e(e){try{let o=Ke(),c=process.cwd(),i=e,d=ne(process.argv,"--mode"),l=JSON.stringify(process.argv),u={AICBLOCK_NSERVE_RUN_CWD:c,AICBLOCK_NSERVE_RUN_CONFIG_PATH:o,AICBLOCK_NSERVE_RUN_MODE:i,AICBLOCK_NSERVE_ENV_MODE:d,AICBLOCK_NSERVE_RUN_ARGV:l};if(Object.keys(u).forEach(a=>{let s=u[a];s!==void 0&&(process.env[a]=s)}),e==="gen"){let{generateConfig:a,sourceDir:s}=W(o,process.cwd());Re(a||{},c,s||"src");return}let m=Date.now();var r=void 0;let E=process.platform==="win32"?"node.cmd":"node",t=(0,Te.spawn)(E,["./lib/core/run.js","--cmd"],{cwd:(0,B.join)(__dirname,"../"),stdio:e==="build"?"inherit":"pipe",env:Object.assign({},process.env,u)});t.stdout?.on("data",a=>{r&&r.stop(),console.log(a.toString("utf-8"))}),t.stdout?.on("error",a=>{r&&r.stop(),console.log(a.toString())}),t.stderr?.on("data",a=>{r&&r.stop(),console.log(a.toString("utf-8"))}),t.on("exit",a=>{r&&r.stop(),a===0&&e==="build"&&Ve(m,d),a!==0&&ke(e)})}catch(o){x("execRun fial::","ERROR"),console.error(o)}}var We=_e;0&&(module.exports={execRun});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aicblock/nserve",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "🛠️ Description NodeJS Server-side development CLI",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -46,7 +46,7 @@
46
46
  }
47
47
  },
48
48
  "dependencies": {
49
- "@dpapejs/emysql": "1.2.7",
49
+ "@aicblock/emysql": "^1.3.0",
50
50
  "commander": "14.0.2",
51
51
  "esbuild": "0.27.2",
52
52
  "express": "5.2.1",