miolo 0.3.2 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cli/miolo.cli.iife.bundle.js +1 -1
  2. package/dist/cli/miolo.cli.iife.bundle.min.js +1 -1
  3. package/dist/cli/miolo.cli.iife.js +1 -1
  4. package/dist/cli/miolo.cli.iife.min.js +1 -1
  5. package/dist/cli/miolo.cli.min.mjs +1 -1
  6. package/dist/cli/miolo.cli.mjs +1 -1
  7. package/dist/cli/miolo.cli.umd.bundle.js +1 -1
  8. package/dist/cli/miolo.cli.umd.bundle.min.js +1 -1
  9. package/dist/cli/miolo.cli.umd.js +1 -1
  10. package/dist/cli/miolo.cli.umd.min.js +1 -1
  11. package/dist/cli-react/miolo.cli-react.iife.bundle.js +1670 -1677
  12. package/dist/cli-react/miolo.cli-react.iife.bundle.js.map +1 -1
  13. package/dist/cli-react/miolo.cli-react.iife.bundle.min.js +42 -49
  14. package/dist/cli-react/miolo.cli-react.iife.js +22 -11
  15. package/dist/cli-react/miolo.cli-react.iife.js.map +1 -1
  16. package/dist/cli-react/miolo.cli-react.iife.min.js +2 -2
  17. package/dist/cli-react/miolo.cli-react.min.mjs +2 -2
  18. package/dist/cli-react/miolo.cli-react.mjs +23 -9
  19. package/dist/cli-react/miolo.cli-react.mjs.map +1 -1
  20. package/dist/cli-react/miolo.cli-react.umd.bundle.js +1669 -1676
  21. package/dist/cli-react/miolo.cli-react.umd.bundle.js.map +1 -1
  22. package/dist/cli-react/miolo.cli-react.umd.bundle.min.js +42 -49
  23. package/dist/cli-react/miolo.cli-react.umd.js +24 -13
  24. package/dist/cli-react/miolo.cli-react.umd.js.map +1 -1
  25. package/dist/cli-react/miolo.cli-react.umd.min.js +2 -2
  26. package/dist/server/miolo.server.cjs +216 -265
  27. package/dist/server/miolo.server.min.mjs +2 -2
  28. package/dist/server/miolo.server.mjs +169 -227
  29. package/dist/server/miolo.server.mjs.map +1 -1
  30. package/dist/server/miolo.server.node.mjs +217 -265
  31. package/package.json +8 -9
