Commit dd1fecf4b663067def5f8cb8fc2a42b3964e8f82

Authored by Adhidarma Hadiwinoto
1 parent f739a26f2a
Exists in master

Dashboard: runtime

Showing 5 changed files with 60 additions and 442 deletions Side-by-side Diff

lib/modem-dashboard/index.js
... ... @@ -11,6 +11,7 @@ const matrix = require('komodo-sdk/matrix');
11 11 const routerSms = require('./router-sms');
12 12 const routerUssd = require('./router-ussd');
13 13 const routerStocks = require('./router-stocks');
  14 +const routerRuntime = require('/router-runtime');
14 15  
15 16 const app = express();
16 17  
... ... @@ -64,6 +65,7 @@ app.get('/', function(req, res, next) {
64 65 app.use('/sms', routerSms);
65 66 app.use('/ussd', routerUssd);
66 67 app.use('/stocks', routerStocks);
  68 +app.use('/runtime', routerRuntime);
67 69  
68 70 const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765;
69 71 app.listen(modem_dashboard_port, function () {
lib/modem-dashboard/router-runtime.js
... ... @@ -0,0 +1,35 @@
  1 +"use strict";
  2 +
  3 +const os = require('os');
  4 +const express = require('express');
  5 +const router = express.Router();
  6 +
  7 +const numeral = require('numeral');
  8 +
  9 +const matrix = require('komodo-sdk/matrix');
  10 +
  11 +function pageRuntime(req, res, next) {
  12 +
  13 + res.render(
  14 + 'runtime.html',
  15 + {
  16 + uptime: numeral(process.uptime()).format(),
  17 + matrix: JSON.stringify(matrix, null, 4),
  18 + memory_usage: JSON.stringify(process.memoryUsage(), null, 4),
  19 + os_info: JSON.stringify({
  20 + uptime: os.uptime(),
  21 + loadavg: os.loadavg(),
  22 + hostname: os.hostname(),
  23 + type: os.type(),
  24 + platform: os.platform(),
  25 + arch: os.arch(),
  26 + release: os.release(),
  27 + totalmem: os.totalmem(),
  28 + }, null, 4),
  29 + }
  30 + )
  31 +}
  32 +
  33 +router.get('/', pageRuntime);
  34 +
  35 +module.exports = router;
lib/modem-dashboard/views/runtime.js
... ... @@ -0,0 +1,22 @@
  1 +{% extends "template.html" %}
  2 +
  3 +{% block content %}
  4 +
  5 +<div class="panel panel-default">
  6 + <div class="panel-body">
  7 + Umur proses: {{ uptime }} detik.
  8 + </div>
  9 +</div>
  10 +
  11 +{% if matrix %}
  12 +<h2 id="matrix">The Matrix</h2>
  13 +<pre>{{ matrix }}</pre>
  14 +{% endif %}
  15 +
  16 +<h2 id="memory_usage">Pemakaian Memori</h2>
  17 +<pre>{{ memory_usage }}</pre>
  18 +
  19 +<h2 id="os_info">Sistem Operasi</h2>
  20 +<pre>{{ os_info }}</pre>
  21 +
  22 +{% endblock %}
... ... @@ -4,17 +4,6 @@
4 4 "lockfileVersion": 1,
5 5 "requires": true,
6 6 "dependencies": {
7   - "@cloudcmd/copy-file": {
8   - "version": "1.1.1",
9   - "resolved": "https://registry.npmjs.org/@cloudcmd/copy-file/-/copy-file-1.1.1.tgz",
10   - "integrity": "sha512-t6pTJdsV0qhh9YX22/Npsv95GqVABc5GRInSK7JSSNIpPLq9TM+K7odYzcOuQRPZAD9OHxZfbYsB4WJOalzqng==",
11   - "requires": {
12   - "es6-promisify": "6.0.0",
13   - "pipe-io": "3.0.3",
14   - "wraptile": "2.0.0",
15   - "zames": "2.0.0"
16   - }
17   - },
18 7 "@serialport/parser-byte-length": {
19 8 "version": "1.0.5",
20 9 "resolved": "https://registry.npmjs.org/@serialport/parser-byte-length/-/parser-byte-length-1.0.5.tgz",
... ... @@ -433,11 +422,6 @@
433 422 "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
434 423 "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
435 424 },
436   - "async": {
437   - "version": "1.0.0",
438   - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
439   - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
440   - },
441 425 "async-each": {
442 426 "version": "1.0.1",
443 427 "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
... ... @@ -483,21 +467,6 @@
483 467 "pascalcase": "0.1.1"
484 468 }
485 469 },
486   - "basic-auth": {
487   - "version": "2.0.0",
488   - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
489   - "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
490   - "requires": {
491   - "safe-buffer": "5.1.1"
492   - },
493   - "dependencies": {
494   - "safe-buffer": {
495   - "version": "5.1.1",
496   - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
497   - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
498   - }
499   - }
500   - },
501 470 "bcrypt-pbkdf": {
502 471 "version": "1.0.2",
503 472 "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
... ... @@ -527,33 +496,6 @@
527 496 "safe-buffer": "5.1.2"
528 497 }
529 498 },
530   - "body-parser": {
531   - "version": "1.18.3",
532   - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
533   - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
534   - "requires": {
535   - "bytes": "3.0.0",
536   - "content-type": "1.0.4",
537   - "debug": "2.6.9",
538   - "depd": "1.1.2",
539   - "http-errors": "1.6.3",
540   - "iconv-lite": "0.4.23",
541   - "on-finished": "2.3.0",
542   - "qs": "6.5.2",
543   - "raw-body": "2.3.3",
544   - "type-is": "1.6.16"
545   - },
546   - "dependencies": {
547   - "debug": {
548   - "version": "2.6.9",
549   - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
550   - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
551   - "requires": {
552   - "ms": "2.0.0"
553   - }
554   - }
555   - }
556   - },
557 499 "brace-expansion": {
558 500 "version": "1.1.11",
559 501 "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
... ... @@ -604,23 +546,6 @@
604 546 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
605 547 "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
606 548 },
607   - "bytewise": {
608   - "version": "1.1.0",
609   - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz",
610   - "integrity": "sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4=",
611   - "requires": {
612   - "bytewise-core": "1.2.3",
613   - "typewise": "1.0.3"
614   - }
615   - },
616   - "bytewise-core": {
617   - "version": "1.2.3",
618   - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz",
619   - "integrity": "sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI=",
620   - "requires": {
621   - "typewise-core": "1.2.0"
622   - }
623   - },
624 549 "cache-base": {
625 550 "version": "1.0.1",
626 551 "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
... ... @@ -660,11 +585,6 @@
660 585 "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
661 586 "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
662 587 },
663   - "charenc": {
664   - "version": "0.0.2",
665   - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
666   - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
667   - },
668 588 "choices-separator": {
669 589 "version": "2.0.0",
670 590 "resolved": "https://registry.npmjs.org/choices-separator/-/choices-separator-2.0.0.tgz",
... ... @@ -711,11 +631,6 @@
711 631 "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
712 632 "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE="
713 633 },
714   - "circular-buffer": {
715   - "version": "0.0.6",
716   - "resolved": "https://registry.npmjs.org/circular-buffer/-/circular-buffer-0.0.6.tgz",
717   - "integrity": "sha1-6c+iujGdNw3idDtgCMpTnN3r9TY="
718   - },
719 634 "class-utils": {
720 635 "version": "0.3.6",
721 636 "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
... ... @@ -835,11 +750,6 @@
835 750 "object-visit": "1.0.1"
836 751 }
837 752 },
838   - "colors": {
839   - "version": "1.0.3",
840   - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
841   - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
842   - },
843 753 "combined-stream": {
844 754 "version": "1.0.6",
845 755 "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
... ... @@ -898,11 +808,6 @@
898 808 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
899 809 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
900 810 },
901   - "crc": {
902   - "version": "3.4.4",
903   - "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
904   - "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
905   - },
906 811 "cron": {
907 812 "version": "1.3.0",
908 813 "resolved": "https://registry.npmjs.org/cron/-/cron-1.3.0.tgz",
... ... @@ -911,21 +816,6 @@
911 816 "moment-timezone": "0.5.21"
912 817 }
913 818 },
914   - "crypt": {
915   - "version": "0.0.2",
916   - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
917   - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
918   - },
919   - "currify": {
920   - "version": "2.0.6",
921   - "resolved": "https://registry.npmjs.org/currify/-/currify-2.0.6.tgz",
922   - "integrity": "sha512-F0lbcoBkA2FMcejFeHJkDEhQ1AvVkTpkn9PMzJch+7mHy5WdteZ9t+nhT6cOdga4uRay3rjvprgp8tUkixFy8w=="
923   - },
924   - "cycle": {
925   - "version": "1.0.3",
926   - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
927   - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
928   - },
929 819 "dashdash": {
930 820 "version": "1.14.1",
931 821 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
... ... @@ -998,20 +888,6 @@
998 888 "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
999 889 "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
1000 890 },
1001   - "dot-object": {
1002   - "version": "1.7.0",
1003   - "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-1.7.0.tgz",
1004   - "integrity": "sha512-X91KaxzQmhQvfokXCdM8EkJVDHe5HlffhT4eaS6CsLk8Nhs9ChA6KWmrt8kgCz5rmLKzoOEP2tmRK/kBvomFwg==",
1005   - "requires": {
1006   - "commander": "2.16.0",
1007   - "glob": "7.1.2"
1008   - }
1009   - },
1010   - "double-ended-queue": {
1011   - "version": "2.1.0-0",
1012   - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
1013   - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw="
1014   - },
1015 891 "ecc-jsbn": {
1016 892 "version": "0.1.2",
1017 893 "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
... ... @@ -1045,11 +921,6 @@
1045 921 "resolved": "https://registry.npmjs.org/error-symbol/-/error-symbol-0.1.0.tgz",
1046 922 "integrity": "sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y="
1047 923 },
1048   - "es6-promisify": {
1049   - "version": "6.0.0",
1050   - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.0.tgz",
1051   - "integrity": "sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g=="
1052   - },
1053 924 "escape-html": {
1054 925 "version": "1.0.3",
1055 926 "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
... ... @@ -1270,32 +1141,6 @@
1270 1141 }
1271 1142 }
1272 1143 },
1273   - "express-session": {
1274   - "version": "1.15.6",
1275   - "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz",
1276   - "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==",
1277   - "requires": {
1278   - "cookie": "0.3.1",
1279   - "cookie-signature": "1.0.6",
1280   - "crc": "3.4.4",
1281   - "debug": "2.6.9",
1282   - "depd": "1.1.2",
1283   - "on-headers": "1.0.1",
1284   - "parseurl": "1.3.2",
1285   - "uid-safe": "2.1.5",
1286   - "utils-merge": "1.0.1"
1287   - },
1288   - "dependencies": {
1289   - "debug": {
1290   - "version": "2.6.9",
1291   - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1292   - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1293   - "requires": {
1294   - "ms": "2.0.0"
1295   - }
1296   - }
1297   - }
1298   - },
1299 1144 "extend": {
1300 1145 "version": "3.0.2",
1301 1146 "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
... ... @@ -1330,11 +1175,6 @@
1330 1175 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
1331 1176 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
1332 1177 },
1333   - "eyes": {
1334   - "version": "0.1.8",
1335   - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
1336   - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
1337   - },
1338 1178 "fast-deep-equal": {
1339 1179 "version": "1.1.0",
1340 1180 "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
... ... @@ -1441,14 +1281,6 @@
1441 1281 "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
1442 1282 "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
1443 1283 },
1444   - "fs-copy-file": {
1445   - "version": "2.1.2",
1446   - "resolved": "https://registry.npmjs.org/fs-copy-file/-/fs-copy-file-2.1.2.tgz",
1447   - "integrity": "sha512-h5h3i58/mr86CSJvDLGV0ZEIUj4QfdfKt0NFX6AH4sRTRjs2/d5U1EQt5C9fUV6ZSi7MeSfZRW3LX9HttLXHeg==",
1448   - "requires": {
1449   - "@cloudcmd/copy-file": "1.1.1"
1450   - }
1451   - },
1452 1284 "fs-minipass": {
1453 1285 "version": "1.2.5",
1454 1286 "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
... ... @@ -2271,11 +2103,6 @@
2271 2103 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz",
2272 2104 "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4="
2273 2105 },
2274   - "json-query": {
2275   - "version": "2.2.2",
2276   - "resolved": "https://registry.npmjs.org/json-query/-/json-query-2.2.2.tgz",
2277   - "integrity": "sha1-tlWLijeUzNIXkmqjgCQyS3e0irE="
2278   - },
2279 2106 "json-schema": {
2280 2107 "version": "0.2.3",
2281 2108 "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
... ... @@ -2315,39 +2142,6 @@
2315 2142 "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz",
2316 2143 "integrity": "sha1-MYQz8HQjXbePrlZhoCqMpT7ilc0="
2317 2144 },
2318   - "komodo-sdk": {
2319   - "version": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git#db02042ec8d5d0f3ed3a1df491d0868f71fc7841",
2320   - "requires": {
2321   - "array-unique": "0.3.2",
2322   - "basic-auth": "2.0.0",
2323   - "body-parser": "1.18.3",
2324   - "dot-object": "1.7.0",
2325   - "express": "4.16.3",
2326   - "express-session": "1.15.6",
2327   - "fs-copy-file": "2.1.2",
2328   - "json-query": "2.2.2",
2329   - "lru-cache": "4.1.3",
2330   - "macaddress": "0.2.9",
2331   - "moment": "2.22.2",
2332   - "node-machine-id": "1.1.10",
2333   - "node-natural-sort": "0.8.7",
2334   - "numeral": "2.0.6",
2335   - "nunjucks": "3.1.3",
2336   - "pkginfo": "0.4.1",
2337   - "redis": "2.8.0",
2338   - "request": "2.87.0",
2339   - "sha1": "1.1.1",
2340   - "simple-git": "1.96.0",
2341   - "sort-object": "3.0.2",
2342   - "strftime": "0.10.0",
2343   - "string-natural-compare": "2.0.2",
2344   - "uniqid": "4.1.1",
2345   - "uuid": "3.3.2",
2346   - "winston": "2.4.3",
2347   - "winston-circular-buffer": "1.0.0",
2348   - "winston-daily-rotate-file": "1.7.2"
2349   - }
2350   - },
2351 2145 "lazy-cache": {
2352 2146 "version": "2.0.2",
2353 2147 "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
... ... @@ -2393,20 +2187,6 @@
2393 2187 "warning-symbol": "0.1.0"
2394 2188 }
2395 2189 },
2396   - "lru-cache": {
2397   - "version": "4.1.3",
2398   - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
2399   - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
2400   - "requires": {
2401   - "pseudomap": "1.0.2",
2402   - "yallist": "2.1.2"
2403   - }
2404   - },
2405   - "macaddress": {
2406   - "version": "0.2.9",
2407   - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.9.tgz",
2408   - "integrity": "sha512-k4F1JUof6cQXxNFzx3thLby4oJzXTXQueAOOts944Vqizn+Rjc2QNFenT9FJSLU1CH3PmrHRSyZs2E+Cqw+P2w=="
2409   - },
2410 2190 "map-cache": {
2411 2191 "version": "0.2.2",
2412 2192 "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
... ... @@ -2720,16 +2500,6 @@
2720 2500 "semver": "5.5.0"
2721 2501 }
2722 2502 },
2723   - "node-machine-id": {
2724   - "version": "1.1.10",
2725   - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.10.tgz",
2726   - "integrity": "sha512-6SVxo3Ic2Qc09z1rCJh3No7ubizPLszImsMQnZZWfzeOC6SYU4orN214++c3ikB8uaP/A6dwSlO88A3ohI5oNA=="
2727   - },
2728   - "node-natural-sort": {
2729   - "version": "0.8.7",
2730   - "resolved": "https://registry.npmjs.org/node-natural-sort/-/node-natural-sort-0.8.7.tgz",
2731   - "integrity": "sha512-rMaLlHV5BlnRhIl6jUfgqdLY5U0NJkIxUdOsmpz3Txwh7js4+GwTiomhO8W4rp3SvX1zZ56mx13zfEWESr+qqA=="
2732   - },
2733 2503 "node-pre-gyp": {
2734 2504 "version": "0.10.3",
2735 2505 "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz",
... ... @@ -2903,11 +2673,6 @@
2903 2673 "ee-first": "1.1.1"
2904 2674 }
2905 2675 },
2906   - "on-headers": {
2907   - "version": "1.0.1",
2908   - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
2909   - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
2910   - },
2911 2676 "once": {
2912 2677 "version": "1.4.0",
2913 2678 "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
... ... @@ -2974,16 +2739,6 @@
2974 2739 "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
2975 2740 "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
2976 2741 },
2977   - "pipe-io": {
2978   - "version": "3.0.3",
2979   - "resolved": "https://registry.npmjs.org/pipe-io/-/pipe-io-3.0.3.tgz",
2980   - "integrity": "sha512-7s7HlpMq6WAvd+Xbc2C6NQKEIkDbaSUm0CYtNsjidfyOpbTJmFcvzon47VkMJ6nszEj/X4t4lQs5bqeXgrzMgg=="
2981   - },
2982   - "pkginfo": {
2983   - "version": "0.4.1",
2984   - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
2985   - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
2986   - },
2987 2742 "pointer-symbol": {
2988 2743 "version": "1.0.0",
2989 2744 "resolved": "https://registry.npmjs.org/pointer-symbol/-/pointer-symbol-1.0.0.tgz",
... ... @@ -3201,11 +2956,6 @@
3201 2956 "ipaddr.js": "1.8.0"
3202 2957 }
3203 2958 },
3204   - "pseudomap": {
3205   - "version": "1.0.2",
3206   - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
3207   - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
3208   - },
3209 2959 "pump": {
3210 2960 "version": "2.0.1",
3211 2961 "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
... ... @@ -3235,27 +2985,11 @@
3235 2985 "is-windows": "1.0.2"
3236 2986 }
3237 2987 },
3238   - "random-bytes": {
3239   - "version": "1.0.0",
3240   - "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
3241   - "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
3242   - },
3243 2988 "range-parser": {
3244 2989 "version": "1.2.0",
3245 2990 "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
3246 2991 "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
3247 2992 },
3248   - "raw-body": {
3249   - "version": "2.3.3",
3250   - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
3251   - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
3252   - "requires": {
3253   - "bytes": "3.0.0",
3254   - "http-errors": "1.6.3",
3255   - "iconv-lite": "0.4.23",
3256   - "unpipe": "1.0.0"
3257   - }
3258   - },
3259 2993 "rc": {
3260 2994 "version": "1.2.8",
3261 2995 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
... ... @@ -3367,26 +3101,6 @@
3367 3101 }
3368 3102 }
3369 3103 },
3370   - "redis": {
3371   - "version": "2.8.0",
3372   - "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
3373   - "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
3374   - "requires": {
3375   - "double-ended-queue": "2.1.0-0",
3376   - "redis-commands": "1.3.5",
3377   - "redis-parser": "2.6.0"
3378   - }
3379   - },
3380   - "redis-commands": {
3381   - "version": "1.3.5",
3382   - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz",
3383   - "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA=="
3384   - },
3385   - "redis-parser": {
3386   - "version": "2.6.0",
3387   - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
3388   - "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs="
3389   - },
3390 3104 "regex-not": {
3391 3105 "version": "1.0.2",
3392 3106 "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
... ... @@ -3597,15 +3311,6 @@
3597 3311 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
3598 3312 "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
3599 3313 },
3600   - "sha1": {
3601   - "version": "1.1.1",
3602   - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz",
3603   - "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=",
3604   - "requires": {
3605   - "charenc": "0.0.2",
3606   - "crypt": "0.0.2"
3607   - }
3608   - },
3609 3314 "shallow-clone": {
3610 3315 "version": "1.0.0",
3611 3316 "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz",
... ... @@ -3697,14 +3402,6 @@
3697 3402 "simple-concat": "1.0.0"
3698 3403 }
3699 3404 },
3700   - "simple-git": {
3701   - "version": "1.96.0",
3702   - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.96.0.tgz",
3703   - "integrity": "sha512-+gXuzJFpGtK9zCa7rPMMNs8AF2weWMsB0Vlyym5VkFX2VGQ3VBzKhnxPN//PWrGuPFGQ/u0F1yL6rZoPhj/KPQ==",
3704   - "requires": {
3705   - "debug": "3.1.0"
3706   - }
3707   - },
3708 3405 "snapdragon": {
3709 3406 "version": "0.8.2",
3710 3407 "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
... ... @@ -3807,53 +3504,6 @@
3807 3504 "kind-of": "3.2.2"
3808 3505 }
3809 3506 },
3810   - "sort-asc": {
3811   - "version": "0.2.0",
3812   - "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz",
3813   - "integrity": "sha1-AKSelHvCXVEL/eLLuN/9qfUOsvw="
3814   - },
3815   - "sort-desc": {
3816   - "version": "0.2.0",
3817   - "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz",
3818   - "integrity": "sha1-KAwb2vxld4h87brR7S5BwDeXZkY="
3819   - },
3820   - "sort-object": {
3821   - "version": "3.0.2",
3822   - "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.2.tgz",
3823   - "integrity": "sha1-2vK2k/YR990qIbgrgF5OrCMPdV4=",
3824   - "requires": {
3825   - "bytewise": "1.1.0",
3826   - "get-value": "2.0.6",
3827   - "is-extendable": "0.1.1",
3828   - "sort-asc": "0.2.0",
3829   - "sort-desc": "0.2.0",
3830   - "union-value": "0.2.4"
3831   - },
3832   - "dependencies": {
3833   - "set-value": {
3834   - "version": "0.4.3",
3835   - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
3836   - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
3837   - "requires": {
3838   - "extend-shallow": "2.0.1",
3839   - "is-extendable": "0.1.1",
3840   - "is-plain-object": "2.0.4",
3841   - "to-object-path": "0.3.0"
3842   - }
3843   - },
3844   - "union-value": {
3845   - "version": "0.2.4",
3846   - "resolved": "https://registry.npmjs.org/union-value/-/union-value-0.2.4.tgz",
3847   - "integrity": "sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA=",
3848   - "requires": {
3849   - "arr-union": "3.1.0",
3850   - "get-value": "2.0.6",
3851   - "is-extendable": "0.1.1",
3852   - "set-value": "0.4.3"
3853   - }
3854   - }
3855   - }
3856   - },
3857 3507 "source-map": {
3858 3508 "version": "0.5.7",
3859 3509 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
... ... @@ -3929,11 +3579,6 @@
3929 3579 "tweetnacl": "0.14.5"
3930 3580 }
3931 3581 },
3932   - "stack-trace": {
3933   - "version": "0.0.10",
3934   - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
3935   - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
3936   - },
3937 3582 "static-extend": {
3938 3583 "version": "0.1.2",
3939 3584 "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
... ... @@ -4009,16 +3654,6 @@
4009 3654 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
4010 3655 "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
4011 3656 },
4012   - "strftime": {
4013   - "version": "0.10.0",
4014   - "resolved": "https://registry.npmjs.org/strftime/-/strftime-0.10.0.tgz",
4015   - "integrity": "sha1-s/D6QZKVICpaKJ9ta+n0kJphcZM="
4016   - },
4017   - "string-natural-compare": {
4018   - "version": "2.0.2",
4019   - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-2.0.2.tgz",
4020   - "integrity": "sha1-xc5OJ4q10SZa5vxVQ1rre3b8sAE="
4021   - },
4022 3657 "string-width": {
4023 3658 "version": "1.0.2",
4024 3659 "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
... ... @@ -4252,27 +3887,6 @@
4252 3887 "mime-types": "2.1.19"
4253 3888 }
4254 3889 },
4255   - "typewise": {
4256   - "version": "1.0.3",
4257   - "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz",
4258   - "integrity": "sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE=",
4259   - "requires": {
4260   - "typewise-core": "1.2.0"
4261   - }
4262   - },
4263   - "typewise-core": {
4264   - "version": "1.2.0",
4265   - "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz",
4266   - "integrity": "sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU="
4267   - },
4268   - "uid-safe": {
4269   - "version": "2.1.5",
4270   - "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
4271   - "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
4272   - "requires": {
4273   - "random-bytes": "1.0.0"
4274   - }
4275   - },
4276 3890 "union-value": {
4277 3891 "version": "1.0.0",
4278 3892 "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
... ... @@ -4297,14 +3911,6 @@
4297 3911 }
4298 3912 }
4299 3913 },
4300   - "uniqid": {
4301   - "version": "4.1.1",
4302   - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz",
4303   - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=",
4304   - "requires": {
4305   - "macaddress": "0.2.9"
4306   - }
4307   - },
4308 3914 "unpipe": {
4309 3915 "version": "1.0.0",
4310 3916 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
... ... @@ -4429,35 +4035,6 @@
4429 4035 }
4430 4036 }
4431 4037 },
4432   - "winston": {
4433   - "version": "2.4.3",
4434   - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.3.tgz",
4435   - "integrity": "sha512-GYKuysPz2pxYAVJD2NPsDLP5Z79SDEzPm9/j4tCjkF/n89iBNGBMJcR+dMUqxgPNgoSs6fVygPi+Vl2oxIpBuw==",
4436   - "requires": {
4437   - "async": "1.0.0",
4438   - "colors": "1.0.3",
4439   - "cycle": "1.0.3",
4440   - "eyes": "0.1.8",
4441   - "isstream": "0.1.2",
4442   - "stack-trace": "0.0.10"
4443   - }
4444   - },
4445   - "winston-circular-buffer": {
4446   - "version": "1.0.0",
4447   - "resolved": "https://registry.npmjs.org/winston-circular-buffer/-/winston-circular-buffer-1.0.0.tgz",
4448   - "integrity": "sha1-6ZH3W5n/IFVR4O5HK3XSAdvT4ns=",
4449   - "requires": {
4450   - "circular-buffer": "0.0.6"
4451   - }
4452   - },
4453   - "winston-daily-rotate-file": {
4454   - "version": "1.7.2",
4455   - "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-1.7.2.tgz",
4456   - "integrity": "sha1-ZQK/opeCT9mC2l5WR8dThXjS+aA=",
4457   - "requires": {
4458   - "mkdirp": "0.5.1"
4459   - }
4460   - },
4461 4038 "wrap-ansi": {
4462 4039 "version": "2.1.0",
4463 4040 "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
... ... @@ -4472,11 +4049,6 @@
4472 4049 "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4473 4050 "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
4474 4051 },
4475   - "wraptile": {
4476   - "version": "2.0.0",
4477   - "resolved": "https://registry.npmjs.org/wraptile/-/wraptile-2.0.0.tgz",
4478   - "integrity": "sha512-Jzt4wTT0DJGucp4VewhbT6YutpOfBh6Ab4r5hKWTvFYsNTCxPi0U8wOsesDk1CQ+VcHyaP36BzCiKRJTROJiTQ=="
4479   - },
4480 4052 "xtend": {
4481 4053 "version": "4.0.1",
4482 4054 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
... ... @@ -4487,11 +4059,6 @@
4487 4059 "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
4488 4060 "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
4489 4061 },
4490   - "yallist": {
4491   - "version": "2.1.2",
4492   - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
4493   - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
4494   - },
4495 4062 "yargs": {
4496 4063 "version": "3.32.0",
4497 4064 "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
... ... @@ -4512,15 +4079,6 @@
4512 4079 "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
4513 4080 }
4514 4081 }
4515   - },
4516   - "zames": {
4517   - "version": "2.0.0",
4518   - "resolved": "https://registry.npmjs.org/zames/-/zames-2.0.0.tgz",
4519   - "integrity": "sha512-o9xURXaNLqnkZwk9f9uxraL/k1vXdcYDtJtmesJi0lcpyzkJKhBVyg3ohLfdXEDeHWj/7DfZ6/axINQyaKZGOQ==",
4520   - "requires": {
4521   - "currify": "2.0.6",
4522   - "es6-promisify": "6.0.0"
4523   - }
4524 4082 }
4525 4083 }
4526 4084 }
... ... @@ -28,6 +28,7 @@
28 28 "jsesc": "^2.5.1",
29 29 "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git",
30 30 "moment": "^2.22.2",
  31 + "numeral": "^2.0.6",
31 32 "nunjucks": "^3.1.3",
32 33 "serialport": "^6.2.2",
33 34 "sqlite3": "^4.0.2"