@xmono/server 1.0.1 → 1.0.2

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -2
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{ServerUtil:()=>P,default:()=>E});const r=require("fs");var o=e.n(r);const s=require("path");var n=e.n(s);const a=require("koa");var i=e.n(a);const c=require("@koa/send"),l=require("@xmono/db"),d=require("@xmono/utils"),u=require("@koa/bodyparser"),y=({publicPath:e,root:t})=>(e=e.replace(/\/*$/,"/").replace(/^\/*/,"/"),async(r,o)=>{if(r.path.startsWith(e)&&["HEAD","GET"].includes(r.method)){let s=decodeURIComponent(r.path.replace(e,""));try{await(0,c.send)(r,s,{root:t})}catch{await o()}}else await o()}),p=require("@koa/router");var b=e.n(p);const f=require("koa-jwt");var h=e.n(f);const m=new(b()),g=async(e,t)=>t().catch(t=>{let r=500,o="";"string"==typeof t?(r=400,o=t,console.log(t)):401===t.status?(r=401,o=t.originalError?t.originalError.message:t.message):(t.status&&(r=t.status),o=t.message,console.log(t)),e.response.status=r,e.response.body=o}),q=new(i()),w={async start(e={}){const t=n().resolve("config.json");o().existsSync(t)&&Object.assign(e,require(t)),q.config=e;let{db:r,host:s,port:a=8080,auth:i,root:p="",public:b="dist/public",models:f,controllers:w,index:v="dist/public/index.html"}=e;if(f&&(f=d.CommonUtil.loadModules(f)),w&&(w=d.CommonUtil.loadModules(w)),r&&(!0===r&&(r={client:"sqlite3",connection:{filename:n().resolve("data.db")}}),await l.DBUtil.init(r,f)),q.use(g),q.use((0,u.bodyParser)({parsedMethods:["PUT","POST","DELETE"]})),q.use(((e,t)=>{if(e){t&&m.use((e=>{const t=h()({secret:e.secret,getToken:e=>e.header.authorization||e.query.token});return e.unless?t.unless({path:e.unless}):t})(t));for(let t of e)for(let e in t){const r=e.split(" ");if(2!==r.length)throw"controller key error: "+e;{const[o,s]=r;if(!["get","post","put","delete"].includes(o))throw"controller method error: "+o;m[o]("/api"+s,t[e])}}}return m.routes()})(w,i)),b){Array.isArray(b)||(b="string"==typeof b?[{publicPath:"/",root:b,index:"index.html"}]:[b]);for(let e of b)q.use(y({...e,root:n().resolve(p,e.root)}))}return v&&q.use(async e=>await(0,c.send)(e,v,{root:p})),new Promise(e=>{const t=q.listen(a,s,()=>{const r=t.address();console.log(`server listen on [${r.address}]:${r.port}`),e(t)})})}},v={parse(e){let t=null,r=null,o=null,s=null,n=null;const a=e.query;for(let e in a)switch(e){case"fields":r=a[e].split(",");break;case"sort":{o=o||[];const t=a[e].split(",");for(let e=0;e<t.length;e+=2)o.push({column:t[e],order:t[e+1]});break}case"size":case"page":s=s||{},s[e]=a[e]-0;break;case"search":n=a[e];break;default:if(a[e]){t=t||{};let r=decodeURIComponent(a[e]);"!null"===r&&(r=["!=",""]),t[e]=r}}return{condition:{where:t},options:{fields:r,sort:o,pager:s},search:n}}},S=require("@koa/multer");var k=e.n(S);const $={createModelController(e){const t=e.key||"id",r=e.table;async function o(t){const{condition:r,options:o,search:s}=v.parse(t);if(s){const t=[];e.columns.forEach(e=>{e.matchSearch&&t.push({[e.name]:["like",`%${s}%`]})}),t.length&&(r.orWhere=t)}let n=await e.find(r,o);t.callback&&(n=t.callback(n)),o.pager?t.body={data:n,pager:o.pager}:t.body=n}async function s(r){let o=await e.findById(r.params[t]);r.body=r.callback?r.callback(o):o}async function n(t){t.body=await e.save(t.request.body)}async function a(r){r.body=await e.deleteById(r.request.body[t])}async function i(r){r.body=await e.updateById(r.params[t],r.request.body)}return o.req=`get /${r}`,s.req=`get /${r}/:${t}`,n.req=`post /${r}`,i.req=`put /${r}/:${t}`,a.req=`delete /${r}`,{all:function(){return{[o.req]:o,[s.req]:s,[n.req]:n,[i.req]:i,[a.req]:a}},list:o,get:s,post:n,put:i,delete:a}},createFileController(e={}){const{prefix:t="/files",getFullPath:r=e=>e}=e,s=k()({storage:{_handleFile(e,t,s){let a=r(e.body.path),{hash:i,index:c,name:l}=e.body;i&&(a=n().join(a,i)),a=void 0!==c?n().join(a,c):n().join(a,l);const d=n().dirname(a);o().existsSync(d)||o().mkdirSync(d,{recursive:!0});const u=o().createWriteStream(a);t.stream.pipe(u),u.on("finish",()=>{s(null,{path:a,size:u.bytesWritten})}),e.on("aborted",()=>{t.stream.on("end",()=>{o().rmSync(a,{recursive:!0,force:!0})}),t.stream.emit("end")})},_removeFile(e,t,r){o().remove(t.path,r)}}});return{[`get ${t}/{*path}`]:async e=>{const t=r(e.params.path);if(o().existsSync(t))return await(0,c.send)(e,n().basename(t),{root:n().dirname(t)});throw"无效路径"},[`post ${t}/readdir`]:async e=>{const t=r(e.request.body.path),s=e.request.body.fields||[],a=[];o().existsSync(t)&&o().readdirSync(t).forEach(e=>{let r={name:e};const i=o().statSync(n().join(t,e));if(i.isDirectory())r.dir=1;else for(let e of s)r[e]=i[e];a.push(r)}),e.body=a},[`post ${t}/readfile`]:async e=>{const t=r(e.request.body.path);if(!o().existsSync(t))throw"无效路径";await(0,c.send)(e,n().basename(t),{root:n().dirname(t)})},[`post ${t}/remove`]:async e=>{let{path:t}=e.request.body;Array.isArray(t)||(t=[t]),t.forEach(e=>{o().rmSync(r(e),{recursive:!0,force:!0})}),e.body=""},[`post ${t}/upload`]:async(e,t)=>{const r=s.single("file");await r(e,t),e.body=""},[`post ${t}/mkdir`]:async e=>{const t=r(e.request.body.path);o().mkdirSync(t),e.body=""},[`post ${t}/writefile`]:async e=>{const{content:t,path:s}=e.request.body,n=r(s);o().writeFileSync(n,t),e.body=""},[`post ${t}/rename`]:async e=>{let{from:t,to:s}=e.request.body;const n=r(t),a=r(s);o().renameSync(n,a),e.body=""},[`post ${t}/copy`]:async e=>{let{from:t,to:s}=e.request.body;const n=r(t),a=r(s);o().copySync(n,a,{overwrite:!1,errorOnExist:!0}),e.body=""},[`post ${t}/merge`]:async e=>{const{total:t,hash:s,name:a}=e.request.body,i=r(e.request.body.path),c=n().join(i,s),l=n().join(i,a);o().writeFileSync(l,"");for(let e=0;e<t;e++)o().appendFileSync(l,o().readFileSync(c+"/"+e));o().rmSync(c,{recursive:!0,force:!0}),e.body=""}}}},x=require("jsonwebtoken");var j=e.n(x);const E=w,P={...$,getJWTToken:(e,t,r)=>j().sign(e,t,{expiresIn:r})};module.exports=t})();
1
+ (()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var o in r)e.o(r,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:r[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{ServerUtil:()=>P,default:()=>E});const r=require("fs");var o=e.n(r);const s=require("path");var n=e.n(s);const a=require("koa");var i=e.n(a);const c=require("@xmono/db"),l=require("@koa/bodyparser"),d=require("@koa/send"),u=({publicPath:e,root:t})=>(e=e.replace(/\/*$/,"/").replace(/^\/*/,"/"),async(r,o)=>{if(r.path.startsWith(e)&&["HEAD","GET"].includes(r.method)){let s=decodeURIComponent(r.path.replace(e,""));try{await(0,d.send)(r,s,{root:t})}catch{await o()}}else await o()}),y=require("@koa/router");var p=e.n(y);const f=require("koa-jwt");var b=e.n(f);const h=new(p()),m=async(e,t)=>t().catch(t=>{let r=500,o="";"string"==typeof t?(r=400,o=t,console.log(t)):401===t.status?(r=401,o=t.originalError?t.originalError.message:t.message):(t.status&&(r=t.status),o=t.message,console.log(t)),e.response.status=r,e.response.body=o}),g=new(i());function q(e){Array.isArray(e)||(e=[e]);const t=[];for(let r of e)"function"==typeof r.keys?r.keys().forEach(e=>{t.push(r(e).default)}):t.push(r);return t}const w={async start(e={}){const t=n().resolve("config.json");o().existsSync(t)&&Object.assign(e,require(t)),g.config=e;let{db:r,host:s,port:a=8080,auth:i,public:d="dist/public",models:y,controllers:p,index:f="index.html"}=e;if(y&&(y=q(y)),p&&(p=q(p)),r&&(!0===r&&(r={client:"sqlite3",connection:{filename:n().resolve("data.db")}}),await c.DBUtil.init(r,y)),g.use(m),g.use((0,l.bodyParser)({parsedMethods:["PUT","POST","DELETE"]})),g.use(((e,t)=>{if(e){t&&h.use((e=>{const t=b()({secret:e.secret,getToken:e=>e.header.authorization||e.query.token});return e.unless?t.unless({path:e.unless}):t})(t));for(let t of e)for(let e in t){const r=e.split(" ");if(2!==r.length)throw"controller key error: "+e;{const[o,s]=r;if(!["get","post","put","delete"].includes(o))throw"controller method error: "+o;h[o]("/api"+s,t[e])}}}return h.routes()})(p,i)),d)if(Array.isArray(d))for(let e of d)g.use(u(e));else"string"==typeof d&&(d=[{publicPath:"/",root:d,index:f}]),g.use(u(d));return new Promise(e=>{const t=g.listen(a,s,()=>{const r=t.address();console.log(`server listen on [${r.address}]:${r.port}`),e(t)})})}},S={parse(e){let t=null,r=null,o=null,s=null,n=null;const a=e.query;for(let e in a)switch(e){case"fields":r=a[e].split(",");break;case"sort":{o=o||[];const t=a[e].split(",");for(let e=0;e<t.length;e+=2)o.push({column:t[e],order:t[e+1]});break}case"size":case"page":s=s||{},s[e]=a[e]-0;break;case"search":n=a[e];break;default:if(a[e]){t=t||{};let r=decodeURIComponent(a[e]);"!null"===r&&(r=["!=",""]),t[e]=r}}return{condition:{where:t},options:{fields:r,sort:o,pager:s},search:n}}},k=require("@koa/multer");var v=e.n(k);const $={createModelController(e){const t=e.key||"id",r=e.table;async function o(t){const{condition:r,options:o,search:s}=S.parse(t);if(s){const t=[];e.columns.forEach(e=>{e.matchSearch&&t.push({[e.name]:["like",`%${s}%`]})}),t.length&&(r.orWhere=t)}let n=await e.find(r,o);t.callback&&(n=t.callback(n)),o.pager?t.body={data:n,pager:o.pager}:t.body=n}async function s(r){let o=await e.findById(r.params[t]);r.body=r.callback?r.callback(o):o}async function n(t){t.body=await e.save(t.request.body)}async function a(r){r.body=await e.deleteById(r.request.body[t])}async function i(r){r.body=await e.updateById(r.params[t],r.request.body)}return o.req=`get /${r}`,s.req=`get /${r}/:${t}`,n.req=`post /${r}`,i.req=`put /${r}/:${t}`,a.req=`delete /${r}`,{all:function(){return{[o.req]:o,[s.req]:s,[n.req]:n,[i.req]:i,[a.req]:a}},list:o,get:s,post:n,put:i,delete:a}},createFileController(e={}){const{prefix:t="/files",getFullPath:r=e=>e}=e,s=v()({storage:{_handleFile(e,t,s){let a=r(e.body.path),{hash:i,index:c,name:l}=e.body;i&&(a=n().join(a,i)),a=void 0!==c?n().join(a,c):n().join(a,l);const d=n().dirname(a);o().existsSync(d)||o().mkdirSync(d,{recursive:!0});const u=o().createWriteStream(a);t.stream.pipe(u),u.on("finish",()=>{s(null,{path:a,size:u.bytesWritten})}),e.on("aborted",()=>{t.stream.on("end",()=>{o().rmSync(a,{recursive:!0,force:!0})}),t.stream.emit("end")})},_removeFile(e,t,r){o().remove(t.path,r)}}});return{[`get ${t}/{*path}`]:async e=>{const t=r(e.params.path);if(o().existsSync(t))return await(0,d.send)(e,n().basename(t),{root:n().dirname(t)});throw"无效路径"},[`post ${t}/readdir`]:async e=>{const t=r(e.request.body.path),s=e.request.body.fields||[],a=[];o().existsSync(t)&&o().readdirSync(t).forEach(e=>{let r={name:e};const i=o().statSync(n().join(t,e));if(i.isDirectory())r.dir=1;else for(let e of s)r[e]=i[e];a.push(r)}),e.body=a},[`post ${t}/readfile`]:async e=>{const t=r(e.request.body.path);if(!o().existsSync(t))throw"无效路径";await(0,d.send)(e,n().basename(t),{root:n().dirname(t)})},[`post ${t}/remove`]:async e=>{let{path:t}=e.request.body;Array.isArray(t)||(t=[t]),t.forEach(e=>{o().rmSync(r(e),{recursive:!0,force:!0})}),e.body=""},[`post ${t}/upload`]:async(e,t)=>{const r=s.single("file");await r(e,t),e.body=""},[`post ${t}/mkdir`]:async e=>{const t=r(e.request.body.path);o().mkdirSync(t),e.body=""},[`post ${t}/writefile`]:async e=>{const{content:t,path:s}=e.request.body,n=r(s);o().writeFileSync(n,t),e.body=""},[`post ${t}/rename`]:async e=>{let{from:t,to:s}=e.request.body;const n=r(t),a=r(s);o().renameSync(n,a),e.body=""},[`post ${t}/copy`]:async e=>{let{from:t,to:s}=e.request.body;const n=r(t),a=r(s);o().copySync(n,a,{overwrite:!1,errorOnExist:!0}),e.body=""},[`post ${t}/merge`]:async e=>{const{total:t,hash:s,name:a}=e.request.body,i=r(e.request.body.path),c=n().join(i,s),l=n().join(i,a);o().writeFileSync(l,"");for(let e=0;e<t;e++)o().appendFileSync(l,o().readFileSync(c+"/"+e));o().rmSync(c,{recursive:!0,force:!0}),e.body=""}}}},j=require("jsonwebtoken");var x=e.n(j);const E=w,P={...$,getJWTToken:(e,t,r)=>x().sign(e,t,{expiresIn:r})};module.exports=t})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmono/server",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "author": "wangxing",
5
5
  "description": "",
6
6
  "license": "MIT",
@@ -21,7 +21,6 @@
21
21
  "@koa/router": "^15.1.1",
22
22
  "@koa/send": "^6.0.0",
23
23
  "@xmono/db": "^1.0.0",
24
- "@xmono/utils": "^1.0.0",
25
24
  "jsonwebtoken": "^9.0.3",
26
25
  "koa": "^3.1.1",
27
26
  "koa-jwt": "^4.0.4",