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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
2
+ * miolo v0.7.7
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.7.6
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(mail, cb) {
721
- if (silent) {
722
- console.info('*********************************');
723
- console.info('This mail will not be send (emailing is disabled):');
724
- console.info(mail);
725
- console.info('*********************************');
726
- } else {
727
- if (!cb) {
728
- cb = function cb(err, info) {
729
- if (err) {
730
- console.error('NodeMailer error:');
731
- console.error(err);
732
- }
733
- if (info) {
734
- console.log('NodeMailer sent mail:');
735
- console.log(info);
736
- }
737
- };
738
- }
739
- nmailer.sendMail(mail, cb);
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.6
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.6
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(mail, cb) {
421
- if (silent) {
422
- console.info('*********************************');
423
- console.info('This mail will not be send (emailing is disabled):');
424
- console.info(mail);
425
- console.info('*********************************');
426
- } else {
427
- if (!cb) {
428
- cb = function cb(err, info) {
429
- if (err) {
430
- console.error('NodeMailer error:');
431
- console.error(err);
432
- }
433
- if (info) {
434
- console.log('NodeMailer sent mail:');
435
- console.log(info);
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
- nmailer.sendMail(mail, cb);
440
- }
442
+ });
443
+ return _send_email.apply(this, arguments);
441
444
  }
442
445
  function verify_emailer() {
443
446
  console.info('[miolo][Verify][MAILER] Verifying...');