@aicblock/nserve 1.0.2 → 1.0.4
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 +1 -1
- package/lib/core/run.js +3 -1
- package/lib/index.d.ts +6 -1
- package/lib/index.js +3 -3
- package/lib/runtime.js +17 -17
- package/lib/tools/index.js +1 -1
- package/package.json +2 -2
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
|
|
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.4");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,3 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var Y=Object.create;var N=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var H=(e,t)=>()=>(e&&(t=e(e=0)),t);var Q=(e,t)=>{for(var r in t)N(e,r,{get:t[r],enumerable:!0})},F=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of q(t))!Z.call(e,n)&&n!==r&&N(e,n,{get:()=>t[n],enumerable:!(o=M(t,n))||o.enumerable});return e};var D=(e,t,r)=>(r=e!=null?Y(z(e)):{},F(t||!e||!e.__esModule?N(r,"default",{value:e,enumerable:!0}):r,e)),X=e=>F(N({},"__esModule",{value:!0}),e);var W={};Q(W,{GetVmRunScript:()=>L,Spin:()=>T,camelToPascal:()=>oe,clog:()=>y,getAppEnvList:()=>re,getArgvsParamsValue:()=>K,isInvalid:()=>k,jsonToYamlFile:()=>j,merge:()=>ee,parseEnv:()=>G,pascalToSnake:()=>se,rmDir:()=>$});function y(e,t="INFO"){let r=(s,a="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[a]}${s}\x1B[0m`,n={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[t],i=r(t,n);console.log(`[${i}] - ${e}`)}function $(e){let t=(r,o)=>{try{let n=(0,p.readdirSync)(r);if(n.length===0){(0,p.rmdirSync)(r),o&&o();return}let i=n.length,s=0,a=m=>{m===i&&((0,p.rmdirSync)(r),o&&o())};n.forEach(m=>{let c=(0,E.join)(r,m);if((0,p.statSync)(c).isDirectory()){t(c,()=>{a(s+=1)});return}(0,p.unlinkSync)(c),a(s+=1)})}catch(n){o&&o(n)}};return new Promise((r,o)=>{if(!e||!(0,p.existsSync)(e)){r();return}if(!(0,p.statSync)(e).isDirectory()){o("The directory path to be deleted is not a directory path");return}t(e,n=>{n?o(n):r()})})}function ee(e,t){let r=(n,i)=>{if(Object.prototype.toString.call(n)!=="[object Object]"||Object.prototype.toString.call(i)!=="[object Object]")return console.warn("[STACK_LOG] AICBLOCK_UTIL: \u53C2\u6570\u9519\u8BEF"),{};let s={},a=Object.keys(n);return Object.keys(i).filter(c=>!a.includes(c)).forEach(c=>Object.assign(s,{[c]:i[c]})),Object.keys(n).forEach(c=>{let l=i[c],f=n[c];if(l!==void 0&&Object.prototype.toString.call(l)==="[object Object]"&&Object.prototype.toString.call(f)==="[object Object]"){Object.assign(s,{[c]:r(f,l)});return}Object.assign(s,{[c]:l!==void 0?l:f})}),s};return(Array.isArray(t)?t:[t]).reduce((n,i)=>r(n,i),e)}function K(e,t){let r=e.findIndex(n=>n===t);if(r<0||e.length-1===r)return;let o=e[r+1];if(o.indexOf("--")!==0)return o}function k(e){return e===void 0||e===""||e===null}function G(e){let t={};return e.split(/(\r\n)|[\r\n]/).filter(o=>!k(o)).forEach(o=>{let n=o.split("="),i=(n[0]||"").trim(),s=(n[1]||"").trim();i.split("")[0]!=="#"&&i!==""&&(t[i]=s)}),t}function te(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 ne(e,t="."){let r=e.trim().split(`
|
|
2
|
+
`),o={};return r.filter(n=>n.indexOf("YAML_CONFIG"+t)===0).forEach(n=>{if(!n.trim())return;let[i,s]=n.split("=");if(!i||s===void 0)return;let a=i.trim(),m=s.trim(),c=a.split(t),l=o;for(let f=0;f<c.length;f++){let d=c[f];f===c.length-1?l[d]=te(m):((!l[d]||typeof l[d]!="object")&&(l[d]={}),l=l[d])}}),o}function re(e,t){let r={},o={},n={},i=(0,E.join)(e,".env"),s=process.env.AICBLOCK_NSERVE_RUN_ARGV||"[]",a=K(JSON.parse(s),"--mode"),m=a!==void 0&&a||(t==="build"?"production":"development"),c=(0,E.join)(e,`.env.${m}`),l={},f=[i,c],d=(0,E.join)(e,".env.local");(0,p.existsSync)(d)&&f.push(d);let u=(0,E.join)(e,`.env.${m}.local`);(0,p.existsSync)(u)&&f.push(u);let g=[],R=O=>{if(!(0,p.existsSync)(O))return;let x=(0,p.readFileSync)(O,"utf-8"),S=G(x);g.push(x),Object.assign(l,S)};f.forEach(R);let w=["YAML_CONFIG."];return Object.keys(l).forEach(O=>{if(w.some(C=>O.indexOf(C)===0))return;let x=l[O];if(O.indexOf("AICBLOCK_NSERVE_APP_")===0){r[O]=x;return}let S=t==="serve"?O.replace(/^(APPTEST_)/,""):O;o[S]=x}),g.join("").indexOf("YAML_CONFIG.")>=0&&Object.assign(n,ne(g.join(`
|
|
3
|
+
`))),{system:r,app:o,yamlConfig:n}}function L(e,t){try{let r=(0,p.readFileSync)(e,"utf-8"),o=(0,J.transformSync)(r,{format:"cjs",loader:"ts",platform:"node",target:"node18"}),n={module:{paths:[(0,E.join)(t,"node_modules")],exports:{default:void 0}},require,__dirname:t,global,__filename,process},i=new _.default.Script(o.code);return _.default.createContext(n),i.runInContext(n),n.module.exports.default||n.module.exports}catch(r){console.error(r),process.exit(0)}}async function j(e,t,r={}){let{createDir:o=!0,indent:n=2,noRefs:i=!0,lineWidth:s=80,skipInvalid:a=!1,quotingType:m='"',forceQuotes:c=!1,encoding:l="utf8",...f}=r;try{let d;if(typeof e=="string")try{d=JSON.parse(e)}catch(R){throw new Error(`\u65E0\u6548\u7684 JSON \u5B57\u7B26\u4E32: ${R instanceof Error?R.message:String(R)}`)}else if(typeof e=="object"&&e!==null)d=e;else throw new Error("jsonData \u5FC5\u987B\u662F\u6709\u6548\u7684 JSON \u5B57\u7B26\u4E32\u3001\u5BF9\u8C61\u6216\u6570\u7EC4");let u=V.default.dump(d,{indent:n,noRefs:i,skipInvalid:a,lineWidth:s,quotingType:m,forceQuotes:c,...f,styles:{"!!null":"canonical",...f.styles}});if(o){let R=(0,E.dirname)(t);try{(0,p.accessSync)(R)}catch{(0,p.mkdirSync)(R,{recursive:!0}),console.log(`\u5DF2\u521B\u5EFA\u76EE\u5F55: ${R}`)}}(0,p.writeFileSync)(t,u,{encoding:l});let g=Buffer.byteLength(u,l);return console.log(`YAML \u6587\u4EF6\u5DF2\u6210\u529F\u751F\u6210: ${t}`),console.log(`\u6587\u4EF6\u5927\u5C0F: ${g} \u5B57\u8282`),{content:u,filePath:t,fileSize:g}}catch(d){throw console.error("\u8F6C\u6362\u6216\u4FDD\u5B58\u5931\u8D25:",d instanceof Error?d.message:String(d)),d}}function oe(e){return!e||typeof e!="string"?e:e.split(/[\-_]/g).map(r=>r.charAt(0).toUpperCase()+r.slice(1)).join("")}function se(e,t="_"){return!e||typeof e!="string"?e:e.replace(/([A-Z])([A-Z])(?=[a-z])/g,`$1${t}$2`).replace(/([a-z])([A-Z])/g,`$1${t}$2`).toLowerCase()}var J,p,E,_,V,T,A=H(()=>{"use strict";J=require("esbuild"),p=require("fs"),E=require("path"),_=D(require("vm")),V=D(require("js-yaml"));T=class e{constructor(t=""){this.pos=0;this.spinner="|/-";if(!(this instanceof e))return new e(t);this.pos=0,this.placeholder=t||""}start(){return this.loop=setInterval(()=>{var t=`\r${this.spinner[this.pos||0]} ${this.placeholder}`;process.stdout.write(t),this.pos=++this.pos%this.spinner.length},100),this}clearLine(){!process||!process.stdout||typeof process.stdout.clearLine!="function"||process.stdout.clearLine(0)}stop(){return this.clearLine(),process.stdout.write("\r"),this.loop&&clearInterval(this.loop),this}update(t){return this.clearLine(),this.placeholder=t+" ",this}}});var v=require("esbuild");A();var h=require("path");var b=require("fs"),P=require("child_process");function ie(e,t){let r=Date.now(),o=()=>`${Date.now()-r}ms`;try{(0,v.build)(e).then(({errors:n})=>{if(n.length===0){t&&t(),y(`Compile successfully.[${o()}]`,"SUCCESS");return}y(JSON.stringify(n),"ERROR")})}catch(n){y(JSON.stringify(n),"ERROR")}}async function ce(e){return await(0,v.context)(e)}var le=e=>{let t=e.compilerOptions?.paths||{},r=Object.keys(t);return{name:"alias",setup(o){o.onLoad({filter:/\.ts$/},async n=>{let i=await b.promises.readFile(n.path,"utf8"),s="ts";if(r.length===0)return{contents:i,loader:s};let a=i;return r.forEach(c=>{let l=c.replace(/\*$/,""),f=new RegExp(`from[\\s]{1,}[\\'\\"]${l}((?!\\n[\\'\\"]).)*[\\'\\"]`,"g"),d=(t[c]&&t[c][0]).replace(/\*$/,"");a.replace(f,u=>`from '${u.replace("from","").replace(/['"]/g,"")}'`)}),{contents:a,loader:s}})}}};var ae=(e,t,r,o,n,i)=>{let s=null,a=!1,m=!1,c=()=>{let u=process.platform==="win32"?"node.cmd":"node";return s=(0,P.spawn)(u,[e],{stdio:"inherit",cwd:r}),s.on("exit",g=>{g!==0&&!a&&y(`Process exited with code ${g}`,"WARNING")}),s.pid},l=async()=>{if(a){m=!0;return}a=!0,y("Rebuilding...","INFO");try{let u=await o.rebuild();if(u.errors.length===0){if(n&&i){let{jsonToYamlFile:g}=(A(),X(W));await g(n,(0,h.join)(i,"config.yaml"))}y("Rebuild complete","SUCCESS"),s&&(s.kill("SIGTERM"),await new Promise(g=>{s.on("exit",()=>g()),setTimeout(()=>{s.kill("SIGKILL"),g()},3e3)})),c()}else y(`Rebuild failed: ${JSON.stringify(u.errors)}`,"ERROR")}catch(u){y(`Rebuild error: ${u}`,"ERROR")}a=!1,m&&(m=!1,l())},f,d=()=>{f&&clearTimeout(f),f=setTimeout(l,300)};c(),(0,b.watch)(t,{recursive:!0},(u,g)=>{g&&(g.endsWith(".ts")||g.endsWith(".js"))&&d()})},ue=()=>{try{let e=process.env.AICBLOCK_NSERVE_RUN_CWD,t=process.env.AICBLOCK_NSERVE_RUN_CONFIG_PATH,r=process.env.AICBLOCK_NSERVE_RUN_MODE,o=L(t,process.env.AICBLOCK_NSERVE_RUN_CWD),{entry:n,testing:i,outputDir:s,sourceDir:a,plugins:m,external:c,yamlConfig:l}=o;if(!a||!(0,b.existsSync)((0,h.join)(e,a)))throw Error("[ERROR] The compilation directory is not configured or does not exist");let f=(0,h.join)(e,a,n);if((!n||typeof n!="string"||!(0,b.existsSync)(f))&&r==="serve")throw Error(`[ERROR] The run file does not exist. Please check the config:[${f}]`);let d=!i,u=(0,h.join)(e,s||"dist");r==="build"&&(0,b.existsSync)(u)&&$(u);let g=(0,h.join)(e,"tsconfig.json"),R=(0,b.readFileSync)(g,"utf-8"),w=JSON.parse(R),I={entryPoints:[f],minify:d,outdir:u,plugins:[le(w),...m||[]],bundle:!0,platform:"node",format:"cjs",external:c};if(r==="build"){ie(I,()=>{l&&j(l,(0,h.join)(u,"config.yaml"))});return}if(!n)return;let O=Date.now();y("Creating build context...","INFO"),ce(I).then(x=>{x.rebuild().then(S=>{if(S.errors.length===0){l&&j(l,(0,h.join)(u,"config.yaml")),y(`Initial build complete. [${Date.now()-O}ms]`,"SUCCESS");let C=(0,h.basename)(n),U=C.substring(0,C.length-3)+".js",B=(0,h.join)(u,U);ae(B,(0,h.join)(e,a||"src"),u,x,l,u)}else y(`Initial build failed: ${JSON.stringify(S.errors)}`,"ERROR")})})}catch(e){console.error("[ERROR_STACK]",e);let t=e?.message||"[FN::esbuild::exec]";y(t,"ERROR"),process.exit(0)}};ue();
|
package/lib/index.d.ts
CHANGED
|
@@ -147,9 +147,12 @@ type RouterMethod =
|
|
|
147
147
|
// 数据类型属性定义
|
|
148
148
|
type PropertyType = 'string' | 'number' | 'boolean' | 'object' | 'array'
|
|
149
149
|
|
|
150
|
+
// 数据来源类型
|
|
151
|
+
type DataSourceType = 'body' | 'query' | 'params'
|
|
152
|
+
|
|
150
153
|
interface DataTypeProperty {
|
|
151
154
|
// 数据类型
|
|
152
|
-
type?: PropertyType | { type: 'custom'; name: string }
|
|
155
|
+
type?: PropertyType | { type: 'custom'; name: string } | { type: 'enum'; values: readonly (string | number)[] }
|
|
153
156
|
// 数据类型名称
|
|
154
157
|
name?: string
|
|
155
158
|
// 数据类型描述
|
|
@@ -180,6 +183,8 @@ interface DataTypeOption {
|
|
|
180
183
|
extends?: string | string[]
|
|
181
184
|
// 数据类型泛型定义
|
|
182
185
|
genericity?: string | GenericityParam
|
|
186
|
+
// 数据来源类型 (body/query/params)
|
|
187
|
+
source?: DataSourceType
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
// 路由选项定义
|
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
|
|
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
|
|
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:
|
|
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
|
|
2
|
-
${
|
|
1
|
+
"use strict";var Se=Object.create;var W=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,je=Object.prototype.hasOwnProperty;var we=(t,r)=>{for(var o in r)W(t,o,{get:r[o],enumerable:!0})},pe=(t,r,o,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Ae(r))!je.call(t,i)&&i!==o&&W(t,i,{get:()=>r[i],enumerable:!(c=Ce(r,i))||c.enumerable});return t};var fe=(t,r,o)=>(o=t!=null?Se(Le(t)):{},pe(r||!t||!t.__esModule?W(o,"default",{value:t,enumerable:!0}):o,t)),De=t=>pe(W({},"__esModule",{value:!0}),t);var Je={};we(Je,{default:()=>We,execRun:()=>_e});module.exports=De(Je);var V=require("path");var de=require("esbuild"),S=require("fs"),te=require("path"),ee=fe(require("vm")),Ue=fe(require("js-yaml"));function C(t,r="INFO"){let o=(l,p="green")=>`\x1B[${{green:"32m",red:"31m",blue:"34m",orange:"30m"}[p]}${l}\x1B[0m`,i={INFO:"blue",WARNING:"orange",ERROR:"red",SUCCESS:"green"}[r],m=o(r,i);console.log(`[${m}] - ${t}`)}function ne(t,r){let o=t.findIndex(i=>i===r);if(o<0||t.length-1===o)return;let c=t[o+1];if(c.indexOf("--")!==0)return c}function J(t,r){try{let o=(0,S.readFileSync)(t,"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},m=new ee.default.Script(c.code);return ee.default.createContext(i),m.runInContext(i),i.module.exports.default||i.module.exports}catch(o){console.error(o),process.exit(0)}}function U(t){return!t||typeof t!="string"?t:t.split(/[\-_]/g).map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join("")}function me(t,r="_"){return!t||typeof t!="string"?t:t.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"),Re=require("child_process");var h=require("fs"),O=require("path");var Me=t=>{let r=[],o=new Map,c=new Map;function i(n){if(!c.has(n))return c.set(n,1),n;let e=c.get(n)+1;return c.set(n,e),`${n}${e}`}function m(n,e,u){let s=[];if(e.type==="array"){if(e.properties&&Object.keys(e.properties).length>0){let y=`${u||"Anonymous"}_${n}_Item`,f=e.name,a=f||y;if(f&&o.has(f)){let I=o.get(f),w=l(f,e.properties,e.description);if(I!==w)a=i(f);else return{type:`${f}[]`,generatedInterfaces:s}}let E=l(a,e.properties,e.description);return E&&(o.set(a,E),s.push(a)),{type:`${a}[]`,generatedInterfaces:s}}return{type:"any[]",generatedInterfaces:s}}if(e.type==="object"&&e.properties){let y=`${u||"Anonymous"}_${n}`,f=e.name,a=f||y;if(f&&o.has(f)){let I=o.get(f),w=l(f,e.properties,e.description);if(I!==w)a=i(f);else return{type:f,generatedInterfaces:s}}let E=l(a,e.properties,e.description);return E&&(o.set(a,E),s.push(a)),{type:a,generatedInterfaces:s}}return typeof e.type=="object"&&e.type.type==="enum"?{type:e.type.values.map(a=>typeof a=="string"?`'${a}'`:a).join(" | "),generatedInterfaces:s}:typeof e.type=="object"?{type:e.type.name,generatedInterfaces:s}:{type:e.type||"string",generatedInterfaces:s}}function l(n,e,u){let s=[];return u&&s.push(`// ${u}`),Object.entries(e).forEach(([y,f])=>{let a=m(y,f,n),E=f.description?` // ${f.description}`:"",I=` ${y}${f.required===!1?"?":""}: ${a.type};`;s.push(E?`${E}
|
|
2
|
+
${I}`:I)}),s.length===0?`interface ${n} {}`:`interface ${n} {
|
|
3
3
|
${s.join(`
|
|
4
4
|
`)}
|
|
5
|
-
}`}function
|
|
6
|
-
`)}Object.entries(n.properties||{}).forEach(([s,
|
|
7
|
-
${
|
|
8
|
-
${
|
|
5
|
+
}`}function p(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,y])=>{m(s,y,n.name)});let e="";if(n.genericity)if(typeof n.genericity=="string"){let s=g(n);s?e=` extends ${n.genericity}<${s}>`:e=` extends ${n.genericity}`}else{let{name:s,typeParams:y}=n.genericity;e=` extends ${s}<${y.join(", ")}>`}else n.extends&&(Array.isArray(n.extends)?e=` extends ${n.extends.join(", ")}`:e=` extends ${n.extends}`);if(n.genericity)return`interface ${n.name}${e} {}`;let u=[];return Object.entries(n.properties||{}).forEach(([s,y])=>{let f=m(s,y,n.name),a=y.description?` // ${y.description}`:"",E=` ${s}${y.required===!1?"?":""}: ${f.type};`;u.push(a?`${a}
|
|
7
|
+
${E}`:E)}),`interface ${n.name}${e} {
|
|
8
|
+
${u.join(`
|
|
9
9
|
`)}
|
|
10
|
-
}`}function
|
|
10
|
+
}`}function g(n){let e=n.properties?.list;if(e&&e.type==="array"&&e.name)return e.name;for(let[u,s]of Object.entries(n.properties||{}))if(s.type==="array"&&s.name)return s.name;return null}let R=p(t);return o.forEach(n=>{r.push(n)}),r.push(R),r.join(`
|
|
11
11
|
|
|
12
|
-
`)},
|
|
13
|
-
`),"utf-8")}let
|
|
14
|
-
${
|
|
12
|
+
`)},re=Me;var ve=(t,r,o,c="@")=>{let i=(0,O.join)(r,o,"handler"),m=(0,O.join)(r,o,"logic"),l=(0,O.join)(r,o,"types");!(0,h.existsSync)(i)&&(0,h.mkdirSync)(i,{recursive:!0}),!(0,h.existsSync)(m)&&(0,h.mkdirSync)(m,{recursive:!0}),!(0,h.existsSync)(l)&&(0,h.mkdirSync)(l,{recursive:!0});let g=Object.assign({},{genDir:"nserve-config",routerDir:"router",modelDir:"model"},t),{genDir:R,routerDir:n,middleware:e}=g,u=(0,O.join)(r,R),s=(0,O.join)(u,n||"");if(!(0,h.existsSync)(s)){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u5B58\u5728::",s);return}if(!(0,h.statSync)(s).isDirectory()){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u4E0D\u662F\u76EE\u5F55");return}let f=(0,h.readdirSync)(s).filter(L=>L.endsWith(".ts")||L.endsWith(".js"));if(f.length===0){console.log("[ERROR] API\u63CF\u8FF0\u6587\u4EF6\u76EE\u5F55\u4E0B\u6CA1\u6709\u63CF\u8FF0\u751F\u6210\u6587\u4EF6");return}let a=[],E=[];f.forEach(L=>{let F=J((0,O.join)(s,L),__dirname);if(!F)return;let $=F,v=L.replace(".ts",".handler"),se=U(L.replace(".ts",""))+"Server",Oe=(0,O.join)(i,[v,".ts"].join("")),Ie=[c,"handler",v].join("/");a.push(`import ${se} from '${Ie}'`),E.push(se);let Q=[],ie=[],z=(0,O.join)(m,$.handler),H=(0,O.join)(l,$.handler);!(0,h.existsSync)(z)&&(0,h.mkdirSync)(z,{recursive:!0}),!(0,h.existsSync)(H)&&(0,h.mkdirSync)(H,{recursive:!0});let Y={},P={};e&&Object.keys(e).forEach(d=>{let{libName:_,funcName:N}=e[d],j=N?`{${N} as ${d}}`:d;Y[d]=`import ${j} from '${_}'`}),$.service?.forEach(d=>{let _=["import type { Request, Response } from 'express'"],N=["ErrorResponse","SuccessResponse"],j=me(d.handler,"-"),G=[];if(d.responseDataType&&G.push(re(d.responseDataType)),d.requestDataType&&G.push(re(d.requestDataType)),G.length>0){let A=(0,O.join)(H,`${j}.types.d.ts`);(0,h.writeFileSync)(A,G.join(`
|
|
13
|
+
`),"utf-8")}let k=d.method?.toLowerCase()||"get",K=U(d.handler),D=[];if(d.middleware&&g.middleware){let A=Array.isArray(d.middleware)?d.middleware:[d.middleware];if(!A.every(T=>{let x=typeof T=="string"?T:T.name;return!!Y[x]}))throw new Error(`[ERROR] \u8DEF\u7531\u914D\u7F6E\u4E2D\u4F7F\u7528\u4E86\u4E0D\u5B58\u5728\u7684\u4E2D\u95F4\u4EF6::${A}`);let B=[];A.forEach(T=>{let x=typeof T=="string"?T:T.name;P[x]=Y[x];let ue=(typeof T=="string"?void 0:Array.isArray(T.value)?T.value:[T.value])?.map(Z=>typeof Z=="string"?`'${Z}'`:Z),xe=ue?`${x}(${ue.join(",")})`:x;B.push(xe)}),D.push(...B)}let be=[c,"logic",$.handler,j].join("/");Q.push(`import ${K} from '${be}.logic'`),ie.push(`Router.${k}('${d.path}',${D.join(",")}${D.length>0?",":""}${K})`),d.docRemark&&_.concat(`// ${d.docRemark}`);let ce=[];if(d.requestDataType&&d.requestDataType.properties){let A=d.requestDataType,q=A.properties,B=Object.keys(q).filter(T=>q[T].required!==!1).reduce((T,x)=>{let le=typeof q[x].type=="string"?q[x].type:"object";return T[x]={required:!0,type:le},T},{});if(Object.keys(B).length>0){let T=A.source||(d.method==="GET"?"query":"body");ce.push(`const data = req.${T} as ${A.name}`,`CheckFieldRequired(data, ${JSON.stringify(B)})`),N.push("CheckFieldRequired")}}_.push(`import { ${N.join(",")} } from '@aicblock/nserve/lib/tools'`);let Ne=_.concat(`
|
|
14
|
+
${d.docRemark?`// ${d.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
|
-
${
|
|
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
|
-
`),
|
|
27
|
-
`),"utf-8")});let
|
|
28
|
-
`))});let
|
|
29
|
-
`)),console.log("[INFO] gen router file ",
|
|
30
|
-
`),"utf-8");let
|
|
31
|
-
`),"utf-8"),
|
|
26
|
+
`),ae=(0,O.join)(z,`${j}.logic.ts`);!(0,h.existsSync)(ae)&&(0,h.writeFileSync)(ae,Ne.join(`
|
|
27
|
+
`),"utf-8")});let X=[];$.middleware&&(Array.isArray($.middleware)?$.middleware:[$.middleware]).forEach(_=>{let N=typeof _=="string"?_:_.name,j=Y[N];if(!j||P[N])return;P[N]=j;let k=(typeof _=="string"?void 0:Array.isArray(_.value)?_.value:[_.value])?.map(D=>typeof D=="string"?`'${D}'`:D),K=k?`${N}(${k.join(",")})`:N;X.push(K)}),Object.keys(P).forEach(d=>{Q.push(P[d])});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('${$.prefix}', Router)`,...ie,"export default app"];(0,h.writeFileSync)(Oe,$e.join(`
|
|
28
|
+
`))});let I=(0,O.join)(i,"router.ts"),w=["// Code generated by plugin. Templates Edited by aicblock cli. DO NOT EDIT.",...a,"export default [",E.join(","),"]"];(0,h.writeFileSync)(I,w.join(`
|
|
29
|
+
`)),console.log("[INFO] gen router file ",I)},ge=ve;var b=require("fs"),M=require("path"),Pe=new Set(["INT","BIGINT","BIT","DECIMAL","DOUBLE","FLOAT","INTEGER","MEDIUMINT","NUMERIC","REAL","SMALLINT","TINYINT"]);function Ge(t){let c=t.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:[]},p=c.indexOf("("),g=c.lastIndexOf(")");if(p===-1||g===-1||g<=p)throw new Error("\u65E0\u6CD5\u627E\u5230\u5217\u5B9A\u4E49\u90E8\u5206");let R=c.substring(p+1,g);if(!R.trim())return l;let n=qe(R),e=new Set,u=new Set;return n.forEach(s=>{let y=s.trim();if(y.toUpperCase().startsWith("PRIMARY KEY")){let a=y.match(/PRIMARY KEY\s*\([`"]?([\w_]+)[`"]?\)/i);a&&e.add(a[1]);return}if(y.toUpperCase().startsWith("UNIQUE")){let a=y.match(/\([`"]?([\w_]+)[`"]?(?:\s+ASC|DESC)?\)/i);a&&u.add(a[1]);return}let f=Be(y);f&&l.columns.push(f)}),l.columns.forEach(s=>{e.has(s.name)&&(s.primaryKey=!0),u.has(s.name)&&(s.unique=!0)}),l}function qe(t){let r=[],o="",c=!1,i=!1,m=0;for(let l=0;l<t.length;l++){let p=t[l],g=l+1<t.length?t[l+1]:"";p==="'"&&!i&&(c=!c),p==="-"&&g==="-"&&!c&&(i=!0),i&&(p===","||p===")")&&(i=!1),p==="("&&!c&&!i&&m++,p===")"&&!c&&!i&&m--,p===","&&!c&&!i&&m===0?(o.trim()&&r.push(o.trim()),o=""):o+=p}return o.trim()&&r.push(o.trim()),r}function Be(t){if(t.toUpperCase().startsWith("PRIMARY KEY")||t.toUpperCase().startsWith("UNIQUE")||t.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=t.match(r);if(!o)return null;let[,c,i,m,l,p,g]=o,R=i.toUpperCase(),n={name:c,dataType:R};if(m&&(n.length=parseInt(m,10)),l&&l.toUpperCase()==="NOT NULL"&&(n.notNull=!0),t.toUpperCase().includes("UNIQUE")&&(n.unique=!0),t.toUpperCase().includes("AUTO_INCREMENT")&&(n.autoIncrement=!0),p!==void 0&&p!==""&&p!=="NULL"){let e=p.trim();if((e.startsWith("'")&&e.endsWith("'")&&e.length>1||e.startsWith('"')&&e.endsWith('"')&&e.length>1)&&(e=e.substring(1,e.length-1)),Pe.has(R)){let u=Number(e);!isNaN(u)&&e!==""?n.defaultValue=u:e!==""&&(n.defaultValue=e)}else e!==""&&(n.defaultValue=e)}return g&&(n.comments=g),n}var Ve=(t,r,o)=>{let c={genDir:"nserve-config",modelDir:"model"},{genDir:i,modelDir:m}=Object.assign({},c,t),l=(0,M.join)(r,i,m);if(!(0,b.existsSync)(l))return;let p=(0,b.readdirSync)(l).filter(s=>s.endsWith(".sql"));if(p.length===0)throw new Error(`The SQL model directory does not contain any SQL files::${l}`);let g=(0,M.join)(r,o,m);(0,b.existsSync)(g)||(0,b.mkdirSync)(g);let R=[],n=[];p.forEach(s=>{let y=(0,M.join)(l,s),f=(0,b.readFileSync)(y,"utf-8");try{let a=Ge(f),E=a.tableName,I=(0,M.join)(g,`${E}.ts`),w=a.columns.map(v=>`${U(v.name)} = '${v.name}'`),L=[a.tableName,"_Field"].join(""),F=["import { DefineTable } from '@aicblock/esql'",`const table = DefineTable(${JSON.stringify(a,null,2)})`,`export enum ${U(L)} { ${w.join(", ")}}`,"export default table"];(0,b.writeFileSync)(I,F.join(`
|
|
30
|
+
`),"utf-8");let $=U(E);n.push($),R.push(`import ${$} from './${E}'`),C(`The model file ${E} has been generated::${I}`)}catch{throw new Error(`The SQL file ${s} is not a valid CREATE TABLE statement::${y}`)}});let e=(0,M.join)(g,"index.ts"),u=[...R,`export default [${n.join(", ")}]`];(0,b.writeFileSync)(e,u.join(`
|
|
31
|
+
`),"utf-8"),C(`The model index file has been generated::${e}`)},ye=Ve;var he=require("child_process"),Ee=require("path"),Fe=(t,r,o)=>{try{let c=r||process.cwd();ge(t||{},c,o||"src"),ye(t||{},c,o||"src");let i={semi:!1,singleQuote:!0,trailingComma:"none"},{semi:m,singleQuote:l,trailingComma:p}=Object.assign({},i,t?.codePrettier||{}),g=["npx prettier"];m===!1&&g.push("--no-semi"),l===!0&&g.push("--single-quote"),p&&g.push(`--trailing-comma ${p}`);let R=["'logic/**/*.ts'","'handler/**/*.ts'","'model/**/*.ts'","'types/**/*.d.ts'"];g.push("--write",...R);let n=g.join(" "),e=(0,Ee.join)(c,o||"src");console.log("[INFO] execRunGen::",e),console.log("[INFO] cmd::",n),(0,he.spawnSync)(n,{cwd:e,stdio:"inherit",shell:!0}),C("[INFO] execRunGen","SUCCESS")}catch(c){C("execRunGen fial::","ERROR"),console.error(c)}},Te=Fe;function Ye(t,r){C(`${r?`The [${r}] app has been `:""}Build DONE. [Build time:${Date.now()-t} ms]`,"SUCCESS")}function ke(t){C(t==="build"?"Build Fail.":"Serve process has exited.","ERROR")}function Ke(){let t=process.cwd(),r=ne(process.argv,"--config"),o=(0,V.join)(t,"nserve.config.ts"),c=(0,V.join)(t,"nserve.config.js"),i=r?(0,V.join)(t,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(t){try{let o=Ke(),c=process.cwd(),i=t,m=ne(process.argv,"--mode"),l=JSON.stringify(process.argv),p={AICBLOCK_NSERVE_RUN_CWD:c,AICBLOCK_NSERVE_RUN_CONFIG_PATH:o,AICBLOCK_NSERVE_RUN_MODE:i,AICBLOCK_NSERVE_ENV_MODE:m,AICBLOCK_NSERVE_RUN_ARGV:l};if(Object.keys(p).forEach(u=>{let s=p[u];s!==void 0&&(process.env[u]=s)}),t==="gen"){let{generateConfig:u,sourceDir:s}=J(o,process.cwd());Te(u||{},c,s||"src");return}let g=Date.now();var r=void 0;let R=process.platform==="win32"?"node.cmd":"node",e=(0,Re.spawn)(R,["./lib/core/run.js","--cmd"],{cwd:(0,V.join)(__dirname,"../"),stdio:t==="build"?"inherit":"pipe",env:Object.assign({},process.env,p)});e.stdout?.on("data",u=>{r&&r.stop(),console.log(u.toString("utf-8"))}),e.stdout?.on("error",u=>{r&&r.stop(),console.log(u.toString())}),e.stderr?.on("data",u=>{r&&r.stop(),console.log(u.toString("utf-8"))}),e.on("exit",u=>{r&&r.stop(),u===0&&t==="build"&&Ye(g,m),u!==0&&ke(t)})}catch(o){C("execRun fial::","ERROR"),console.error(o)}}var We=_e;0&&(module.exports={execRun});
|
package/lib/tools/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var R=Object.create;var
|
|
1
|
+
"use strict";var R=Object.create;var d=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var O=(e,r)=>{for(var t in r)d(e,t,{get:r[t],enumerable:!0})},m=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of T(r))!w.call(e,o)&&o!==t&&d(e,o,{get:()=>r[o],enumerable:!(n=E(r,o))||n.enumerable});return e};var q=(e,r,t)=>(t=e!=null?R(j(e)):{},m(r||!e||!e.__esModule?d(t,"default",{value:e,enumerable:!0}):t,e)),x=e=>m(d({},"__esModule",{value:!0}),e);var S={};O(S,{CheckFieldRequired:()=>b,ErrorResponse:()=>h,LoadConfig:()=>$,SuccessResponse:()=>p,default:()=>_});module.exports=x(S);var f=require("fs"),g=q(require("yaml"));function y(e,r,t=200,n){let c=Object.assign({code:t,data:r,msg:n||"\u6210\u529F"});e.send(c)}function h(e,r,t=500){console.error("[ERROR] STACK_INFO",r);let n=r?.message||"\u670D\u52A1\u5F02\u5E38",o=/^(\[[\d]*\])/,u=n&&n.match(o)&&n.replace(/^(\[[\d]*\]\-)/,"")||n;y(e,null,t,u)}function p(e,r,t){y(e,r,200,t)}var A=e=>{try{if(!(0,f.existsSync)(e))throw Error(`The configuration file does not exist. [${e}]`);let r=(0,f.readFileSync)(e,"utf8");return g.default.parse(r)}catch(r){throw console.error(r),Error()}},$=e=>{try{if(console.info("[INFO] config path::",e),!(0,f.existsSync)(e))throw Error(`The configuration file does not exist. [${e}]`);let r=A(e);if(!r)return;let t=Array.isArray(r),n=o=>{Object.keys(o)?.forEach(u=>{let s=o[u];global[u]=Array.isArray(s)?s.reduce((a,l)=>Object.assign(a,l),{}):s})};t?r.forEach(n):n(r)}catch(r){throw console.error(r),Error("LOAD_CONFIG_PARAM_ERROR")}},b=(e,r,t)=>{if(e==null)throw Error("The data is required.");if(r==null)throw Error("The config is required.");let o={...{required:"The field [${key}] is required.",array:"The field [${key}] must be an array with at least one element.",object:"The field [${key}] must be an object."},...t},c=(s,a)=>s.replace(/\$\{key\}/g,a);Object.keys(r).forEach(s=>{let a=r[s].required;if(!a)return;let l=r[s].type,i=e[s];if(i==null)throw Error(c(o.required,s));if(l==="array"&&(!Array.isArray(i)||i.length===0))throw Error(c(o.array,s));if(l==="object"&&(Object.prototype.toString.call(i)!=="[object Object]"||Object.keys(i).length===0))throw Error(c(o.object,s));if(l==="string"){if(typeof i!="string")throw Error(`The field [${s}] must be a string.`);if(a&&i.trim()==="")throw Error(c(o.required,s))}if(l==="number"&&typeof i!="number")throw Error(`The field [${s}] must be a number.`)})},_={ErrorResponse:h,SuccessResponse:p,CheckFieldRequired:b};0&&(module.exports={CheckFieldRequired,ErrorResponse,LoadConfig,SuccessResponse});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aicblock/nserve",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
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
|
-
"@
|
|
49
|
+
"@aicblock/esql": "^2.0.0",
|
|
50
50
|
"commander": "14.0.2",
|
|
51
51
|
"esbuild": "0.27.2",
|
|
52
52
|
"express": "5.2.1",
|