@@ -1,5 +1,5 @@
1
1
  /**
2
- * miolo v0.3.2
2
+ * miolo v0.3.5
3
3
  *
4
4
  * Copyright (c) Donato Lorenzo <donato@afialapis.com>
5
5
  *
@@ -11,20 +11,14 @@
11
11
  'use strict';
12
12
 
13
13
  var Koa = require('koa');
14
- var router = require('calustra/router');
15
14
  var merge = require('assign-deep');
16
15
  var path = require('node:path');
17
16
  var node_url = require('node:url');
18
- var os = require('node:os');
19
- var diskspace = require('diskspace');
20
- var tinguir = require('tinguir');
21
- var cron = require('cron');
22
17
  var calustra = require('calustra');
23
18
  var nodemailer = require('nodemailer');
19
+ var tinguir = require('tinguir');
24
20
  var util = require('node:util');
25
21
  var winston = require('winston');
26
- var koa_cors = require('@koa/cors');
27
- var koa_proxy = require('koa-proxies');
28
22
  var koa_body_parser = require('koa-better-body');
29
23
  var koa_convert = require('koa-convert');
30
24
  var koa_compress = require('koa-compress');
@@ -37,9 +31,14 @@ var koa_session = require('koa-session');
37
31
  var RedisStore = require('koa-redis');
38
32
  var Router = require('@koa/router');
39
33
  var node_fs = require('node:fs');
34
+ var router = require('calustra/router');
35
+ var koa_cors = require('@koa/cors');
36
+ var koa_proxy = require('koa-proxies');
37
+ var os = require('node:os');
38
+ var diskspace = require('diskspace');
39
+ var cron = require('cron');
40
40
  var React = require('react');
41
- var server = require('react-router-dom/server');
42
- var server$1 = require('react-dom/server');
41
+ var server = require('react-dom/server');
43
42
  var jwt = require('jwt-simple');
44
43
  var auth = require('basic-auth');
45
44
  var passport$1 = require('koa-passport');
@@ -671,43 +670,6 @@ function init_config(config) {
671
670
  return merge(base_config, config);
672
671
  }
673
672
 
674
- function init_sys_check_and_log(logger) {
675
- function toMB(bytes) {
676
- if (!bytes) return 0;
677
- return bytes / 1000000;
678
- }
679
- function toGB(kbytes) {
680
- if (!kbytes) return 0;
681
- return kbytes / 1000000;
682
- }
683
- function sys_check_and_log() {
684
- var used = Math.round(toMB(os.freemem()), 2);
685
- var total = Math.round(toMB(os.totalmem()), 2);
686
- var perc = Math.round(used * 100 / total, 2);
687
- if (perc > 80) {
688
- logger.error("[SERVER][" + tinguir.cyan('SysCheck') + "] RAM " + tinguir.yellow(used) + " MB used of " + tinguir.green(total) + " MB (" + tinguir.yellow(perc) + " %)");
689
- } else {
690
- logger.info("[SERVER][" + tinguir.cyan('SysCheck') + "] RAM " + tinguir.yellow(used) + " MB used of " + tinguir.green(total) + " MB (" + tinguir.yellow(perc) + " %)");
691
- }
692
- diskspace.check('/', function (err, result) {
693
- var used = Math.round(toGB(result.used), 2);
694
- var total = Math.round(toGB(result.total), 2);
695
- var free = Math.round(toGB(result.free), 2);
696
- if (free < 1) {
697
- logger.error("[SERVER][" + tinguir.cyan('SysCheck') + "] DISK " + tinguir.yellow(used) + " GB used of " + tinguir.green(total) + " GB (" + tinguir.yellow(free) + " GB free)");
698
- } else {
699
- logger.info("[SERVER][" + tinguir.cyan('SysCheck') + "] DISK " + tinguir.yellow(used) + " GB used of " + tinguir.green(total) + " GB (" + tinguir.yellow(free) + " GB free)");
700
- }
701
- });
702
- }
703
- return sys_check_and_log;
704
- }
705
-
706
- function init_cron(logger) {
707
- var sys_check_and_log = init_sys_check_and_log(logger);
708
- new cron.CronJob('30 * * * *', sys_check_and_log, null, true, 'Europe/Madrid');
709
- }
710
-
711
673
  function init_emailer(options, defaults, silent) {
712
674
  if (silent === void 0) {
713
675
  silent = false;
@@ -929,75 +891,6 @@ var init_context_middleware = function init_context_middleware(app, config) {
929
891
  app.context.miolo = mioloContext;
930
892
  };
931
893
 
932
- var _if_options = function _if_options(http, field, callback) {
933
- try {
934
- var val = http[field];
935
- if (val != undefined && val != false) {
936
- return callback(val);
937
- }
938
- } catch (_) {}
939
- };
940
- var _cors_options = function _cors_options(options) {
941
- if (typeof options == 'object') {
942
- return options;
943
- }
944
- return {};
945
- };
946
- var _proxy_options = function _proxy_options(options) {
947
- var _options, _options2, _options3, _options4;
948
- if (options == undefined) {
949
- options = {};
950
- }
951
- var tpath = ((_options = options) == null ? void 0 : _options.path) || '/';
952
- var target = ((_options2 = options) == null ? void 0 : _options2.target) || "https://proxy.miolo.com";
953
- var changeOrigin = ((_options3 = options) == null ? void 0 : _options3.changeOrigin) != undefined ? options.changeOrigin : true;
954
- var logs = ((_options4 = options) == null ? void 0 : _options4.logs) != undefined ? options.logs : true;
955
- var toptions = {
956
- target: target,
957
- changeOrigin: changeOrigin,
958
- logs: logs
959
- };
960
- return [tpath, toptions];
961
- };
962
- var init_headers_middleware = function init_headers_middleware(app, http) {
963
- var logger = app.context.miolo.logger;
964
- _if_options(http, 'cors', function (options) {
965
- if (options == 'simple') {
966
- logger.debug("Setting CORS the simple way");
967
- app.use( /*#__PURE__*/function () {
968
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, next) {
969
- return _regeneratorRuntime().wrap(function _callee$(_context) {
970
- while (1) switch (_context.prev = _context.next) {
971
- case 0:
972
- ctx.set('Access-Control-Allow-Origin', '*');
973
- ctx.set('Access-Control-Expose-Headers', 'SourceMap,X-SourceMap');
974
- _context.next = 4;
975
- return next();
976
- case 4:
977
- case "end":
978
- return _context.stop();
979
- }
980
- }, _callee);
981
- }));
982
- return function (_x, _x2) {
983
- return _ref.apply(this, arguments);
984
- };
985
- }());
986
- } else {
987
- var coptions = _cors_options(options);
988
- logger.debug("Setting CORS headers for " + JSON.stringify(coptions));
989
- app.use(koa_cors(coptions));
990
- }
991
- });
992
- _if_options(http, 'proxy', function (options) {
993
- var _proxy_options2 = _proxy_options(options),
994
- tpath = _proxy_options2[0],
995
- toptions = _proxy_options2[1];
996
- logger.debug("Setting Proxy for " + tpath + " to " + toptions.target + " ");
997
- app.use(koa_proxy(tpath, toptions));
998
- });
999
- };
1000
-
1001
894
  var init_body_middleware = function init_body_middleware(app) {
1002
895
  // Compress
1003
896
 
@@ -1125,36 +1018,6 @@ var init_static_middleware = function init_static_middleware(app, config) {
1125
1018
  }
1126
1019
  };
