miolo 0.7.6 → 0.7.7
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/dist/cli/miolo.cli.iife.bundle.js +1 -1
- package/dist/cli/miolo.cli.iife.bundle.min.js +1 -1
- package/dist/cli/miolo.cli.iife.js +1 -1
- package/dist/cli/miolo.cli.iife.min.js +1 -1
- package/dist/cli/miolo.cli.min.mjs +1 -1
- package/dist/cli/miolo.cli.mjs +1 -1
- package/dist/cli/miolo.cli.umd.bundle.js +1 -1
- package/dist/cli/miolo.cli.umd.bundle.min.js +1 -1
- package/dist/cli/miolo.cli.umd.js +1 -1
- package/dist/cli/miolo.cli.umd.min.js +1 -1
- package/dist/cli-react/miolo.cli-react.iife.bundle.js +1 -1
- package/dist/cli-react/miolo.cli-react.iife.bundle.min.js +1 -1
- package/dist/cli-react/miolo.cli-react.iife.js +1 -1
- package/dist/cli-react/miolo.cli-react.iife.min.js +1 -1
- package/dist/cli-react/miolo.cli-react.min.mjs +1 -1
- package/dist/cli-react/miolo.cli-react.mjs +1 -1
- package/dist/cli-react/miolo.cli-react.umd.bundle.js +1 -1
- package/dist/cli-react/miolo.cli-react.umd.bundle.min.js +1 -1
- package/dist/cli-react/miolo.cli-react.umd.js +1 -1
- package/dist/cli-react/miolo.cli-react.umd.min.js +1 -1
- package/dist/server/miolo.server.cjs +39 -22
- package/dist/server/miolo.server.min.mjs +2 -2
- package/dist/server/miolo.server.mjs +24 -21
- package/dist/server/miolo.server.mjs.map +1 -1
- package/dist/server/miolo.server.node.mjs +39 -22
- package/package.json +1 -1
package/dist/cli/miolo.cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* miolo v0.7.
|
|
2
|
+
* miolo v0.7.7
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Donato Lorenzo <donato@afialapis.com>
|
|
5
5
|
*
|
|
@@ -717,27 +717,44 @@ function init_emailer(options, defaults, silent) {
|
|
|
717
717
|
silent = false;
|
|
718
718
|
}
|
|
719
719
|
var nmailer = nodemailer.createTransport(options, defaults);
|
|
720
|
-
function send_email(
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
console.
|
|
735
|
-
console.
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
720
|
+
function send_email(_x) {
|
|
721
|
+
return _send_email.apply(this, arguments);
|
|
722
|
+
}
|
|
723
|
+
function _send_email() {
|
|
724
|
+
_send_email = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(mail) {
|
|
725
|
+
var info;
|
|
726
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
727
|
+
while (1) switch (_context.prev = _context.next) {
|
|
728
|
+
case 0:
|
|
729
|
+
if (!silent) {
|
|
730
|
+
_context.next = 7;
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
733
|
+
console.info('*********************************');
|
|
734
|
+
console.info('This mail will not be send (emailing is disabled):');
|
|
735
|
+
console.info(mail);
|
|
736
|
+
console.info('*********************************');
|
|
737
|
+
_context.next = 16;
|
|
738
|
+
break;
|
|
739
|
+
case 7:
|
|
740
|
+
_context.prev = 7;
|
|
741
|
+
info = nmailer.sendMail(mail);
|
|
742
|
+
info.ok = info != null && info.messageId ? true : false;
|
|
743
|
+
return _context.abrupt("return", info);
|
|
744
|
+
case 13:
|
|
745
|
+
_context.prev = 13;
|
|
746
|
+
_context.t0 = _context["catch"](7);
|
|
747
|
+
return _context.abrupt("return", {
|
|
748
|
+
error: _context.t0,
|
|
749
|
+
ok: false
|
|
750
|
+
});
|
|
751
|
+
case 16:
|
|
752
|
+
case "end":
|
|
753
|
+
return _context.stop();
|
|
754
|
+
}
|
|
755
|
+
}, _callee, null, [[7, 13]]);
|
|
756
|
+
}));
|
|
757
|
+
return _send_email.apply(this, arguments);
|
|
741
758
|
}
|
|
742
759
|
function verify_emailer() {
|
|
743
760
|
console.info('[miolo][Verify][MAILER] Verifying...');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* miolo v0.7.
|
|
2
|
+
* miolo v0.7.7
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Donato Lorenzo <donato@afialapis.com>
|
|
5
5
|
*
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
|
-
import e from"node:http";import r from"koa";import{createHttpTerminator as o}from"http-terminator";import t from"deepmerge";import n from"node:path";import{fileURLToPath as i}from"node:url";import{getConnection as a}from"calustra";export{getConnection}from"calustra";import l from"nodemailer";import{uncolor as u,gray as c,magenta as s,cyan as d,yellow as f,red_light as p,red as m,cyan_light as v,green as h,blue as y,green_bold as g,yellow_bold as b}from"tinguir";import x from"node:util";import S,{transports as _,createLogger as w,format as E}from"winston";import k from"koa-better-body";import O from"koa-convert";import R from"koa-compress";import{constants as q}from"node:zlib";import M from"koa-mount";import C from"koa-static";import T from"koa-favicon";import{performance as j}from"node:perf_hooks";import J from"@koa/router";import{readFileSync as L}from"node:fs";import N from"jwt-simple";import A from"koa-passport";import P from"passport-local";import U from"koa-session";import F from"koa-redis";import V from"@koa/cors";import B from"koa-proxies";import z from"koa-router";import G from"qs";import{renderToString as D}from"react-dom/server";import{CronJob as H}from"cron";import I from"node:os";import W from"diskspace";function Y(e,r){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),o.push.apply(o,t)}return o}function K(e){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?Y(Object(o),!0).forEach((function(r){Q(e,r,o[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):Y(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}function Z(e,r,o,t,n,i,a){try{var l=e[i](a),u=l.value}catch(c){return void o(c)}l.done?r(u):Promise.resolve(u).then(t,n)}function X(e){return function(){var r=this,o=arguments;return new Promise((function(t,n){var i=e.apply(r,o);function a(e){Z(i,t,n,a,l,"next",e)}function l(e){Z(i,t,n,a,l,"throw",e)}a(void 0)}))}}function Q(e,r,o){return(r=function(e){var r=function(e,r){if("object"!=typeof e||null===e)return e;var o=e[Symbol.toPrimitive];if(void 0!==o){var t=o.call(e,r||"default");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[r]=o,e}var $=i(import.meta.url),ee=n.dirname($),re={name:"miolo",http:{port:8001,hostname:"localhost",catcher_url:"/sys/jserror",static:{favicon:n.resolve(ee,"../static/img/miolo.ico"),folders:{}},cors:!1,proxy:!1},session:{salt:"SUPER_SALTY_YES?",secret:"SUPER_SECRET_KEY_KERE",options:{maxAge:864e5,secure:!0,sameSite:null}},db:{config:{dialect:"postgres",host:"localhost",port:5432,database:"miolo",user:"postgres",password:"postgres",max:5,min:0,idleTimeoutMillis:1e4},options:{log:"silly",tables:[]}},routes:{bodyField:void 0,crud:[{prefix:"",routes:[]}],queries:void 0},log:{level:"debug",format:{locale:"en-GB"},console:{enabled:!0,level:"silly"},file:{enabled:!0,level:"silly",filename:"/var/log/miolo.log"},mail:{enabled:!1,level:"warn",name:"miolo",from:"miolo@mail.com",to:"errors@mail.com"}},mail:{silent:!0,options:{port:25,host:"mail.com",authMethod:"PLAIN",secure:!1,tls:{rejectUnauthorized:!1},logger:!1,debug:!1},defaults:{name:"miolo",from:"miolo@mail.com",to:"errors@mail.com"}},auth:{},render:{},middlewares:[],cron:[]};var{combine:oe,timestamp:te,_label:ne,printf:ie,errors:ae}=E,le=(e,r)=>{var o,t,n={silly:c,debug:s,verbose:d,info:f,warn:p,error:m},i={silly:"sly",debug:"dbg",verbose:"vbs",info:"inf",warn:"wrn",error:"err"},a=ie((r=>{var o,t=n[r.level],a=new Date(r.timestamp).toLocaleString((null==e||null===(o=e.format)||void 0===o?void 0:o.locale)||"en"),l="[miolo] ".concat(t(a)," ").concat(t(i[r.level])," ").concat(r.message);return r.stack?"".concat(l,"\n").concat(r.stack):l})),l=[];e.console.enabled&&l.push(new _.Console({humanReadableUnhandledException:!0,level:(null==e||null===(o=e.console)||void 0===o?void 0:o.level)||(null==e?void 0:e.level)||"silly",handleExceptions:!0}));e.file.enabled&&l.push(new _.File({filename:e.file.filename,level:(null==e||null===(t=e.file)||void 0===t?void 0:t.level)||(null==e?void 0:e.level)||"info",humanReadableUnhandledException:!0,handleExceptions:!0}));if(e.mail.enabled){var v=function(e,r){var o=function(o){S.Transport.call(this,o),o=o||{},this.level=e.level||"info",this.ename=(null==e?void 0:e.name)||r.defaults.name,this.to=e.to||r.defaults.to,this.from=e.from||r.defaults.from,this.humanReadableUnhandledException=o.humanReadableUnhandledException||!0,this.handleExceptions=o.handleExceptions||!0,this.json=o.json||!1,this.colorize=o.colorize||!1};return x.inherits(o,S.Transport),o.prototype.name="MailerLogger",o.prototype.log=function(o,t){var n=this,i="";try{i=o.message.split("\n")[0]}catch(c){i=o.message.toString()}i=u(i);var a=e.name+": ["+o.level.toUpperCase()+"] "+i,l={from:this.from,to:this.to,subject:a,text:u(o.message)};r.send(l,(function(){n.emit("logged"),t(null,!0)}))},o}(e.mail,r);_.MailerLogger=v,l.push(new _.MailerLogger({humanReadableUnhandledException:!0,handleExceptions:!0}))}return w({level:(null==e?void 0:e.level)||"silly",format:oe(ae({stack:!0}),te(),a),transports:l})},ue=(e,r)=>{var o=function(e,r){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],t=l.createTransport(e,r);return{send:function(e,r){o?(console.info("*********************************"),console.info("This mail will not be send (emailing is disabled):"),console.info(e),console.info("*********************************")):(r||(r=function(e,r){e&&(console.error("NodeMailer error:"),console.error(e)),r&&(console.log("NodeMailer sent mail:"),console.log(r))}),t.sendMail(e,r))},verify:function(){console.info("[miolo][Verify][MAILER] Verifying..."),t.verify((function(e,r){e?(console.error("[miolo][Verify][MAILER] Verifying ERROR"),console.error(e)):console.info("[miolo][Verify][MAILER] Verifyed OK: Server is ready to take our messages")}))},options:e,defaults:r,silent:o}}(r.mail.options,r.mail.defaults),t=le(r.log,o),n=K(K({},r.db.options),{},{log:t}),i={getConnection:()=>a(r.db.config,n),getModel:e=>a(r.db.config,n).getModel(e)},u={config:K({},r),emailer:o,logger:t,db:i};function c(){return(c=X((function*(e,r){e.miolo=u,yield r()}))).apply(this,arguments)}e.use((function(e,r){return c.apply(this,arguments)})),e.context.miolo=u},ce=[401];var se=i(import.meta.url),de=n.dirname(se),fe=n.resolve(de,"./miolo.ico"),pe={total:0};var me=i(import.meta.url),ve=n.dirname(me),he=L(n.resolve(ve,"./robots.txt"),"utf8");var ye=(e,r,o)=>{var t=e.context.miolo.logger,n=()=>{try{var{make_guest_token:e}=r;if(null!=e)return e(o||{})}catch(n){}return function(e,r){var o=Math.random().toString(),t=null==e?void 0:e.secret;t||(t="miolo_unsafe_secret",r.error("Guest token made with an unsafe secret string. Please, configure your own through session.secret."));var n={admin:!1,buid:o};return N.encode(n,t)}(o||{},t)};function i(){return i=X((function*(e,r){var i=e.cookies.get("token")||e.headers.token;void 0!==i&&0!=i.length||(i=yield n(),t.debug("Guest token conceeded"));var a=function(e){var r,o=null==e||null===(r=e.options)||void 0===r?void 0:r.maxAge;isNaN(o)&&(o=86400);var t=new Date;return t.setSeconds(t.getSeconds()+o),{expires:t,httpOnly:!1}}(o);e.cookies.set("token",i,a),e.session={user:{name:"guest"},authenticated:!0,token:i},yield r()})),i.apply(this,arguments)}e.use((function(e,r){return i.apply(this,arguments)}))},ge=(e,r)=>{var{auth_user:o,realm:t,paths:n}=r;function i(e,r){return a.apply(this,arguments)}function a(){return(a=X((function*(r,n){var i;try{i=(e=>{var r,o=null==e||null===(r=e.headers)||void 0===r?void 0:r.authorization;if(o)try{o=o.replace("Basic ","");try{o=Buffer.from(o,"base64").toString()}catch(i){o=atob(o)}var[t,n]=o.split(":");return{username:t,password:n}}catch(i){return}})(r.request)}catch(u){}var a=()=>{r.session={user:void 0,authenticated:!1},r.body={user:void 0,authenticated:!1},r.response.status=401,r.response.headers["WWW-Authenticate"]='Basic realm="'+t.replace(/"/g,'\\"')+'"'};if(!i)return a();var l=yield o(i.username,i.password,e.context.miolo);if(!1===l||null==l)return a();r.session={user:l,authenticated:!0},yield n()}))).apply(this,arguments)}t||(t="Secure Area"),null==n||0==n.length?e.use(i):n.map((r=>e.use(M(r,i))))},be=new F;var xe=(e,r,o)=>r(null,e.id),Se=(e,r,o)=>{r(Error("You need to define auth.passport.find_user_by_id"),null)},_e=(e,r,o,t)=>{o(Error("You need to define auth.passport.local_auth_user"),null)},we=(e,r,o)=>{var{get_user_id:t,find_user_by_id:n,local_auth_user:i,url_login:a,url_logout:l,url_login_redirect:u,url_logout_redirect:c}=r,s=t||xe,d=n||Se,f=i||_e,p=a||"/login",m=l||"/logout",v=new P.Strategy(((r,o,t)=>{f(r,o,t,e.context.miolo)}));!function(e,r){e.keys=[r.secret||"*secret*"];var o=K({store:be},r.options||{});e.use(U(o,e))}(e,o),A.serializeUser(((r,o)=>{process.nextTick((function(){s(r,o,e.context.miolo)}))})),A.deserializeUser(((r,o)=>{process.nextTick((function(){d(r,o,e.context.miolo)}))})),A.use(v),e.use(A.initialize()),e.use(A.session());var h=function(){var e=X((function*(e,r){e.session.authenticated?(e.session.user=void 0,e.session.authenticated=!1,e.logout(),e.body={user:void 0,authenticated:!1},null!=c&&e.redirect(c)):(e.body={user:void 0,authenticated:!1},e.response.status=401)}));return function(r,o){return e.apply(this,arguments)}}(),y=new J;y.post(p,((e,r)=>A.authenticate("local",function(){var r=X((function*(r,o,t,n){if(!1!==o)return e.session.user=o,e.session.authenticated=!0,e.body={user:o,authenticated:!0},null!=u&&e.redirect(u),yield e.login(o);e.session.user=void 0,e.session.authenticated=!1,e.body={user:void 0,authenticated:!1,info:t,error:r},e.response.status=401}));return function(e,o,t,n){return r.apply(this,arguments)}}())(e))),y.get(m,h),y.post(m,h),e.use(y.routes())},Ee=(e,r)=>{null!=r&&0!=r.length&&r.map((r=>{function o(){return(o=X((function*(e,o){yield r(e),yield o()}))).apply(this,arguments)}e.use((function(e,r){return o.apply(this,arguments)}))}))},ke=(e,r,o)=>{try{var t=e[r];if(null!=t&&0!=t)return o(t)}catch(n){}},Oe=(e,r)=>{var o=e.context.miolo.logger;ke(r,"cors",(r=>{if("simple"==r)o.debug("Setting CORS the simple way"),e.use(function(){var e=X((function*(e,r){e.set("Access-Control-Allow-Origin","*"),e.set("Access-Control-Expose-Headers","SourceMap,X-SourceMap"),yield r()}));return function(r,o){return e.apply(this,arguments)}}());else{var t=(e=>"object"==typeof e?e:{})(r);o.debug("Setting CORS headers for ".concat(JSON.stringify(t))),e.use(V(t))}})),ke(r,"proxy",(r=>{var[t,n]=(e=>{var r,o,t,n;return null==e&&(e={}),[(null===(r=e)||void 0===r?void 0:r.path)||"/",{target:(null===(o=e)||void 0===o?void 0:o.target)||"https://proxy.miolo.com",changeOrigin:null==(null===(t=e)||void 0===t?void 0:t.changeOrigin)||e.changeOrigin,logs:null==(null===(n=e)||void 0===n?void 0:n.logs)||e.logs}]})(r);o.debug("Setting Proxy for ".concat(t," to ").concat(n.target," ")),e.use(B(t,n))}))},Re=function(){var e=X((function*(e){return!0}));return function(r){return e.apply(this,arguments)}}(),qe=function(){var e=X((function*(e,r){return r}));return function(r,o){return e.apply(this,arguments)}}(),Me={require:!1,action:"redirect",redirect_url:"/",error_code:401},Ce={use:!1,fieldNames:{created_by:"created_by",last_update_by:"last_update_by"}},Te=e=>{var r=(null==e?void 0:e.crud)||[];if(!r)return[];if(!Array.isArray(r))return[];var o=[];return r.map((r=>{var n=null==r?void 0:r.routes;if(n&&Array.isArray(n)){var i=(null==r?void 0:r.bodyField)||(null==e?void 0:e.bodyField),a=(null==r?void 0:r.before)||(null==e?void 0:e.before)||Re,l=(null==r?void 0:r.after)||(null==e?void 0:e.after)||qe,u=t(Me,(null==e?void 0:e.auth)||{},(null==r?void 0:r.auth)||{}),c=[];for(var s of n){var d="string"==typeof s?{name:s}:s;if(d.name){var f={name:d.name,url:(null==d?void 0:d.url)||d.name,mode:(null==d?void 0:d.mode)||"rw",bodyField:(null==d?void 0:d.bodyField)||i,useUserFields:t(Ce,(null==d?void 0:d.useUserFields)||{}),auth:t(u,(null==d?void 0:d.auth)||{}),before:(null==d?void 0:d.before)||a,after:(null==d?void 0:d.after)||l};c.push(f)}}c.length>0&&o.push({prefix:(null==r?void 0:r.prefix)||"",routes:c})}})),o};function je(e){var r=e.indexOf("?")>=0?e.substr(e.indexOf("?")+1):"";return r?G.parse(r):{}}function Je(e,r,o,t){o.map((o=>{var n=o.prefix;o.routes.map((o=>{var i=e.getModel(o.name);if(i){for(var a=function(){var e=X((function*(e,r){var n,i=!0===(null==e||null===(n=e.session)||void 0===n?void 0:n.authenticated),a=o.auth;return!(!0===a.require||"read-only"===a.require&&"w"===r)||(i||("error"==a.action?(t.error("Unauthorized access. Throwing error ".concat(a.error_code)),e.throw(a.error_code,null,{})):"redirect"==a.action?(t.warn("Unauthorized access. Redirecting to ".concat(a.redirect_url)),e.redirect(a.redirect_url)):(t.error("Crud path ".concat(o.url," specified auth but no action")),e.body={})),i)}));return function(r,o){return e.apply(this,arguments)}}(),l=function(){var e=X((function*(e,r,t){var n;if(yield a(e,r)){var i=!0;if(null!=o&&o.before&&(i=yield o.before(e)),i){var l=null==e||null===(n=e.session)||void 0===n||null===(n=n.user)||void 0===n?void 0:n.id,u={};!0===o.useUserFields.use&&(u=o.useUserFields.fieldNames);var c,s={uid:l,fieldNames:u},d=yield t(s);null!=o&&o.after&&(d=yield o.after(e,d)),c=d,d=null==o.bodyField?c:{[o.bodyField]:c},e.body=d}else e.body={}}else e.body={}}));return function(r,o,t){return e.apply(this,arguments)}}(),u=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var o=je(e.request.url),t={transaction:void 0};return yield i.read(o,t)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),c=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var o=je(e.request.url),t={transaction:void 0};return yield i.keyList(o,t)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),s=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var o=je(e.request.url),t={transaction:void 0};return yield i.find(o.id,t)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),d=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var o=je(e.request.url),t={transaction:void 0};return yield i.distinct(o.distinct_field,o,t)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),f=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var o,t=e.request.fields;null!=r&&null!==(o=r.fieldNames)&&void 0!==o&&o.created_by&&(t[r.fieldNames.created_by]=r.uid);var n={transaction:void 0};return yield i.insert(t,n)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),p=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var o,t=e.request.fields;null!=r&&null!==(o=r.fieldNames)&&void 0!==o&&o.last_update_by&&(t[r.fieldNames.last_update_by]=r.uid);var n={transaction:void 0};return yield i.update(t,{id:t.id},n)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),m=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var o=e.request.fields,t={transaction:void 0};return yield i.delete({id:o.id},t)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),v=n?"/".concat(n,"/").concat(o.url):"/".concat(o.url);v.indexOf("//")>=0;)v=v.replace(/\/\//g,"/");t.info("[miolo-router] Routing table ".concat(o.name," to ").concat(v));var h=o.mode.indexOf("r")>=0,y=o.mode.indexOf("w")>=0,g=o.mode.indexOf("u")>=0||y;h&&(r.get("".concat(v,"/find"),(e=>s(e))),r.get("".concat(v,"/read"),(e=>u(e))),r.get("".concat(v,"/distinct"),(e=>d(e))),r.get("".concat(v,"/key_list"),(e=>c(e)))),g&&(r.post("".concat(v,"/save"),(e=>f(e))),r.post("".concat(v,"/update"),(e=>p(e)))),y&&r.post("".concat(v,"/delete"),(e=>m(e)))}else t.error("[miolo-router] Could not get model for ".concat(o.name))}))}))}var Le=e=>{var r=(null==e?void 0:e.queries)||[];if(!r)return[];if(!Array.isArray(r))return[];var o=[];return r.map((r=>{var n=null==r?void 0:r.routes;if(n&&Array.isArray(n)){var i=(null==r?void 0:r.before)||(null==e?void 0:e.before)||Re,a=(null==r?void 0:r.after)||(null==e?void 0:e.after)||qe,l=t(Me,(null==r?void 0:r.auth)||{},(null==e?void 0:e.auth)||{}),u=[];for(var c of n)if(c.url&&c.callback){var s={url:c.url,method:(null==c?void 0:c.method)||"GET",callback:c.callback,auth:t(l,(null==c?void 0:c.auth)||{}),before:(null==c?void 0:c.before)||i,after:(null==c?void 0:c.after)||a};u.push(s)}o.push({prefix:(null==r?void 0:r.prefix)||"",routes:u})}})),o};function Ne(e,r,o){var t=new z;try{var n=Te(o),i=Le(o),a=n.length>0,l=i.length>0;if(!a&&!l)throw"[miolo-router] Could not get any route from the passed <routes> param";a&&Je(r,t,n,r.log),l&&function(e,r,o){r.map((r=>{var t=r.prefix;r.routes.map((r=>{for(var n,i=t?"/".concat(t,"/").concat(r.url):"/".concat(r.url);i.indexOf("//")>=0;)i=i.replace(/\/\//g,"/");o.info("Routing ".concat((null===(n=r.callback)||void 0===n?void 0:n.name)||"callback"," to ").concat(r.method," ").concat(i));var a=function(){var e=X((function*(e){var t,n=!0===(null==e||null===(t=e.session)||void 0===t?void 0:t.authenticated),i=r.auth;return!(!0===i.require||"read-only"===i.require&&"POST"===r.method)||(n||("error"==i.action?(o.error("Unauthorized access. Throwing error ".concat(i.error_code)),e.throw(i.error_code,null,{})):"redirect"==i.action?(o.warn("Unauthorized access. Redirecting to ".concat(i.redirect_url)),e.redirect(i.redirect_url)):(o.error("Route path ".concat(r.url," specified auth but no action")),e.body={})),n)}));return function(r){return e.apply(this,arguments)}}(),l=function(){var e=X((function*(e){try{var t;if("GET"==r.method&&(null===(t=e.request)||void 0===t||!t.fields)&&e.request.url.indexOf("?")>0){var n=je(e.request.url);n&&(e.request.fields=n)}}catch(u){o.error("Error while trying to qet query params for ".concat(e.request.url))}if(yield a(e)){var i=!0;if(null!=r&&r.before&&(i=yield r.before(e)),i){var l=yield r.callback(e);return null!=r&&r.after&&(l=yield r.after(e,l)),l}}}));return function(r){return e.apply(this,arguments)}}(),u=r.method.toLowerCase();e[u](i,(e=>l(e,r)))}))}))}(t,i,r.log)}catch(u){console.error(u),console.error("[miolo-router] Error initing the router. Probably config objects are not ok"),console.error("[miolo-router] connOrConfig:"),console.error(null==r?void 0:r.config),console.error("[miolo-router] routes:"),console.error(o)}e.use(t.routes())}var Ae=i(import.meta.url),Pe=n.dirname(Ae),Ue=L(n.resolve(Pe,"fallback_index.html"),"utf8");var Fe=i(import.meta.url),Ve=n.dirname(Fe),Be=L(n.resolve(Ve,"fallback_index.html"),"utf8");function ze(e){return e?e/1e6:0}function Ge(e){return e?e/1e6:0}function De(){return{name:"SysCheck",cronTime:"0,15,30,45 * * * *",onTick:(e,r)=>{var o,t,n,i;o=e.logger,t=Math.round(ze(I.freemem()),2),n=Math.round(ze(I.totalmem()),2),(i=Math.round(100*t/n,2))>80?o.error("[SERVER][".concat(d("SysCheck"),"] RAM ").concat(f(t)," MB used of ").concat(h(n)," MB (").concat(f(i)," %)")):o.info("[SERVER][".concat(d("SysCheck"),"] RAM ").concat(f(t)," MB used of ").concat(h(n)," MB (").concat(f(i)," %)")),W.check("/",(function(e,r){var t=Math.round(Ge(r.used),2),n=Math.round(Ge(r.total),2),i=Math.round(Ge(r.free),2);i<1?o.error("[SERVER][".concat(d("SysCheck"),"] DISK ").concat(f(t)," GB used of ").concat(h(n)," GB (").concat(f(i)," GB free)")):o.info("[SERVER][".concat(d("SysCheck"),"] DISK ").concat(f(t)," GB used of ").concat(h(n)," GB (").concat(f(i)," GB free)"))}))},start:!0}}function He(e,r){var o=e.context.miolo,t=o.logger,n=[De(),...r||[]],i=[];n.map((e=>{var r=e.name,t=function(e,r){var o,t=e.logger,n=null!=r&&null!==(o=r.onTick)&&void 0!==o&&o.name&&"onTick"!=r.onTick.name?r.onTick.name:"custom",i=(null==r?void 0:r.name)||n;return new H((null==r?void 0:r.cronTime)||"*/5 * * * *",(o=>{console.log("".concat(i,".onTick"));try{t.silly("[SERVER][Custom Job ".concat(d(i),"] ").concat(g("ticks!"))),r.onTick(e,o)}catch(n){t.error("[SERVER][Custom Job ".concat(d(i),"] Error at onTick()")),t.error(n)}}),(()=>{if(console.log("".concat(i,".onComplete")),t.silly("[SERVER][Custom Job ".concat(d(i),"] ").concat(g("completed!"))),null!=r&&r.onComplete)try{r.onComplete(e)}catch(o){t.error("[SERVER][Custom Job ".concat(d(i),"] Error at onComplete()")),t.error(o)}}),!0===(null==r?void 0:r.start),(null==r?void 0:r.timezone)||"Europe/Madrid")}(o,e);i.push({name:r,job:t,running:!0===(null==e?void 0:e.start)})}));var a=e=>{var r;return(r="number"==typeof e?i[e]:i.filter((r=>r.name==e))[0])||t.error("[SERVER] Cannot stop job ".concat(d(e),": Not Found")),r},l=e=>{try{e.job.stop(),e.running=!1,t.debug("[SERVER][Job ".concat(d(e.name),"] ").concat(b("manually stopped!")))}catch(r){t.error("[SERVER][Job ".concat(d(e.name),"] Error manually stopping it")),t.error(r)}};e.cron={jobs:i,start:e=>{var r=a(e);r&&(e=>{try{e.job.stop(),e.running=!0,t.debug("[SERVER][Job ".concat(d(e.name),"] ").concat(g("manually started!")))}catch(r){t.error("[SERVER][Job ".concat(d(e.name),"] Error manually starting it")),t.error(r)}})(r)},stop:e=>{var r=a(e);r&&l(r)},stop_all:()=>{i.map((e=>{l(e)}))}}}function Ie(n,i){var a,l=new r,u=function(e){var r,o=t(re,e);return o.auth_type=function(e){var r,o,t;return null!=e&&null!==(r=e.auth)&&void 0!==r&&r.basic?"basic":null!=e&&null!==(o=e.auth)&&void 0!==o&&o.passport?"passport":null!=e&&null!==(t=e.auth)&&void 0!==t&&t.custom?"custom":"guest"}(e),o.use_catcher=!(null==o||null===(r=o.http)||void 0===r||!r.catcher_url),o}(n);ue(l,u),(e=>{e.use(R({filter:function(e){return"application/json"==e||"text/html"==e},gzip:{flush:q.Z_SYNC_FLUSH},deflate:{flush:q.Z_SYNC_FLUSH},br:!1})),e.use(O(k({formLimit:"100mb",jsonLimit:"100mb",bufferLimit:"100mb"})))})(l),function(e){var r=e.context.miolo.logger;function o(){return(o=X((function*(e){if(e){var o=e.status||400;if(this.accepts(["text","json","html"])?"number"!=typeof o&&(o=500):(o=406,e.message="Unsupported type"),ce.indexOf(o)>=0?r.warn("".concat(this.method," ").concat(this.url," - ").concat(o,": ").concat(e.message)):r.error(e),this.headerSent||!this.writable)return r.debug("headers were already sent, returning early"),void(e.headerSent=!0);this.type="json",this.status=o,this.body=JSON.stringify(this.body||"",null,2),this.length=Buffer.byteLength(this.body),this.res.end(this.body)}}))).apply(this,arguments)}e.context.onerror=function(e){return o.apply(this,arguments)}}(l),((e,r)=>{var{favicon:o,folders:t}=r;for(var[n,i]of(e.use(T(o||fe)),Object.entries(t)))e.use(M(n,C(i,{index:!1})))})(l,null===(a=u.http)||void 0===a?void 0:a.static),function(e){function r(){return(r=X((function*(e,r){var o,t=e.miolo.logger,n=e.headers["x-real-ip"]||"127.0.0.1",i=j.now();e.request.body=K(K({},e.request.fields),e.request.files),pe.total+=1,pe[n]=(pe[n]||0)+1,e.requestId=pe.total,e.request.ip=n;var a=e.request.url.indexOf("?")>=0?e.request.url.substr(0,e.request.url.indexOf("?")):e.request.url,l="".concat(s(n)," ").concat(d(e.request.method)," ").concat(d(a)," [").concat(v(pe[n]),"/").concat(v(e.requestId),"]"),u=null!=e.request.body?JSON.stringify(e.request.body):"";t.info("".concat(l," - START")),t.debug("".concat(l," - Body: ").concat(u)),yield r();var c=null==e||null===(o=e.session)||void 0===o?void 0:o.user,p="";null!=c&&(null!=c&&c.id?p=" - uid ".concat(null==c?void 0:c.id):null!=c&&c.token&&(p=" - token ".concat(null==c?void 0:c.token)));var y,g=e.response.status,b=g;200==g?y=h:g>200&&g<=299?(y=f,e.response.redirected&&e.response.url&&(b+=" -> ".concat(e.response.url))):y=m;var x="[".concat(y(b),"]"),S=parseFloat((j.now()-i)/1e3).toFixed(2),_=S<1?h:S<2?f:m,w=null!=e.session?JSON.stringify(e.session):"";t.debug("".concat(l," - Session: ").concat(w));var E=null!=e.body?JSON.stringify(e.body):"";t.debug("".concat(l," - Response: ").concat(E)),t.info("".concat(l," - DONE ").concat(x).concat(p," (time ").concat(_(S),")"))}))).apply(this,arguments)}e.use((function(e,o){return r.apply(this,arguments)}))}(l),function(e){function r(){return(r=X((function*(e){e.body=he}))).apply(this,arguments)}var o=new J;o.get("/robots.txt",(function(e){return r.apply(this,arguments)})),e.use(o.routes())}(l),u.use_catcher&&function(e,r){function o(){return o=X((function*(e){var{error:r,warning:o,path:t,agent:n}=e.request.body,i=e.miolo.logger;if(o){var a="".concat(f("[JS Warning]")," on ").concat(y(t),": ").concat(o.msg,"\n")+"".concat(f("[JS Warning]")," File => ").concat(o.file,"\n")+"".concat(f("[JS Warning]")," Line => ").concat(o.line,"\n")+"".concat(f("[JS Warning]")," Col => ").concat(o.col,"\n")+"".concat(f("[JS Warning]")," Error => ").concat(JSON.stringify(o.error),"\n")+"".concat(f("[JS Warning]")," Agent => ").concat(n);i.warn(a)}else{var l="".concat(m("[JS Error]")," on ").concat(y(t),": ").concat(r.msg,"\n")+"".concat(m("[JS Error]")," File => ").concat(r.file,"\n")+"".concat(m("[JS Error]")," Line => ").concat(r.line,"\n")+"".concat(m("[JS Error]")," Col => ").concat(r.col,"\n")+"".concat(m("[JS Error]")," Error => ").concat(JSON.stringify(r.error),"\n")+"".concat(m("[JS Error]")," Agent => ").concat(n);i.error(l)}e.body={result:1}})),o.apply(this,arguments)}var t=new J;t.post(r,(function(e){return o.apply(this,arguments)})),e.use(t.routes())}(l,u.http.catcher_url),"guest"==u.auth_type&&ye(l,u.auth.guest,null==u?void 0:u.session),"basic"==u.auth_type&&ge(l,u.auth.basic),"passport"==u.auth_type&&we(l,u.auth.passport,null==u?void 0:u.session),"custom"==u.auth_type&&((e,r)=>{var o=e.context.miolo.logger;try{var t=r(e);if("function"==typeof t)e.use(t);else if(Array.isArray(t)){var n=new J;t.map((e=>{var r=e.method.toLowerCase();n[r](e.url,e.callback)})),e.use(n.routes())}}catch(i){o.error("Custom auth error: ".concat(i,"'"))}})(l,u.auth.custom);var c=null==u?void 0:u.middlewares;if(c&&Ee(l,c),Oe(l,u.http),null!=u&&u.routes){var p=l.context.miolo.db.getConnection();Ne(l,p,u.routes)}null!=(null==i?void 0:i.middleware)?l.use(i.middleware):null!=(null==i?void 0:i.ssr)?function(e,r,o,t){var n=(null==r?void 0:r.html)||Be;n.indexOf("{context}")<0&&e.context.miolo.logger.error("Provided HTML for rendering has no {context} template variable"),n.indexOf("{children}")<0&&e.context.miolo.logger.error("Provided HTML for rendering has no {children} template variable");var i=function(){var e=X((function*(e){var o={};try{o=yield r.ssr.loader(e)}catch(l){var t,n="URL: ".concat(e.request.url,"\nFields: ").concat(JSON.stringify((null===(t=e.request)||void 0===t?void 0:t.fields)||{})),i=null!=l&&l.stack?"".concat(l.toString(),"\n").concat(l.stack):l.toString(),a="".concat("Error produced by loader in render.ssr middleware","\n").concat(n,"\n").concat(i);e.miolo.logger.error(a)}return o}));return function(r){return e.apply(this,arguments)}}(),a=(e,r)=>{var o,t,n=!0===(null==e||null===(o=e.session)||void 0===o?void 0:o.authenticated);return{user:null==e||null===(t=e.session)||void 0===t?void 0:t.user,authenticated:n,ssr_data:r,extra:null==e?void 0:e.extra}},l=(e,i)=>{var a="",l={hostname:null==o?void 0:o.hostname,port:null==o?void 0:o.port,catcher_url:null==o?void 0:o.catcher_url,auth_type:t};try{a=D(r.ssr.renderer(e,i,l))}catch(u){e.miolo.logger.error("Missing renderer in render.ssr middleware"),e.miolo.logger.error(u),a="\n <div>\n MIOLO: Missing SSR renderer: ".concat(u.toString(),"\n </div> \n ")}return n.replace("{context}",JSON.stringify(i,null,2)).replace("{children}",a)};function u(){return(u=X((function*(e){var r=yield i(e),o=a(e,r),t=l(e,o);e.miolo.logger.debug("render_ssr_middleware() rendered HTML (".concat(Buffer.byteLength(t,"utf8")," bytes total) ")),e.body=t}))).apply(this,arguments)}e.use((function(e){return u.apply(this,arguments)}))}(l,i,u.http,u.auth_type):null!=i&&i.html?function(e,r){var o=(null==r?void 0:r.html)||Ue;o.indexOf("{context}")<0&&e.context.miolo.logger.error(m("Provided HTML for rendering has no {context} template variable")),o.indexOf("{children}")<0&&e.context.miolo.logger.error(m("Provided HTML for rendering has no {children} template variable"));var t=e=>{var r,o,t=!0===(null==e||null===(r=e.session)||void 0===r?void 0:r.authenticated);return{user:null==e||null===(o=e.session)||void 0===o?void 0:o.user,authenticated:t,ssr_data:void 0,extra:null==e?void 0:e.extra}},n=e=>o.replace("{context}",JSON.stringify(e,null,2));function i(){return(i=X((function*(e){var r=t(e),o=n(r);e.miolo.logger.debug("render_html_middleware() rendered HTML (".concat(Buffer.byteLength(o,"utf8")," bytes total) ")),e.body=o}))).apply(this,arguments)}var a=new J;a.get("/",(function(e){return i.apply(this,arguments)})),e.use(a.routes())}(l,i):function(e,r){function o(){return(o=X((function*(e){e.miolo.logger.debug("render_404_middleware() Not FOUND ".concat(e.url," ")),e.body={},e.response.status=404,e.response.body="Resource Not Found"}))).apply(this,arguments)}var t=new J;t.get("/",(function(e){return o.apply(this,arguments)})),e.use(t.routes())}(l);var g=function(){var r=X((function*(){var r=e.createServer(l.callback());yield((e,r,o)=>new Promise(((t,n)=>{e.listen(r,o,(e=>{e?n(e):t()}))})))(r,u.http.port,u.http.hostname),l.context.miolo.logger.info("miolo is listening on ".concat(u.http.hostname,":").concat(u.http.port)),l.server=r;var t=o({server:r});return l.stop_server=X((function*(){yield t.terminate(),l.context.miolo.logger.info("miolo has been shutdowned from ".concat(u.http.hostname,":").concat(u.http.port))})),He(l,null==u?void 0:u.cron),l}));return function(){return r.apply(this,arguments)}}();return l.run=g,l}export{Ie as miolo};
|
|
11
|
+
import e from"node:http";import r from"koa";import{createHttpTerminator as t}from"http-terminator";import o from"deepmerge";import n from"node:path";import{fileURLToPath as i}from"node:url";import{getConnection as a}from"calustra";export{getConnection}from"calustra";import l from"nodemailer";import{uncolor as u,gray as c,magenta as s,cyan as d,yellow as f,red_light as p,red as m,cyan_light as v,green as h,blue as y,green_bold as g,yellow_bold as b}from"tinguir";import x from"node:util";import S,{transports as _,createLogger as w,format as E}from"winston";import k from"koa-better-body";import O from"koa-convert";import R from"koa-compress";import{constants as q}from"node:zlib";import M from"koa-mount";import C from"koa-static";import T from"koa-favicon";import{performance as j}from"node:perf_hooks";import J from"@koa/router";import{readFileSync as L}from"node:fs";import N from"jwt-simple";import A from"koa-passport";import P from"passport-local";import U from"koa-session";import F from"koa-redis";import V from"@koa/cors";import B from"koa-proxies";import z from"koa-router";import G from"qs";import{renderToString as D}from"react-dom/server";import{CronJob as I}from"cron";import H from"node:os";import W from"diskspace";function Y(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function K(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?Y(Object(t),!0).forEach((function(r){Q(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):Y(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function Z(e,r,t,o,n,i,a){try{var l=e[i](a),u=l.value}catch(c){return void t(c)}l.done?r(u):Promise.resolve(u).then(o,n)}function X(e){return function(){var r=this,t=arguments;return new Promise((function(o,n){var i=e.apply(r,t);function a(e){Z(i,o,n,a,l,"next",e)}function l(e){Z(i,o,n,a,l,"throw",e)}a(void 0)}))}}function Q(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var o=t.call(e,r||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var $=i(import.meta.url),ee=n.dirname($),re={name:"miolo",http:{port:8001,hostname:"localhost",catcher_url:"/sys/jserror",static:{favicon:n.resolve(ee,"../static/img/miolo.ico"),folders:{}},cors:!1,proxy:!1},session:{salt:"SUPER_SALTY_YES?",secret:"SUPER_SECRET_KEY_KERE",options:{maxAge:864e5,secure:!0,sameSite:null}},db:{config:{dialect:"postgres",host:"localhost",port:5432,database:"miolo",user:"postgres",password:"postgres",max:5,min:0,idleTimeoutMillis:1e4},options:{log:"silly",tables:[]}},routes:{bodyField:void 0,crud:[{prefix:"",routes:[]}],queries:void 0},log:{level:"debug",format:{locale:"en-GB"},console:{enabled:!0,level:"silly"},file:{enabled:!0,level:"silly",filename:"/var/log/miolo.log"},mail:{enabled:!1,level:"warn",name:"miolo",from:"miolo@mail.com",to:"errors@mail.com"}},mail:{silent:!0,options:{port:25,host:"mail.com",authMethod:"PLAIN",secure:!1,tls:{rejectUnauthorized:!1},logger:!1,debug:!1},defaults:{name:"miolo",from:"miolo@mail.com",to:"errors@mail.com"}},auth:{},render:{},middlewares:[],cron:[]};var{combine:te,timestamp:oe,_label:ne,printf:ie,errors:ae}=E,le=(e,r)=>{var t,o,n={silly:c,debug:s,verbose:d,info:f,warn:p,error:m},i={silly:"sly",debug:"dbg",verbose:"vbs",info:"inf",warn:"wrn",error:"err"},a=ie((r=>{var t,o=n[r.level],a=new Date(r.timestamp).toLocaleString((null==e||null===(t=e.format)||void 0===t?void 0:t.locale)||"en"),l="[miolo] ".concat(o(a)," ").concat(o(i[r.level])," ").concat(r.message);return r.stack?"".concat(l,"\n").concat(r.stack):l})),l=[];e.console.enabled&&l.push(new _.Console({humanReadableUnhandledException:!0,level:(null==e||null===(t=e.console)||void 0===t?void 0:t.level)||(null==e?void 0:e.level)||"silly",handleExceptions:!0}));e.file.enabled&&l.push(new _.File({filename:e.file.filename,level:(null==e||null===(o=e.file)||void 0===o?void 0:o.level)||(null==e?void 0:e.level)||"info",humanReadableUnhandledException:!0,handleExceptions:!0}));if(e.mail.enabled){var v=function(e,r){var t=function(t){S.Transport.call(this,t),t=t||{},this.level=e.level||"info",this.ename=(null==e?void 0:e.name)||r.defaults.name,this.to=e.to||r.defaults.to,this.from=e.from||r.defaults.from,this.humanReadableUnhandledException=t.humanReadableUnhandledException||!0,this.handleExceptions=t.handleExceptions||!0,this.json=t.json||!1,this.colorize=t.colorize||!1};return x.inherits(t,S.Transport),t.prototype.name="MailerLogger",t.prototype.log=function(t,o){var n=this,i="";try{i=t.message.split("\n")[0]}catch(c){i=t.message.toString()}i=u(i);var a=e.name+": ["+t.level.toUpperCase()+"] "+i,l={from:this.from,to:this.to,subject:a,text:u(t.message)};r.send(l,(function(){n.emit("logged"),o(null,!0)}))},t}(e.mail,r);_.MailerLogger=v,l.push(new _.MailerLogger({humanReadableUnhandledException:!0,handleExceptions:!0}))}return w({level:(null==e?void 0:e.level)||"silly",format:te(ae({stack:!0}),oe(),a),transports:l})},ue=(e,r)=>{var t=function(e,r){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=l.createTransport(e,r);function n(){return(n=X((function*(e){if(t)console.info("*********************************"),console.info("This mail will not be send (emailing is disabled):"),console.info(e),console.info("*********************************");else try{var r=o.sendMail(e);return r.ok=!(null==r||!r.messageId),r}catch(n){return{error:n,ok:!1}}}))).apply(this,arguments)}var i={send:function(e){return n.apply(this,arguments)},verify:function(){console.info("[miolo][Verify][MAILER] Verifying..."),o.verify((function(e,r){e?(console.error("[miolo][Verify][MAILER] Verifying ERROR"),console.error(e)):console.info("[miolo][Verify][MAILER] Verifyed OK: Server is ready to take our messages")}))},options:e,defaults:r,silent:t};return i}(r.mail.options,r.mail.defaults),o=le(r.log,t),n=K(K({},r.db.options),{},{log:o}),i={getConnection:()=>a(r.db.config,n),getModel:e=>a(r.db.config,n).getModel(e)},u={config:K({},r),emailer:t,logger:o,db:i};function c(){return(c=X((function*(e,r){e.miolo=u,yield r()}))).apply(this,arguments)}e.use((function(e,r){return c.apply(this,arguments)})),e.context.miolo=u},ce=[401];var se=i(import.meta.url),de=n.dirname(se),fe=n.resolve(de,"./miolo.ico"),pe={total:0};var me=i(import.meta.url),ve=n.dirname(me),he=L(n.resolve(ve,"./robots.txt"),"utf8");var ye=(e,r,t)=>{var o=e.context.miolo.logger,n=()=>{try{var{make_guest_token:e}=r;if(null!=e)return e(t||{})}catch(n){}return function(e,r){var t=Math.random().toString(),o=null==e?void 0:e.secret;o||(o="miolo_unsafe_secret",r.error("Guest token made with an unsafe secret string. Please, configure your own through session.secret."));var n={admin:!1,buid:t};return N.encode(n,o)}(t||{},o)};function i(){return i=X((function*(e,r){var i=e.cookies.get("token")||e.headers.token;void 0!==i&&0!=i.length||(i=yield n(),o.debug("Guest token conceeded"));var a=function(e){var r,t=null==e||null===(r=e.options)||void 0===r?void 0:r.maxAge;isNaN(t)&&(t=86400);var o=new Date;return o.setSeconds(o.getSeconds()+t),{expires:o,httpOnly:!1}}(t);e.cookies.set("token",i,a),e.session={user:{name:"guest"},authenticated:!0,token:i},yield r()})),i.apply(this,arguments)}e.use((function(e,r){return i.apply(this,arguments)}))},ge=(e,r)=>{var{auth_user:t,realm:o,paths:n}=r;function i(e,r){return a.apply(this,arguments)}function a(){return(a=X((function*(r,n){var i;try{i=(e=>{var r,t=null==e||null===(r=e.headers)||void 0===r?void 0:r.authorization;if(t)try{t=t.replace("Basic ","");try{t=Buffer.from(t,"base64").toString()}catch(i){t=atob(t)}var[o,n]=t.split(":");return{username:o,password:n}}catch(i){return}})(r.request)}catch(u){}var a=()=>{r.session={user:void 0,authenticated:!1},r.body={user:void 0,authenticated:!1},r.response.status=401,r.response.headers["WWW-Authenticate"]='Basic realm="'+o.replace(/"/g,'\\"')+'"'};if(!i)return a();var l=yield t(i.username,i.password,e.context.miolo);if(!1===l||null==l)return a();r.session={user:l,authenticated:!0},yield n()}))).apply(this,arguments)}o||(o="Secure Area"),null==n||0==n.length?e.use(i):n.map((r=>e.use(M(r,i))))},be=new F;var xe=(e,r,t)=>r(null,e.id),Se=(e,r,t)=>{r(Error("You need to define auth.passport.find_user_by_id"),null)},_e=(e,r,t,o)=>{t(Error("You need to define auth.passport.local_auth_user"),null)},we=(e,r,t)=>{var{get_user_id:o,find_user_by_id:n,local_auth_user:i,url_login:a,url_logout:l,url_login_redirect:u,url_logout_redirect:c}=r,s=o||xe,d=n||Se,f=i||_e,p=a||"/login",m=l||"/logout",v=new P.Strategy(((r,t,o)=>{f(r,t,o,e.context.miolo)}));!function(e,r){e.keys=[r.secret||"*secret*"];var t=K({store:be},r.options||{});e.use(U(t,e))}(e,t),A.serializeUser(((r,t)=>{process.nextTick((function(){s(r,t,e.context.miolo)}))})),A.deserializeUser(((r,t)=>{process.nextTick((function(){d(r,t,e.context.miolo)}))})),A.use(v),e.use(A.initialize()),e.use(A.session());var h=function(){var e=X((function*(e,r){e.session.authenticated?(e.session.user=void 0,e.session.authenticated=!1,e.logout(),e.body={user:void 0,authenticated:!1},null!=c&&e.redirect(c)):(e.body={user:void 0,authenticated:!1},e.response.status=401)}));return function(r,t){return e.apply(this,arguments)}}(),y=new J;y.post(p,((e,r)=>A.authenticate("local",function(){var r=X((function*(r,t,o,n){if(!1!==t)return e.session.user=t,e.session.authenticated=!0,e.body={user:t,authenticated:!0},null!=u&&e.redirect(u),yield e.login(t);e.session.user=void 0,e.session.authenticated=!1,e.body={user:void 0,authenticated:!1,info:o,error:r},e.response.status=401}));return function(e,t,o,n){return r.apply(this,arguments)}}())(e))),y.get(m,h),y.post(m,h),e.use(y.routes())},Ee=(e,r)=>{null!=r&&0!=r.length&&r.map((r=>{function t(){return(t=X((function*(e,t){yield r(e),yield t()}))).apply(this,arguments)}e.use((function(e,r){return t.apply(this,arguments)}))}))},ke=(e,r,t)=>{try{var o=e[r];if(null!=o&&0!=o)return t(o)}catch(n){}},Oe=(e,r)=>{var t=e.context.miolo.logger;ke(r,"cors",(r=>{if("simple"==r)t.debug("Setting CORS the simple way"),e.use(function(){var e=X((function*(e,r){e.set("Access-Control-Allow-Origin","*"),e.set("Access-Control-Expose-Headers","SourceMap,X-SourceMap"),yield r()}));return function(r,t){return e.apply(this,arguments)}}());else{var o=(e=>"object"==typeof e?e:{})(r);t.debug("Setting CORS headers for ".concat(JSON.stringify(o))),e.use(V(o))}})),ke(r,"proxy",(r=>{var[o,n]=(e=>{var r,t,o,n;return null==e&&(e={}),[(null===(r=e)||void 0===r?void 0:r.path)||"/",{target:(null===(t=e)||void 0===t?void 0:t.target)||"https://proxy.miolo.com",changeOrigin:null==(null===(o=e)||void 0===o?void 0:o.changeOrigin)||e.changeOrigin,logs:null==(null===(n=e)||void 0===n?void 0:n.logs)||e.logs}]})(r);t.debug("Setting Proxy for ".concat(o," to ").concat(n.target," ")),e.use(B(o,n))}))},Re=function(){var e=X((function*(e){return!0}));return function(r){return e.apply(this,arguments)}}(),qe=function(){var e=X((function*(e,r){return r}));return function(r,t){return e.apply(this,arguments)}}(),Me={require:!1,action:"redirect",redirect_url:"/",error_code:401},Ce={use:!1,fieldNames:{created_by:"created_by",last_update_by:"last_update_by"}},Te=e=>{var r=(null==e?void 0:e.crud)||[];if(!r)return[];if(!Array.isArray(r))return[];var t=[];return r.map((r=>{var n=null==r?void 0:r.routes;if(n&&Array.isArray(n)){var i=(null==r?void 0:r.bodyField)||(null==e?void 0:e.bodyField),a=(null==r?void 0:r.before)||(null==e?void 0:e.before)||Re,l=(null==r?void 0:r.after)||(null==e?void 0:e.after)||qe,u=o(Me,(null==e?void 0:e.auth)||{},(null==r?void 0:r.auth)||{}),c=[];for(var s of n){var d="string"==typeof s?{name:s}:s;if(d.name){var f={name:d.name,url:(null==d?void 0:d.url)||d.name,mode:(null==d?void 0:d.mode)||"rw",bodyField:(null==d?void 0:d.bodyField)||i,useUserFields:o(Ce,(null==d?void 0:d.useUserFields)||{}),auth:o(u,(null==d?void 0:d.auth)||{}),before:(null==d?void 0:d.before)||a,after:(null==d?void 0:d.after)||l};c.push(f)}}c.length>0&&t.push({prefix:(null==r?void 0:r.prefix)||"",routes:c})}})),t};function je(e){var r=e.indexOf("?")>=0?e.substr(e.indexOf("?")+1):"";return r?G.parse(r):{}}function Je(e,r,t,o){t.map((t=>{var n=t.prefix;t.routes.map((t=>{var i=e.getModel(t.name);if(i){for(var a=function(){var e=X((function*(e,r){var n,i=!0===(null==e||null===(n=e.session)||void 0===n?void 0:n.authenticated),a=t.auth;return!(!0===a.require||"read-only"===a.require&&"w"===r)||(i||("error"==a.action?(o.error("Unauthorized access. Throwing error ".concat(a.error_code)),e.throw(a.error_code,null,{})):"redirect"==a.action?(o.warn("Unauthorized access. Redirecting to ".concat(a.redirect_url)),e.redirect(a.redirect_url)):(o.error("Crud path ".concat(t.url," specified auth but no action")),e.body={})),i)}));return function(r,t){return e.apply(this,arguments)}}(),l=function(){var e=X((function*(e,r,o){var n;if(yield a(e,r)){var i=!0;if(null!=t&&t.before&&(i=yield t.before(e)),i){var l=null==e||null===(n=e.session)||void 0===n||null===(n=n.user)||void 0===n?void 0:n.id,u={};!0===t.useUserFields.use&&(u=t.useUserFields.fieldNames);var c,s={uid:l,fieldNames:u},d=yield o(s);null!=t&&t.after&&(d=yield t.after(e,d)),c=d,d=null==t.bodyField?c:{[t.bodyField]:c},e.body=d}else e.body={}}else e.body={}}));return function(r,t,o){return e.apply(this,arguments)}}(),u=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var t=je(e.request.url),o={transaction:void 0};return yield i.read(t,o)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),c=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var t=je(e.request.url),o={transaction:void 0};return yield i.keyList(t,o)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),s=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var t=je(e.request.url),o={transaction:void 0};return yield i.find(t.id,o)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),d=function(){var e=X((function*(e){yield l(e,"r",function(){var r=X((function*(r){var t=je(e.request.url),o={transaction:void 0};return yield i.distinct(t.distinct_field,t,o)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),f=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var t,o=e.request.fields;null!=r&&null!==(t=r.fieldNames)&&void 0!==t&&t.created_by&&(o[r.fieldNames.created_by]=r.uid);var n={transaction:void 0};return yield i.insert(o,n)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),p=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var t,o=e.request.fields;null!=r&&null!==(t=r.fieldNames)&&void 0!==t&&t.last_update_by&&(o[r.fieldNames.last_update_by]=r.uid);var n={transaction:void 0};return yield i.update(o,{id:o.id},n)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),m=function(){var e=X((function*(e){yield l(e,"w",function(){var r=X((function*(r){var t=e.request.fields,o={transaction:void 0};return yield i.delete({id:t.id},o)}));return function(e){return r.apply(this,arguments)}}())}));return function(r){return e.apply(this,arguments)}}(),v=n?"/".concat(n,"/").concat(t.url):"/".concat(t.url);v.indexOf("//")>=0;)v=v.replace(/\/\//g,"/");o.info("[miolo-router] Routing table ".concat(t.name," to ").concat(v));var h=t.mode.indexOf("r")>=0,y=t.mode.indexOf("w")>=0,g=t.mode.indexOf("u")>=0||y;h&&(r.get("".concat(v,"/find"),(e=>s(e))),r.get("".concat(v,"/read"),(e=>u(e))),r.get("".concat(v,"/distinct"),(e=>d(e))),r.get("".concat(v,"/key_list"),(e=>c(e)))),g&&(r.post("".concat(v,"/save"),(e=>f(e))),r.post("".concat(v,"/update"),(e=>p(e)))),y&&r.post("".concat(v,"/delete"),(e=>m(e)))}else o.error("[miolo-router] Could not get model for ".concat(t.name))}))}))}var Le=e=>{var r=(null==e?void 0:e.queries)||[];if(!r)return[];if(!Array.isArray(r))return[];var t=[];return r.map((r=>{var n=null==r?void 0:r.routes;if(n&&Array.isArray(n)){var i=(null==r?void 0:r.before)||(null==e?void 0:e.before)||Re,a=(null==r?void 0:r.after)||(null==e?void 0:e.after)||qe,l=o(Me,(null==r?void 0:r.auth)||{},(null==e?void 0:e.auth)||{}),u=[];for(var c of n)if(c.url&&c.callback){var s={url:c.url,method:(null==c?void 0:c.method)||"GET",callback:c.callback,auth:o(l,(null==c?void 0:c.auth)||{}),before:(null==c?void 0:c.before)||i,after:(null==c?void 0:c.after)||a};u.push(s)}t.push({prefix:(null==r?void 0:r.prefix)||"",routes:u})}})),t};function Ne(e,r,t){var o=new z;try{var n=Te(t),i=Le(t),a=n.length>0,l=i.length>0;if(!a&&!l)throw"[miolo-router] Could not get any route from the passed <routes> param";a&&Je(r,o,n,r.log),l&&function(e,r,t){r.map((r=>{var o=r.prefix;r.routes.map((r=>{for(var n,i=o?"/".concat(o,"/").concat(r.url):"/".concat(r.url);i.indexOf("//")>=0;)i=i.replace(/\/\//g,"/");t.info("Routing ".concat((null===(n=r.callback)||void 0===n?void 0:n.name)||"callback"," to ").concat(r.method," ").concat(i));var a=function(){var e=X((function*(e){var o,n=!0===(null==e||null===(o=e.session)||void 0===o?void 0:o.authenticated),i=r.auth;return!(!0===i.require||"read-only"===i.require&&"POST"===r.method)||(n||("error"==i.action?(t.error("Unauthorized access. Throwing error ".concat(i.error_code)),e.throw(i.error_code,null,{})):"redirect"==i.action?(t.warn("Unauthorized access. Redirecting to ".concat(i.redirect_url)),e.redirect(i.redirect_url)):(t.error("Route path ".concat(r.url," specified auth but no action")),e.body={})),n)}));return function(r){return e.apply(this,arguments)}}(),l=function(){var e=X((function*(e){try{var o;if("GET"==r.method&&(null===(o=e.request)||void 0===o||!o.fields)&&e.request.url.indexOf("?")>0){var n=je(e.request.url);n&&(e.request.fields=n)}}catch(u){t.error("Error while trying to qet query params for ".concat(e.request.url))}if(yield a(e)){var i=!0;if(null!=r&&r.before&&(i=yield r.before(e)),i){var l=yield r.callback(e);return null!=r&&r.after&&(l=yield r.after(e,l)),l}}}));return function(r){return e.apply(this,arguments)}}(),u=r.method.toLowerCase();e[u](i,(e=>l(e,r)))}))}))}(o,i,r.log)}catch(u){console.error(u),console.error("[miolo-router] Error initing the router. Probably config objects are not ok"),console.error("[miolo-router] connOrConfig:"),console.error(null==r?void 0:r.config),console.error("[miolo-router] routes:"),console.error(t)}e.use(o.routes())}var Ae=i(import.meta.url),Pe=n.dirname(Ae),Ue=L(n.resolve(Pe,"fallback_index.html"),"utf8");var Fe=i(import.meta.url),Ve=n.dirname(Fe),Be=L(n.resolve(Ve,"fallback_index.html"),"utf8");function ze(e){return e?e/1e6:0}function Ge(e){return e?e/1e6:0}function De(){return{name:"SysCheck",cronTime:"0,15,30,45 * * * *",onTick:(e,r)=>{var t,o,n,i;t=e.logger,o=Math.round(ze(H.freemem()),2),n=Math.round(ze(H.totalmem()),2),(i=Math.round(100*o/n,2))>80?t.error("[SERVER][".concat(d("SysCheck"),"] RAM ").concat(f(o)," MB used of ").concat(h(n)," MB (").concat(f(i)," %)")):t.info("[SERVER][".concat(d("SysCheck"),"] RAM ").concat(f(o)," MB used of ").concat(h(n)," MB (").concat(f(i)," %)")),W.check("/",(function(e,r){var o=Math.round(Ge(r.used),2),n=Math.round(Ge(r.total),2),i=Math.round(Ge(r.free),2);i<1?t.error("[SERVER][".concat(d("SysCheck"),"] DISK ").concat(f(o)," GB used of ").concat(h(n)," GB (").concat(f(i)," GB free)")):t.info("[SERVER][".concat(d("SysCheck"),"] DISK ").concat(f(o)," GB used of ").concat(h(n)," GB (").concat(f(i)," GB free)"))}))},start:!0}}function Ie(e,r){var t=e.context.miolo,o=t.logger,n=[De(),...r||[]],i=[];n.map((e=>{var r=e.name,o=function(e,r){var t,o=e.logger,n=null!=r&&null!==(t=r.onTick)&&void 0!==t&&t.name&&"onTick"!=r.onTick.name?r.onTick.name:"custom",i=(null==r?void 0:r.name)||n;return new I((null==r?void 0:r.cronTime)||"*/5 * * * *",(t=>{console.log("".concat(i,".onTick"));try{o.silly("[SERVER][Custom Job ".concat(d(i),"] ").concat(g("ticks!"))),r.onTick(e,t)}catch(n){o.error("[SERVER][Custom Job ".concat(d(i),"] Error at onTick()")),o.error(n)}}),(()=>{if(console.log("".concat(i,".onComplete")),o.silly("[SERVER][Custom Job ".concat(d(i),"] ").concat(g("completed!"))),null!=r&&r.onComplete)try{r.onComplete(e)}catch(t){o.error("[SERVER][Custom Job ".concat(d(i),"] Error at onComplete()")),o.error(t)}}),!0===(null==r?void 0:r.start),(null==r?void 0:r.timezone)||"Europe/Madrid")}(t,e);i.push({name:r,job:o,running:!0===(null==e?void 0:e.start)})}));var a=e=>{var r;return(r="number"==typeof e?i[e]:i.filter((r=>r.name==e))[0])||o.error("[SERVER] Cannot stop job ".concat(d(e),": Not Found")),r},l=e=>{try{e.job.stop(),e.running=!1,o.debug("[SERVER][Job ".concat(d(e.name),"] ").concat(b("manually stopped!")))}catch(r){o.error("[SERVER][Job ".concat(d(e.name),"] Error manually stopping it")),o.error(r)}};e.cron={jobs:i,start:e=>{var r=a(e);r&&(e=>{try{e.job.stop(),e.running=!0,o.debug("[SERVER][Job ".concat(d(e.name),"] ").concat(g("manually started!")))}catch(r){o.error("[SERVER][Job ".concat(d(e.name),"] Error manually starting it")),o.error(r)}})(r)},stop:e=>{var r=a(e);r&&l(r)},stop_all:()=>{i.map((e=>{l(e)}))}}}function He(n,i){var a,l=new r,u=function(e){var r,t=o(re,e);return t.auth_type=function(e){var r,t,o;return null!=e&&null!==(r=e.auth)&&void 0!==r&&r.basic?"basic":null!=e&&null!==(t=e.auth)&&void 0!==t&&t.passport?"passport":null!=e&&null!==(o=e.auth)&&void 0!==o&&o.custom?"custom":"guest"}(e),t.use_catcher=!(null==t||null===(r=t.http)||void 0===r||!r.catcher_url),t}(n);ue(l,u),(e=>{e.use(R({filter:function(e){return"application/json"==e||"text/html"==e},gzip:{flush:q.Z_SYNC_FLUSH},deflate:{flush:q.Z_SYNC_FLUSH},br:!1})),e.use(O(k({formLimit:"100mb",jsonLimit:"100mb",bufferLimit:"100mb"})))})(l),function(e){var r=e.context.miolo.logger;function t(){return(t=X((function*(e){if(e){var t=e.status||400;if(this.accepts(["text","json","html"])?"number"!=typeof t&&(t=500):(t=406,e.message="Unsupported type"),ce.indexOf(t)>=0?r.warn("".concat(this.method," ").concat(this.url," - ").concat(t,": ").concat(e.message)):r.error(e),this.headerSent||!this.writable)return r.debug("headers were already sent, returning early"),void(e.headerSent=!0);this.type="json",this.status=t,this.body=JSON.stringify(this.body||"",null,2),this.length=Buffer.byteLength(this.body),this.res.end(this.body)}}))).apply(this,arguments)}e.context.onerror=function(e){return t.apply(this,arguments)}}(l),((e,r)=>{var{favicon:t,folders:o}=r;for(var[n,i]of(e.use(T(t||fe)),Object.entries(o)))e.use(M(n,C(i,{index:!1})))})(l,null===(a=u.http)||void 0===a?void 0:a.static),function(e){function r(){return(r=X((function*(e,r){var t,o=e.miolo.logger,n=e.headers["x-real-ip"]||"127.0.0.1",i=j.now();e.request.body=K(K({},e.request.fields),e.request.files),pe.total+=1,pe[n]=(pe[n]||0)+1,e.requestId=pe.total,e.request.ip=n;var a=e.request.url.indexOf("?")>=0?e.request.url.substr(0,e.request.url.indexOf("?")):e.request.url,l="".concat(s(n)," ").concat(d(e.request.method)," ").concat(d(a)," [").concat(v(pe[n]),"/").concat(v(e.requestId),"]"),u=null!=e.request.body?JSON.stringify(e.request.body):"";o.info("".concat(l," - START")),o.debug("".concat(l," - Body: ").concat(u)),yield r();var c=null==e||null===(t=e.session)||void 0===t?void 0:t.user,p="";null!=c&&(null!=c&&c.id?p=" - uid ".concat(null==c?void 0:c.id):null!=c&&c.token&&(p=" - token ".concat(null==c?void 0:c.token)));var y,g=e.response.status,b=g;200==g?y=h:g>200&&g<=299?(y=f,e.response.redirected&&e.response.url&&(b+=" -> ".concat(e.response.url))):y=m;var x="[".concat(y(b),"]"),S=parseFloat((j.now()-i)/1e3).toFixed(2),_=S<1?h:S<2?f:m,w=null!=e.session?JSON.stringify(e.session):"";o.debug("".concat(l," - Session: ").concat(w));var E=null!=e.body?JSON.stringify(e.body):"";o.debug("".concat(l," - Response: ").concat(E)),o.info("".concat(l," - DONE ").concat(x).concat(p," (time ").concat(_(S),")"))}))).apply(this,arguments)}e.use((function(e,t){return r.apply(this,arguments)}))}(l),function(e){function r(){return(r=X((function*(e){e.body=he}))).apply(this,arguments)}var t=new J;t.get("/robots.txt",(function(e){return r.apply(this,arguments)})),e.use(t.routes())}(l),u.use_catcher&&function(e,r){function t(){return t=X((function*(e){var{error:r,warning:t,path:o,agent:n}=e.request.body,i=e.miolo.logger;if(t){var a="".concat(f("[JS Warning]")," on ").concat(y(o),": ").concat(t.msg,"\n")+"".concat(f("[JS Warning]")," File => ").concat(t.file,"\n")+"".concat(f("[JS Warning]")," Line => ").concat(t.line,"\n")+"".concat(f("[JS Warning]")," Col => ").concat(t.col,"\n")+"".concat(f("[JS Warning]")," Error => ").concat(JSON.stringify(t.error),"\n")+"".concat(f("[JS Warning]")," Agent => ").concat(n);i.warn(a)}else{var l="".concat(m("[JS Error]")," on ").concat(y(o),": ").concat(r.msg,"\n")+"".concat(m("[JS Error]")," File => ").concat(r.file,"\n")+"".concat(m("[JS Error]")," Line => ").concat(r.line,"\n")+"".concat(m("[JS Error]")," Col => ").concat(r.col,"\n")+"".concat(m("[JS Error]")," Error => ").concat(JSON.stringify(r.error),"\n")+"".concat(m("[JS Error]")," Agent => ").concat(n);i.error(l)}e.body={result:1}})),t.apply(this,arguments)}var o=new J;o.post(r,(function(e){return t.apply(this,arguments)})),e.use(o.routes())}(l,u.http.catcher_url),"guest"==u.auth_type&&ye(l,u.auth.guest,null==u?void 0:u.session),"basic"==u.auth_type&&ge(l,u.auth.basic),"passport"==u.auth_type&&we(l,u.auth.passport,null==u?void 0:u.session),"custom"==u.auth_type&&((e,r)=>{var t=e.context.miolo.logger;try{var o=r(e);if("function"==typeof o)e.use(o);else if(Array.isArray(o)){var n=new J;o.map((e=>{var r=e.method.toLowerCase();n[r](e.url,e.callback)})),e.use(n.routes())}}catch(i){t.error("Custom auth error: ".concat(i,"'"))}})(l,u.auth.custom);var c=null==u?void 0:u.middlewares;if(c&&Ee(l,c),Oe(l,u.http),null!=u&&u.routes){var p=l.context.miolo.db.getConnection();Ne(l,p,u.routes)}null!=(null==i?void 0:i.middleware)?l.use(i.middleware):null!=(null==i?void 0:i.ssr)?function(e,r,t,o){var n=(null==r?void 0:r.html)||Be;n.indexOf("{context}")<0&&e.context.miolo.logger.error("Provided HTML for rendering has no {context} template variable"),n.indexOf("{children}")<0&&e.context.miolo.logger.error("Provided HTML for rendering has no {children} template variable");var i=function(){var e=X((function*(e){var t={};try{t=yield r.ssr.loader(e)}catch(l){var o,n="URL: ".concat(e.request.url,"\nFields: ").concat(JSON.stringify((null===(o=e.request)||void 0===o?void 0:o.fields)||{})),i=null!=l&&l.stack?"".concat(l.toString(),"\n").concat(l.stack):l.toString(),a="".concat("Error produced by loader in render.ssr middleware","\n").concat(n,"\n").concat(i);e.miolo.logger.error(a)}return t}));return function(r){return e.apply(this,arguments)}}(),a=(e,r)=>{var t,o,n=!0===(null==e||null===(t=e.session)||void 0===t?void 0:t.authenticated);return{user:null==e||null===(o=e.session)||void 0===o?void 0:o.user,authenticated:n,ssr_data:r,extra:null==e?void 0:e.extra}},l=(e,i)=>{var a="",l={hostname:null==t?void 0:t.hostname,port:null==t?void 0:t.port,catcher_url:null==t?void 0:t.catcher_url,auth_type:o};try{a=D(r.ssr.renderer(e,i,l))}catch(u){e.miolo.logger.error("Missing renderer in render.ssr middleware"),e.miolo.logger.error(u),a="\n <div>\n MIOLO: Missing SSR renderer: ".concat(u.toString(),"\n </div> \n ")}return n.replace("{context}",JSON.stringify(i,null,2)).replace("{children}",a)};function u(){return(u=X((function*(e){var r=yield i(e),t=a(e,r),o=l(e,t);e.miolo.logger.debug("render_ssr_middleware() rendered HTML (".concat(Buffer.byteLength(o,"utf8")," bytes total) ")),e.body=o}))).apply(this,arguments)}e.use((function(e){return u.apply(this,arguments)}))}(l,i,u.http,u.auth_type):null!=i&&i.html?function(e,r){var t=(null==r?void 0:r.html)||Ue;t.indexOf("{context}")<0&&e.context.miolo.logger.error(m("Provided HTML for rendering has no {context} template variable")),t.indexOf("{children}")<0&&e.context.miolo.logger.error(m("Provided HTML for rendering has no {children} template variable"));var o=e=>{var r,t,o=!0===(null==e||null===(r=e.session)||void 0===r?void 0:r.authenticated);return{user:null==e||null===(t=e.session)||void 0===t?void 0:t.user,authenticated:o,ssr_data:void 0,extra:null==e?void 0:e.extra}},n=e=>t.replace("{context}",JSON.stringify(e,null,2));function i(){return(i=X((function*(e){var r=o(e),t=n(r);e.miolo.logger.debug("render_html_middleware() rendered HTML (".concat(Buffer.byteLength(t,"utf8")," bytes total) ")),e.body=t}))).apply(this,arguments)}var a=new J;a.get("/",(function(e){return i.apply(this,arguments)})),e.use(a.routes())}(l,i):function(e,r){function t(){return(t=X((function*(e){e.miolo.logger.debug("render_404_middleware() Not FOUND ".concat(e.url," ")),e.body={},e.response.status=404,e.response.body="Resource Not Found"}))).apply(this,arguments)}var o=new J;o.get("/",(function(e){return t.apply(this,arguments)})),e.use(o.routes())}(l);var g=function(){var r=X((function*(){var r=e.createServer(l.callback());yield((e,r,t)=>new Promise(((o,n)=>{e.listen(r,t,(e=>{e?n(e):o()}))})))(r,u.http.port,u.http.hostname),l.context.miolo.logger.info("miolo is listening on ".concat(u.http.hostname,":").concat(u.http.port)),l.server=r;var o=t({server:r});return l.stop_server=X((function*(){yield o.terminate(),l.context.miolo.logger.info("miolo has been shutdowned from ".concat(u.http.hostname,":").concat(u.http.port))})),Ie(l,null==u?void 0:u.cron),l}));return function(){return r.apply(this,arguments)}}();return l.run=g,l}export{He as miolo};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* miolo v0.7.
|
|
2
|
+
* miolo v0.7.7
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Donato Lorenzo <donato@afialapis.com>
|
|
5
5
|
*
|
|
@@ -417,27 +417,30 @@ function init_config(config) {
|
|
|
417
417
|
function init_emailer(options, defaults) {
|
|
418
418
|
var silent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
419
419
|
var nmailer = nodemailer.createTransport(options, defaults);
|
|
420
|
-
function send_email(
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
420
|
+
function send_email(_x) {
|
|
421
|
+
return _send_email.apply(this, arguments);
|
|
422
|
+
}
|
|
423
|
+
function _send_email() {
|
|
424
|
+
_send_email = _asyncToGenerator(function* (mail) {
|
|
425
|
+
if (silent) {
|
|
426
|
+
console.info('*********************************');
|
|
427
|
+
console.info('This mail will not be send (emailing is disabled):');
|
|
428
|
+
console.info(mail);
|
|
429
|
+
console.info('*********************************');
|
|
430
|
+
} else {
|
|
431
|
+
try {
|
|
432
|
+
var info = nmailer.sendMail(mail);
|
|
433
|
+
info.ok = info !== null && info !== void 0 && info.messageId ? true : false;
|
|
434
|
+
return info;
|
|
435
|
+
} catch (error) {
|
|
436
|
+
return {
|
|
437
|
+
error,
|
|
438
|
+
ok: false
|
|
439
|
+
};
|
|
440
|
+
}
|
|
438
441
|
}
|
|
439
|
-
|
|
440
|
-
|
|
442
|
+
});
|
|
443
|
+
return _send_email.apply(this, arguments);
|
|
441
444
|
}
|
|
442
445
|
function verify_emailer() {
|
|
443
446
|
console.info('[miolo][Verify][MAILER] Verifying...');
|