1127
1020
 
1128
- var init_extra_middlewares = function init_extra_middlewares(app, middlewares) {
1129
- if (middlewares == undefined || middlewares.length == 0) {
1130
- return;
1131
- }
1132
- middlewares.map(function (midw) {
1133
- function extra_middleware(_x, _x2) {
1134
- return _extra_middleware.apply(this, arguments);
1135
- }
1136
- function _extra_middleware() {
1137
- _extra_middleware = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, next) {
1138
- return _regeneratorRuntime().wrap(function _callee$(_context) {
1139
- while (1) switch (_context.prev = _context.next) {
1140
- case 0:
1141
- _context.next = 2;
1142
- return midw(ctx);
1143
- case 2:
1144
- _context.next = 4;
1145
- return next();
1146
- case 4:
1147
- case "end":
1148
- return _context.stop();
1149
- }
1150
- }, _callee);
1151
- }));
1152
- return _extra_middleware.apply(this, arguments);
1153
- }
1154
- app.use(extra_middleware);
1155
- });
1156
- };
1157
-
1158
1021
  var REQUEST_COUNTER = 1;
1159
1022
 
1160
1023
  /**
@@ -1288,40 +1151,140 @@ function init_route_catch_js_error(app, route) {
1288
1151
  app.use(catch_js_error_router.routes());
1289
1152
  }
1290
1153
 
1291
- var __my_filename = node_url.fileURLToPath(require('url').pathToFileURL(__filename).toString());
1292
- var __my_dirname = path.dirname(__my_filename);
1293
- var indexHTMLPath = path.resolve(__my_dirname, 'fallback_index.html');
1294
- var indexHTML = node_fs.readFileSync(indexHTMLPath, 'utf8');
1295
- function init_route_html_render(app, html) {
1296
- // Server-side render
1297
- function html_render(_x) {
1298
- return _html_render.apply(this, arguments);
1154
+ var init_extra_middlewares = function init_extra_middlewares(app, middlewares) {
1155
+ if (middlewares == undefined || middlewares.length == 0) {
1156
+ return;
1299
1157
  }
1300
- function _html_render() {
1301
- _html_render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
1302
- var logger, reqid, ip, method, url, what;
1303
- return _regeneratorRuntime().wrap(function _callee$(_context) {
1304
- while (1) switch (_context.prev = _context.next) {
1305
- case 0:
1306
- logger = ctx.miolo.logger;
1307
- reqid = ctx.requestId;
1308
- ip = ctx.headers["x-real-ip"] || '127.0.0.1';
1309
- method = ctx.request.method;
1310
- url = ctx.request.url;
1311
- what = html != undefined ? 'provided html' : 'fallback page';
1312
- logger.info(reqid + " - " + ip + " : " + tinguir.cyan(method) + " " + tinguir.cyan(url) + " => Rendering " + what);
1313
- ctx.body = html || indexHTML;
1314
- case 8:
1315
- case "end":
1316
- return _context.stop();
1317
- }
1318
- }, _callee);
1319
- }));
1320
- return _html_render.apply(this, arguments);
1158
+ middlewares.map(function (midw) {
1159
+ function extra_middleware(_x, _x2) {
1160
+ return _extra_middleware.apply(this, arguments);
1161
+ }
1162
+ function _extra_middleware() {
1163
+ _extra_middleware = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, next) {
1164
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
1165
+ while (1) switch (_context.prev = _context.next) {
1166
+ case 0:
1167
+ _context.next = 2;
1168
+ return midw(ctx);
1169
+ case 2:
1170
+ _context.next = 4;
1171
+ return next();
1172
+ case 4:
1173
+ case "end":
1174
+ return _context.stop();
1175
+ }
1176
+ }, _callee);
1177
+ }));
1178
+ return _extra_middleware.apply(this, arguments);
1179
+ }
1180
+ app.use(extra_middleware);
1181
+ });
1182
+ };
1183
+
1184
+ var _if_options = function _if_options(http, field, callback) {
1185
+ try {
1186
+ var val = http[field];
1187
+ if (val != undefined && val != false) {
1188
+ return callback(val);
1189
+ }
1190
+ } catch (_) {}
1191
+ };
1192
+ var _cors_options = function _cors_options(options) {
1193
+ if (typeof options == 'object') {
1194
+ return options;
1321
1195
  }
1322
- var html_render_router = new Router();
1323
- html_render_router.get('/', html_render);
1324
- app.use(html_render_router.routes());
1196
+ return {};
1197
+ };
1198
+ var _proxy_options = function _proxy_options(options) {
1199
+ var _options, _options2, _options3, _options4;
1200
+ if (options == undefined) {
1201
+ options = {};
1202
+ }
1203
+ var tpath = ((_options = options) == null ? void 0 : _options.path) || '/';
1204
+ var target = ((_options2 = options) == null ? void 0 : _options2.target) || "https://proxy.miolo.com";
1205
+ var changeOrigin = ((_options3 = options) == null ? void 0 : _options3.changeOrigin) != undefined ? options.changeOrigin : true;
1206
+ var logs = ((_options4 = options) == null ? void 0 : _options4.logs) != undefined ? options.logs : true;
1207
+ var toptions = {
1208
+ target: target,
1209
+ changeOrigin: changeOrigin,
1210
+ logs: logs
1211
+ };
1212
+ return [tpath, toptions];
1213
+ };
1214
+ var init_headers_middleware = function init_headers_middleware(app, http) {
1215
+ var logger = app.context.miolo.logger;
1216
+ _if_options(http, 'cors', function (options) {
1217
+ if (options == 'simple') {
1218
+ logger.debug("Setting CORS the simple way");
1219
+ app.use( /*#__PURE__*/function () {
1220
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx, next) {
1221
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
1222
+ while (1) switch (_context.prev = _context.next) {
1223
+ case 0:
1224
+ ctx.set('Access-Control-Allow-Origin', '*');
1225
+ ctx.set('Access-Control-Expose-Headers', 'SourceMap,X-SourceMap');
1226
+ _context.next = 4;
1227
+ return next();
1228
+ case 4:
1229
+ case "end":
1230
+ return _context.stop();
1231
+ }
1232
+ }, _callee);
1233
+ }));
1234
+ return function (_x, _x2) {
1235
+ return _ref.apply(this, arguments);
1236
+ };
1237
+ }());
1238
+ } else {
1239
+ var coptions = _cors_options(options);
1240
+ logger.debug("Setting CORS headers for " + JSON.stringify(coptions));
1241
+ app.use(koa_cors(coptions));
1242
+ }
1243
+ });
1244
+ _if_options(http, 'proxy', function (options) {
1245
+ var _proxy_options2 = _proxy_options(options),
1246
+ tpath = _proxy_options2[0],
1247
+ toptions = _proxy_options2[1];
1248
+ logger.debug("Setting Proxy for " + tpath + " to " + toptions.target + " ");
1249
+ app.use(koa_proxy(tpath, toptions));
1250
+ });
1251
+ };
1252
+
1253
+ function init_sys_check_and_log(logger) {
1254
+ function toMB(bytes) {
1255
+ if (!bytes) return 0;
1256
+ return bytes / 1000000;
1257
+ }
1258
+ function toGB(kbytes) {
1259
+ if (!kbytes) return 0;
1260
+ return kbytes / 1000000;
1261
+ }
1262
+ function sys_check_and_log() {
1263
+ var used = Math.round(toMB(os.freemem()), 2);
1264
+ var total = Math.round(toMB(os.totalmem()), 2);
1265
+ var perc = Math.round(used * 100 / total, 2);
1266
+ if (perc > 80) {
1267
+ logger.error("[SERVER][" + tinguir.cyan('SysCheck') + "] RAM " + tinguir.yellow(used) + " MB used of " + tinguir.green(total) + " MB (" + tinguir.yellow(perc) + " %)");
1268
+ } else {
1269
+ logger.info("[SERVER][" + tinguir.cyan('SysCheck') + "] RAM " + tinguir.yellow(used) + " MB used of " + tinguir.green(total) + " MB (" + tinguir.yellow(perc) + " %)");
1270
+ }
1271
+ diskspace.check('/', function (err, result) {
1272
+ var used = Math.round(toGB(result.used), 2);
1273
+ var total = Math.round(toGB(result.total), 2);
1274
+ var free = Math.round(toGB(result.free), 2);
1275
+ if (free < 1) {
1276
+ logger.error("[SERVER][" + tinguir.cyan('SysCheck') + "] DISK " + tinguir.yellow(used) + " GB used of " + tinguir.green(total) + " GB (" + tinguir.yellow(free) + " GB free)");
1277
+ } else {
1278
+ logger.info("[SERVER][" + tinguir.cyan('SysCheck') + "] DISK " + tinguir.yellow(used) + " GB used of " + tinguir.green(total) + " GB (" + tinguir.yellow(free) + " GB free)");
1279
+ }
1280
+ });
1281
+ }
1282
+ return sys_check_and_log;
1283
+ }
1284
+
1285
+ function init_cron(logger) {
1286
+ var sys_check_and_log = init_sys_check_and_log(logger);
1287
+ new cron.CronJob('30 * * * *', sys_check_and_log, null, true, 'Europe/Madrid');
1325
1288
  }
1326
1289
 
1327
1290
  function miolo(_x, _x2, _x3) {
@@ -1330,26 +1293,12 @@ function miolo(_x, _x2, _x3) {
1330
1293
  function _miolo() {
1331
1294
  _miolo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(sconfig, render, callback) {
1332
1295
  var _config$http, _config$auth, _config$auth2, _config$auth3;
1333
- var app, config, catcher_url, _yield$import, init_guest_auth_middleware, _yield$import2, init_basic_auth_middleware, _yield$import3, init_passport_auth_middleware, conn, extra_middlewares;
1296
+ var app, config, catcher_url, _yield$import, init_guest_auth_middleware, _yield$import2, init_basic_auth_middleware, _yield$import3, init_passport_auth_middleware, conn, extra_middlewares, _yield$import4, init_route_html_render;
1334
1297
  return _regeneratorRuntime().wrap(function _callee$(_context) {
1335
1298
  while (1) switch (_context.prev = _context.next) {
1336
1299
  case 0:
1337
1300
  app = new Koa(); // Init some pieces
1338
- config = init_config(sconfig); //const emailer = init_emailer(config.mail.options, config.mail.defaults)
1339
- //const logger = init_logger(config.log, emailer)
1340
- //config.db.connection.options.log= logger
1341
- // // attach to app calustra's db methods
1342
- // initCalustraDbContext(app, config.db)
1343
- //
1344
- // // attach to app some custom miolo methods
1345
- // app.context.miolo = {
1346
- // config: {...config},
1347
- // emailer,
1348
- // logger,
1349
- // db: app.context.db
1350
- // }
1351
- //
1352
- // attach to app some custom miolo methods
1301
+ config = init_config(sconfig); // attach to app some custom miolo methods
1353
1302
  init_context_middleware(app, config);
1354
1303
 
1355
1304
  // Compress and body parser
@@ -1429,11 +1378,23 @@ function _miolo() {
1429
1378
  init_headers_middleware(app, config.http);
1430
1379
 
1431
1380
  // Middleware for html render
1432
- if (render == undefined || render.html != undefined) {
1433
- init_route_html_render(app, render == null ? void 0 : render.html);
1434
- } else if (render.middleware != undefined) {
1381
+ if (!(render == undefined || render.html != undefined)) {
1382
+ _context.next = 41;
1383
+ break;
1384
+ }
1385
+ _context.next = 36;
1386
+ return Promise.resolve().then(function () { return html_render; });
1387
+ case 36:
1388
+ _yield$import4 = _context.sent;
1389
+ init_route_html_render = _yield$import4.init_route_html_render;
1390
+ init_route_html_render(app, render == null ? void 0 : render.html);
1391
+ _context.next = 42;
1392
+ break;
1393
+ case 41:
1394
+ if (render.middleware != undefined) {
1435
1395
  app.use(render.middleware);
1436
1396
  }
1397
+ case 42:
1437
1398
  app.listen(config.http.port, config.http.hostname, function () {
1438
1399
  app.context.miolo.logger.info("miolo is listening on " + config.http.hostname + ":" + config.http.port);
1439
1400
  init_cron(app.context.miolo.logger);
@@ -1442,7 +1403,7 @@ function _miolo() {
1442
1403
  }
1443
1404
  });
1444
1405
  return _context.abrupt("return", app);
1445
- case 36:
1406
+ case 44:
1446
1407
  case "end":
1447
1408
  return _context.stop();
1448
1409
  }
@@ -1451,77 +1412,22 @@ function _miolo() {
1451
1412
  return _miolo.apply(this, arguments);
1452
1413
  }
1453
1414
 
1454
- var Context = /*#__PURE__*/React.createContext();
1455
-
1456
- var AppContext = function AppContext(_ref) {
1457
- var context = _ref.context,
1458
- children = _ref.children;
1459
- var _useState = React.useState(context),
1460
- innerContext = _useState[0],
1461
- setInnerContext = _useState[1];
1462
- React.useEffect(function () {
1463
- setInnerContext(context);
1464
- }, [context]);
1465
- return /*#__PURE__*/React.createElement(Context.Provider, {
1466
- value: {
1467
- context: innerContext,
1468
- setContext: setInnerContext
1469
- }
1470
- }, children);
1471
- };
1472
-
1473
- var AppSsr = function AppSsr(_ref) {
1474
- var url = _ref.url,
1475
- context = _ref.context,
1476
- children = _ref.children;
1477
- return /*#__PURE__*/React.createElement(server.StaticRouter, {
1478
- location: url
1479
- }, /*#__PURE__*/React.createElement(AppContext, {
1480
- context: context
1481
- }, children));
1482
- };
1483
-
1484
1415
  var ErrMessage = function ErrMessage(_ref) {
1485
1416
  _ref.ctx;
1486
1417
  var error = _ref.error;
1487
1418
  return /*#__PURE__*/React.createElement("div", null, "[MIOLO-SERVER_TOOLS] Missing SSR renderer: " + error.toString());
1488
1419
  };
1489
1420
 
1490
- var html = "\n\t\t<!DOCTYPE html>\n\t\t<html lang=\"en\">\n\t\t<head>\n\t\t\t<meta charset=\"utf-8\">\n\t\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\t\t<title>miolo</title>\n\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t<meta name=\"description\" content=\"miolo\" />\n\t\t\t<meta name=\"keywords\" content=\"miolo web\" />\n\t\t\t<meta name=\"author\" content=\"miolo.afialapis.com\" />\n\n\t\t\t<!-- Touch Icons - iOS and Android 2.1+ 180x180 pixels in size. --> \n\t\t\t<!--<link rel=\"apple-touch-icon-precomposed\" href=\"/favicon.ico\"/>-->\n\t\t\t<!-- Firefox, Chrome, Safari, IE 11+ and Opera. 196x196 pixels in size. -->\n\t\t\t<link rel=\"icon\" href=\"/favicon.ico\"/>\n\n\t\t\t{styles}\n\n\t\t\t<script>\n\t\t\t\twindow.__CONTEXT = {context}\n\t\t\t</script>\t\t\n\t\t</head>\n\n\t\t<body>\n\t\t\t<div id=\"root\">{children}</div>\n\t\t\t{bundle}\n\t\t</body>\n\t\t</html>\n ";
1421
+ var html = "\n\t\t<!DOCTYPE html>\n\t\t<html lang=\"en\">\n\t\t<head>\n\t\t\t<meta charset=\"utf-8\">\n\t\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t\t\t<title>miolo</title>\n\t\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n\t\t\t<meta name=\"description\" content=\"miolo\" />\n\t\t\t<meta name=\"keywords\" content=\"miolo web\" />\n\t\t\t<meta name=\"author\" content=\"miolo.afialapis.com\" />\n\n\t\t\t<!-- Touch Icons - iOS and Android 2.1+ 180x180 pixels in size. --> \n\t\t\t<!--<link rel=\"apple-touch-icon-precomposed\" href=\"/favicon.ico\"/>-->\n\t\t\t<!-- Firefox, Chrome, Safari, IE 11+ and Opera. 196x196 pixels in size. -->\n\t\t\t<link rel=\"icon\" href=\"/favicon.ico\"/>\n\n\t\t\t<script>\n\t\t\t\twindow.__CONTEXT = {context}\n\t\t\t</script>\t\t\n\t\t</head>\n\n\t\t<body>\n\t\t\t<div id=\"root\">{children}</div>\n\t\t</body>\n\t\t</html>\n ";
1491
1422
 
1492
1423
  function init_render_middleware(loader, renderer, options) {
1493
1424
  // parse options
1494
- var html$1 = html,
1495
- port = 8000,
1496
- use_css = true;
1425
+ var html$1 = html;
1497
1426
  try {
1498
1427
  if ((options == null ? void 0 : options.html) != undefined) {
1499
1428
  html$1 = options.html;
1500
1429
  }
1501
1430
  } catch (_) {}
1502
- try {
1503
- if ((options == null ? void 0 : options.port) != undefined) {
1504
- if (!isNaN(parseInt(options.port))) {
1505
- port = parseInt(options.port);
1506
- }
1507
- }
1508
- } catch (_) {}
1509
- try {
1510
- use_css = (options == null ? void 0 : options.css) !== false;
1511
- } catch (_) {}
1512
- var bundleURL = process.env.NODE_ENV === 'development' ? "<script src=\"//localhost:" + port + "/build/bundle.js\" async></script>" : '';
1513
- var cssURL = use_css ? process.env.NODE_ENV === 'development' ? "<link href=\"//localhost:" + port + "/build/bundle.css\" rel=\"stylesheet\" media=\"all\"></link>" : '' : '';
1514
- var def_renderer = function def_renderer(ctx) {
1515
- try {
1516
- return renderer(ctx);
1517
- } catch (error) {
1518
- ctx.miolo.logger.error('Missing renderer in the render middleware');
1519
- return ErrMessage({
1520
- ctx: ctx,
1521
- error: error
1522
- });
1523
- }
1524
- };
1525
1431
  var def_loader = /*#__PURE__*/function () {
1526
1432
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
1527
1433
  var res;
@@ -1566,7 +1472,6 @@ function init_render_middleware(loader, renderer, options) {
1566
1472
  return def_loader(ctx);
1567
1473
  case 2:
1568
1474
  ssr_data = _context2.sent;
1569
- //const ssr_comp = def_renderer(ctx)
1570
1475
  isAuthed = false;
1571
1476
  try {
1572
1477
  isAuthed = (ctx == null ? void 0 : ctx.isAuthenticated()) === true;
@@ -1593,15 +1498,21 @@ function init_render_middleware(loader, renderer, options) {
1593
1498
  ssr_data: ssr_data,
1594
1499
  extra: ctx == null ? void 0 : ctx.extra
1595
1500
  };
1596
- ssr_html = server$1.renderToString( /*#__PURE__*/React.createElement(AppSsr, {
1597
- url: ctx.url,
1598
- context: context
1599
- }, function () {
1600
- return def_renderer(ctx);
1601
- }));
1602
- parsed_html = html$1.replace('{context}', JSON.stringify(context, null, 2)).replace(/{bundleURL}/g, bundleURL).replace('{children}', ssr_html).replace('{styles}', cssURL).replace('{bundle}', bundleURL);
1501
+ ssr_html = '';
1502
+ try {
1503
+ ssr_html = server.renderToString(renderer(ctx, context));
1504
+ } catch (error) {
1505
+ ctx.miolo.logger.error('Missing renderer in the render middleware');
1506
+ ctx.miolo.logger.error(error);
1507
+ ssr_html = server.renderToString( /*#__PURE__*/React.createElement(ErrMessage, {
1508
+ ctx: ctx,
1509
+ error: error
1510
+ }));
1511
+ }
1512
+ parsed_html = html$1.replace('{context}', JSON.stringify(context, null, 2)).replace('{children}', ssr_html);
1513
+ ctx.miolo.logger.debug("render_middleware() rendered HTML (" + Buffer.byteLength(ssr_html, 'utf8') + " bytes of SSR content, " + Buffer.byteLength(parsed_html, 'utf8') + " bytes total) ");
1603
1514
  ctx.body = parsed_html;
1604
- case 13:
1515
+ case 15:
1605
1516
  case "end":
1606
1517
  return _context2.stop();
1607
1518
  }
@@ -1884,10 +1795,50 @@ var passport = /*#__PURE__*/Object.freeze({
1884
1795
  init_passport_auth_middleware: init_passport_auth_middleware
1885
1796
  });
1886
1797
 
1798
+ var __my_filename = node_url.fileURLToPath(require('url').pathToFileURL(__filename).toString());
1799
+ var __my_dirname = path.dirname(__my_filename);
1800
+ var indexHTMLPath = path.resolve(__my_dirname, 'fallback_index.html');
1801
+ var indexHTML = node_fs.readFileSync(indexHTMLPath, 'utf8');
1802
+ function init_route_html_render(app, html) {
1803
+ // Server-side render
1804
+ function html_render(_x) {
1805
+ return _html_render.apply(this, arguments);
1806
+ }
1807
+ function _html_render() {
1808
+ _html_render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(ctx) {
1809
+ var logger, reqid, ip, method, url, what;
1810
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
1811
+ while (1) switch (_context.prev = _context.next) {
1812
+ case 0:
1813
+ logger = ctx.miolo.logger;
1814
+ reqid = ctx.requestId;
1815
+ ip = ctx.headers["x-real-ip"] || '127.0.0.1';
1816
+ method = ctx.request.method;
1817
+ url = ctx.request.url;
1818
+ what = html != undefined ? 'provided html' : 'fallback page';
1819
+ logger.info(reqid + " - " + ip + " : " + tinguir.cyan(method) + " " + tinguir.cyan(url) + " => Rendering " + what);
1820
+ ctx.body = html || indexHTML;
1821
+ case 8:
1822
+ case "end":
1823
+ return _context.stop();
1824
+ }
1825
+ }, _callee);
1826
+ }));
1827
+ return _html_render.apply(this, arguments);
1828
+ }
1829
+ var html_render_router = new Router();
1830
+ html_render_router.get('/', html_render);
1831
+ app.use(html_render_router.routes());
1832
+ }
1833
+
1834
+ var html_render = /*#__PURE__*/Object.freeze({
1835
+ __proto__: null,
1836
+ init_route_html_render: init_route_html_render
1837
+ });
1838
+
1887
1839
  Object.defineProperty(exports, 'getConnection', {
1888
1840
  enumerable: true,
1889
1841
  get: function () { return calustra.getConnection; }
1890
1842
  });
1891
- exports.AppSsr = AppSsr;
1892
1843
  exports.init_render_middleware = init_render_middleware;
1893
1844
  exports.miolo = miolo;