Browse Source

ADD: Notifications() -> constant FB_CUSTOM_NOTIFICATION, for custom notifications from 0x4000+xxx

Giancarlo Voci 8 years ago
parent
commit
828e433378
7 changed files with 231 additions and 161 deletions
  1. 1 1
      cfg/config.bin
  2. 3 4
      cfg/config.ini
  3. 174 146
      package-lock.json
  4. 3 3
      package.json
  5. 18 1
      src/OpenMind/System/Notifications.php
  6. 9 2
      src/OpenMind/System/OMUtils.php
  7. 23 4
      ui/js/omlink.js

+ 1 - 1
cfg/config.bin

@@ -1 +1 @@
-eJx9kGtvmzAUhr9b8n9A+bRpKpeQS9fI0ojjBlpuwlBFqypEiEtQADMuWdso/30mWbVvs2TLts57zvO+z1nBt0nRvkBgRKFne8YKjdomVUYQYAObREJSGEQEgshCfa5AsCLLaI3GEBAXeyvLXaNRFN7f3AqBaa1NW+wQvYqWDIIHI5DZW503DJ1OXV6yL1+/6dpUn6mqej6LXtRFo/K9/VXc7XnboYKnSTHcFjVvOqTr6myx21ZJyRAvi7w6iCG7bd+yBjWcd8OjTtoWZXlSpUlTcAh80499IzQRvlOqLK/elHpfz4dDkAgkx9jES9tyH+PQckhMCUbaWIUAgoXkJ90egqVBSRTYSLmOhIBaIXENhyDPubEvP7a39mIc0dBzSCCs/firOZ8VkVFeJhlrlYJnXK6rDAILe248aKLwf8V9dy0fUCgrWNpJv/d5upfSvu14yRopLYRbiVXJthBWPgEubJ+wEDxjLyDy6/blYqnhuz7tcl5BcIlY+z6WtdmtrMnaRNi+5DxVJxP9OrU5ijEhoSEEB/aOsPpvadpkPlHHujqdC90Q+88m+zgcHxrvsXIprvxq/aH3J2PGTOpuno7tQCN47i13tfQ2lARPFiYCi9qE+EP8SIPgD0ONvv8=
+eJx9kF1vmzAUhu8t+T+gXG2aykcgabfI0ghxE1rAEYYqWlUhIC5BAcz4yNZG+e8zZNXuZsmSj3Xe8z7nfc4KnsRF+wKBGQbEIeYKTdomVSYQWKa1wRKSAj/EEIQ26nMFghVehms0hQB7FlnZ3hpNwuD+5k4INvZ644gboFcxkkHwYPoy+13nDUPnc5eX7NPnL7o20+eqql4uYhb10KR8a38W3w687VDB07gYXouaNx3SdXW+2CdVXDLEyyKvjsJkn/Qta1DDeTcUddy2iNesKvNqD4Fr7qKlY3uPUWC7OKLYQsIMAggW0jbuDhAsTYpD30HKdSIE1A6wZ7oYEffGGX8csiaRFdKAuNgX5N//ai4XRUSQl3HGWqXgGZfrKoPAtogXDZow+F9z313bBxTKCpZ20q9Dnh6ktG87XrJGSguxjMSqOClEeB8AI9sHLATPFvGx/Jq8jCs1fN+nXc4rCMYEta9TWZvfyZoqa4bYe8xxphqGfrVtTsInwDSA4MjekKX+O5pm3BrqVFdnt0I3xPqjyd6Pp4eGPFYetapttX7X+7M5Zxvq7Z5O7YAjgO5tb7UkO4r9J9vCgos6GG+H/IWzYPgDFT21Ew==

+ 3 - 4
cfg/config.ini

@@ -8,9 +8,8 @@ HIGHLIGHT=false
 JAR.expire={{time()+31536000}}
 JAR.expire={{time()+31536000}}
 DSN="mysql:host=localhost;port=3306;dbname=omlink"
 DSN="mysql:host=localhost;port=3306;dbname=omlink"
 dbuser=root
 dbuser=root
-dbpass=giancarlo
-PHP_PATH=C:/nginx/php7/php.exe
-MAX_BLINK_TIME_SEC=120
+dbpass=openmind
+MAX_BLINK_TIME_SEC=600
 
 
 ; Path
 ; Path
 BASEURL=/omlink
 BASEURL=/omlink
@@ -23,7 +22,7 @@ CUSTOMERNAME=omlink
 
 
 [CORE.fb]
 [CORE.fb]
 ; Production
 ; Production
-host=192.168.1.140
+host=192.168.10.140
 port=50443
 port=50443
 ; Server TEST
 ; Server TEST
 key=C0000000000011474023057
 key=C0000000000011474023057

+ 174 - 146
package-lock.json

@@ -15,14 +15,14 @@
       "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
       "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
     },
     },
     "ajv": {
     "ajv": {
-      "version": "5.5.2",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
-      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+      "version": "6.5.5",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
+      "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
       "requires": {
       "requires": {
-        "co": "^4.6.0",
-        "fast-deep-equal": "^1.0.0",
+        "fast-deep-equal": "^2.0.1",
         "fast-json-stable-stringify": "^2.0.0",
         "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.3.0"
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
       }
       }
     },
     },
     "amdefine": {
     "amdefine": {
@@ -174,9 +174,9 @@
       }
       }
     },
     },
     "babel-helper-evaluate-path": {
     "babel-helper-evaluate-path": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.4.3.tgz",
-      "integrity": "sha1-ComvcCwGshcCf6NxkI3UmJ0+Yz8="
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz",
+      "integrity": "sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA=="
     },
     },
     "babel-helper-flip-expressions": {
     "babel-helper-flip-expressions": {
       "version": "0.4.3",
       "version": "0.4.3",
@@ -204,9 +204,9 @@
       "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA="
       "integrity": "sha1-pPA7QAd6D/6I5F0HAQ3uJB/1rmA="
     },
     },
     "babel-helper-to-multiple-sequence-expressions": {
     "babel-helper-to-multiple-sequence-expressions": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.4.3.tgz",
-      "integrity": "sha1-W1GLESf0ezA4dzOGoVYaK0jmMrY="
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.5.0.tgz",
+      "integrity": "sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA=="
     },
     },
     "babel-helpers": {
     "babel-helpers": {
       "version": "6.24.1",
       "version": "6.24.1",
@@ -226,27 +226,24 @@
       }
       }
     },
     },
     "babel-plugin-minify-builtins": {
     "babel-plugin-minify-builtins": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.4.3.tgz",
-      "integrity": "sha1-nqPVn0rEp7uVjXEtKVVqH4b3+B4=",
-      "requires": {
-        "babel-helper-evaluate-path": "^0.4.3"
-      }
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.5.0.tgz",
+      "integrity": "sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag=="
     },
     },
     "babel-plugin-minify-constant-folding": {
     "babel-plugin-minify-constant-folding": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.4.3.tgz",
-      "integrity": "sha1-MA+d6N2ghEoXaxk2U5YOJK0z4ZE=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.5.0.tgz",
+      "integrity": "sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==",
       "requires": {
       "requires": {
-        "babel-helper-evaluate-path": "^0.4.3"
+        "babel-helper-evaluate-path": "^0.5.0"
       }
       }
     },
     },
     "babel-plugin-minify-dead-code-elimination": {
     "babel-plugin-minify-dead-code-elimination": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.4.3.tgz",
-      "integrity": "sha1-c2KCZYZPkAjQAnUG9Yq+s8HQLZg=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.5.0.tgz",
+      "integrity": "sha512-XQteBGXlgEoAKc/BhO6oafUdT4LBa7ARi55mxoyhLHNuA+RlzRmeMAfc31pb/UqU01wBzRc36YqHQzopnkd/6Q==",
       "requires": {
       "requires": {
-        "babel-helper-evaluate-path": "^0.4.3",
+        "babel-helper-evaluate-path": "^0.5.0",
         "babel-helper-mark-eval-scopes": "^0.4.3",
         "babel-helper-mark-eval-scopes": "^0.4.3",
         "babel-helper-remove-or-void": "^0.4.3",
         "babel-helper-remove-or-void": "^0.4.3",
         "lodash.some": "^4.6.0"
         "lodash.some": "^4.6.0"
@@ -274,9 +271,9 @@
       "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco="
       "integrity": "sha1-37h2obCKBldjhO8/kuZTumB7Oco="
     },
     },
     "babel-plugin-minify-mangle-names": {
     "babel-plugin-minify-mangle-names": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.4.3.tgz",
-      "integrity": "sha1-FvG/90t6fJPfwkHngx3V+0sCPvc=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.5.0.tgz",
+      "integrity": "sha512-3jdNv6hCAw6fsX1p2wBGPfWuK69sfOjfd3zjUXkbq8McbohWy23tpXfy5RnToYWggvqzuMOwlId1PhyHOfgnGw==",
       "requires": {
       "requires": {
         "babel-helper-mark-eval-scopes": "^0.4.3"
         "babel-helper-mark-eval-scopes": "^0.4.3"
       }
       }
@@ -287,18 +284,18 @@
       "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw="
       "integrity": "sha1-jk/VYcefeAEob/YOjF/Z3u6TwLw="
     },
     },
     "babel-plugin-minify-replace": {
     "babel-plugin-minify-replace": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.4.3.tgz",
-      "integrity": "sha1-nSifS6FdTmAR6HmfpfG6d+yBIZ0="
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.5.0.tgz",
+      "integrity": "sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q=="
     },
     },
     "babel-plugin-minify-simplify": {
     "babel-plugin-minify-simplify": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.4.3.tgz",
-      "integrity": "sha1-N3VthcYURktLCSfytOQXGR1Vc4o=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.5.0.tgz",
+      "integrity": "sha512-TM01J/YcKZ8XIQd1Z3nF2AdWHoDsarjtZ5fWPDksYZNsoOjQ2UO2EWm824Ym6sp127m44gPlLFiO5KFxU8pA5Q==",
       "requires": {
       "requires": {
         "babel-helper-flip-expressions": "^0.4.3",
         "babel-helper-flip-expressions": "^0.4.3",
         "babel-helper-is-nodes-equiv": "^0.0.1",
         "babel-helper-is-nodes-equiv": "^0.0.1",
-        "babel-helper-to-multiple-sequence-expressions": "^0.4.3"
+        "babel-helper-to-multiple-sequence-expressions": "^0.5.0"
       }
       }
     },
     },
     "babel-plugin-minify-type-constructors": {
     "babel-plugin-minify-type-constructors": {
@@ -353,11 +350,11 @@
       "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI="
       "integrity": "sha1-QrcnYxyXl44estGZp67IShgznvI="
     },
     },
     "babel-plugin-transform-remove-undefined": {
     "babel-plugin-transform-remove-undefined": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.4.3.tgz",
-      "integrity": "sha1-1AsNp/kcCMBsxyt2dHTAHEiU3gI=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.5.0.tgz",
+      "integrity": "sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==",
       "requires": {
       "requires": {
-        "babel-helper-evaluate-path": "^0.4.3"
+        "babel-helper-evaluate-path": "^0.5.0"
       }
       }
     },
     },
     "babel-plugin-transform-simplify-comparison-operators": {
     "babel-plugin-transform-simplify-comparison-operators": {
@@ -371,20 +368,20 @@
       "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA="
       "integrity": "sha1-viQcqBQEAwZ4t0hxcyK4nQyP4oA="
     },
     },
     "babel-preset-minify": {
     "babel-preset-minify": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.4.3.tgz",
-      "integrity": "sha1-spw91pGJBThFmPCSuVUVLiah/g8=",
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.5.0.tgz",
+      "integrity": "sha512-xj1s9Mon+RFubH569vrGCayA9Fm2GMsCgDRm1Jb8SgctOB7KFcrVc2o8K3YHUyMz+SWP8aea75BoS8YfsXXuiA==",
       "requires": {
       "requires": {
-        "babel-plugin-minify-builtins": "^0.4.3",
-        "babel-plugin-minify-constant-folding": "^0.4.3",
-        "babel-plugin-minify-dead-code-elimination": "^0.4.3",
+        "babel-plugin-minify-builtins": "^0.5.0",
+        "babel-plugin-minify-constant-folding": "^0.5.0",
+        "babel-plugin-minify-dead-code-elimination": "^0.5.0",
         "babel-plugin-minify-flip-comparisons": "^0.4.3",
         "babel-plugin-minify-flip-comparisons": "^0.4.3",
         "babel-plugin-minify-guarded-expressions": "^0.4.3",
         "babel-plugin-minify-guarded-expressions": "^0.4.3",
         "babel-plugin-minify-infinity": "^0.4.3",
         "babel-plugin-minify-infinity": "^0.4.3",
-        "babel-plugin-minify-mangle-names": "^0.4.3",
+        "babel-plugin-minify-mangle-names": "^0.5.0",
         "babel-plugin-minify-numeric-literals": "^0.4.3",
         "babel-plugin-minify-numeric-literals": "^0.4.3",
-        "babel-plugin-minify-replace": "^0.4.3",
-        "babel-plugin-minify-simplify": "^0.4.3",
+        "babel-plugin-minify-replace": "^0.5.0",
+        "babel-plugin-minify-simplify": "^0.5.0",
         "babel-plugin-minify-type-constructors": "^0.4.3",
         "babel-plugin-minify-type-constructors": "^0.4.3",
         "babel-plugin-transform-inline-consecutive-adds": "^0.4.3",
         "babel-plugin-transform-inline-consecutive-adds": "^0.4.3",
         "babel-plugin-transform-member-expression-literals": "^6.9.4",
         "babel-plugin-transform-member-expression-literals": "^6.9.4",
@@ -394,7 +391,7 @@
         "babel-plugin-transform-regexp-constructors": "^0.4.3",
         "babel-plugin-transform-regexp-constructors": "^0.4.3",
         "babel-plugin-transform-remove-console": "^6.9.4",
         "babel-plugin-transform-remove-console": "^6.9.4",
         "babel-plugin-transform-remove-debugger": "^6.9.4",
         "babel-plugin-transform-remove-debugger": "^6.9.4",
-        "babel-plugin-transform-remove-undefined": "^0.4.3",
+        "babel-plugin-transform-remove-undefined": "^0.5.0",
         "babel-plugin-transform-simplify-comparison-operators": "^6.9.4",
         "babel-plugin-transform-simplify-comparison-operators": "^6.9.4",
         "babel-plugin-transform-undefined-to-void": "^6.9.4",
         "babel-plugin-transform-undefined-to-void": "^6.9.4",
         "lodash.isplainobject": "^4.0.6"
         "lodash.isplainobject": "^4.0.6"
@@ -516,6 +513,11 @@
         "concat-map": "0.0.1"
         "concat-map": "0.0.1"
       }
       }
     },
     },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
     "builtin-modules": {
     "builtin-modules": {
       "version": "1.1.1",
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
       "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
@@ -568,7 +570,7 @@
     },
     },
     "camelcase-keys": {
     "camelcase-keys": {
       "version": "2.1.0",
       "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+      "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
       "requires": {
       "requires": {
         "camelcase": "^2.0.0",
         "camelcase": "^2.0.0",
@@ -735,11 +737,6 @@
         "readable-stream": "^2.3.5"
         "readable-stream": "^2.3.5"
       }
       }
     },
     },
-    "co": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
-    },
     "coa": {
     "coa": {
       "version": "1.0.4",
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
       "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
@@ -768,7 +765,7 @@
     },
     },
     "colors": {
     "colors": {
       "version": "1.1.2",
       "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+      "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
       "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
       "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
     },
     },
     "combined-stream": {
     "combined-stream": {
@@ -780,9 +777,9 @@
       }
       }
     },
     },
     "commander": {
     "commander": {
-      "version": "2.18.0",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.18.0.tgz",
-      "integrity": "sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ=="
+      "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+      "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="
     },
     },
     "concat-map": {
     "concat-map": {
       "version": "0.0.1",
       "version": "0.0.1",
@@ -1022,9 +1019,9 @@
       "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
       "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
     },
     },
     "fast-deep-equal": {
     "fast-deep-equal": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
-      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
     },
     },
     "fast-json-stable-stringify": {
     "fast-json-stable-stringify": {
       "version": "2.0.0",
       "version": "2.0.0",
@@ -1046,23 +1043,13 @@
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
       "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
     },
     },
     "form-data": {
     "form-data": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
-      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
       "requires": {
       "requires": {
         "asynckit": "^0.4.0",
         "asynckit": "^0.4.0",
-        "combined-stream": "1.0.6",
+        "combined-stream": "^1.0.6",
         "mime-types": "^2.1.12"
         "mime-types": "^2.1.12"
-      },
-      "dependencies": {
-        "combined-stream": {
-          "version": "1.0.6",
-          "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
-          "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
-          "requires": {
-            "delayed-stream": "~1.0.0"
-          }
-        }
       }
       }
     },
     },
     "fs.realpath": {
     "fs.realpath": {
@@ -1184,13 +1171,13 @@
       }
       }
     },
     },
     "google-closure-compiler": {
     "google-closure-compiler": {
-      "version": "20180910.0.0",
-      "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20180910.0.0.tgz",
-      "integrity": "sha512-vGhVE5M2ZY0DZWQP+NhpNxvhBP90OqDcNpQcjbRbINmWbfgN65WBnOw3c3x+Xp5siVJj1dyvRht3qplTL5rkTA==",
+      "version": "20181008.0.0",
+      "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20181008.0.0.tgz",
+      "integrity": "sha512-XmJIasXHyy4kirthlsuDev2LZcXjYXWfOHwHdCLUQnfJH8T2sxWDNjFLQycaCIXwQLOyw2Kem38VgxrYfG0hzg==",
       "requires": {
       "requires": {
         "chalk": "^1.0.0",
         "chalk": "^1.0.0",
-        "google-closure-compiler-linux": "^20180910.0.1",
-        "google-closure-compiler-osx": "^20180910.0.1",
+        "google-closure-compiler-linux": "^20181008.0.0",
+        "google-closure-compiler-osx": "^20181008.0.0",
         "minimist": "^1.2.0",
         "minimist": "^1.2.0",
         "vinyl": "^2.0.1",
         "vinyl": "^2.0.1",
         "vinyl-sourcemaps-apply": "^0.2.0"
         "vinyl-sourcemaps-apply": "^0.2.0"
@@ -1216,15 +1203,15 @@
       }
       }
     },
     },
     "google-closure-compiler-linux": {
     "google-closure-compiler-linux": {
-      "version": "20180910.0.1",
-      "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20180910.0.1.tgz",
-      "integrity": "sha512-hSTqyLLHDLnntR442BVea0sp49q+Uwi05HMOVBPMmbwDoHLtCpDmwZ/FUKs5GLFZ/cQafk3RgHLktPdReEPMIw==",
+      "version": "20181008.0.0",
+      "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20181008.0.0.tgz",
+      "integrity": "sha512-k8njGfH2uzWJiRPPvUxM7MJB28gPrf4kI2bbuiF0gJk/1arXcWCPGjLD6pzCU0UylMy52MUXLgsIpRorqf2brw==",
       "optional": true
       "optional": true
     },
     },
     "google-closure-compiler-osx": {
     "google-closure-compiler-osx": {
-      "version": "20180910.0.1",
-      "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20180910.0.1.tgz",
-      "integrity": "sha512-HU2waANIOHBFtAJ205rzF8BGXiJaLT0s6qu4memI7D4ThBhAJLA/SwTlEjrby6OvS+ZRL4e0FYMPJW1/fhQKzg==",
+      "version": "20181008.0.0",
+      "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20181008.0.0.tgz",
+      "integrity": "sha512-xzf/yH/4MXdb6GbP84iHnpcVCOPBbH0gMVOs0JhR/KbrQh+DlJU+Y8Z/DQzTkw9HgD650R2/WZmBknURyg9OTw==",
       "optional": true
       "optional": true
     },
     },
     "got": {
     "got": {
@@ -1246,9 +1233,9 @@
       }
       }
     },
     },
     "graceful-fs": {
     "graceful-fs": {
-      "version": "4.1.11",
-      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-      "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+      "version": "4.1.15",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
+      "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
     },
     },
     "gzip-size": {
     "gzip-size": {
       "version": "5.0.0",
       "version": "5.0.0",
@@ -1265,11 +1252,11 @@
       "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
       "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
     },
     },
     "har-validator": {
     "har-validator": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
-      "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
       "requires": {
       "requires": {
-        "ajv": "^5.3.0",
+        "ajv": "^6.5.5",
         "har-schema": "^2.0.0"
         "har-schema": "^2.0.0"
       }
       }
     },
     },
@@ -1542,7 +1529,7 @@
     },
     },
     "jsesc": {
     "jsesc": {
       "version": "1.3.0",
       "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+      "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
       "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
       "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s="
     },
     },
     "json-schema": {
     "json-schema": {
@@ -1551,9 +1538,9 @@
       "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
       "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
     },
     },
     "json-schema-traverse": {
     "json-schema-traverse": {
-      "version": "0.3.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
     },
     },
     "json-stringify-safe": {
     "json-stringify-safe": {
       "version": "5.0.1",
       "version": "5.0.1",
@@ -1606,7 +1593,7 @@
       "dependencies": {
       "dependencies": {
         "pify": {
         "pify": {
           "version": "2.3.0",
           "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
         }
       }
       }
@@ -1713,7 +1700,7 @@
     },
     },
     "meow": {
     "meow": {
       "version": "3.7.0",
       "version": "3.7.0",
-      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+      "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
       "requires": {
       "requires": {
         "camelcase-keys": "^2.0.0",
         "camelcase-keys": "^2.0.0",
@@ -1736,16 +1723,16 @@
       }
       }
     },
     },
     "mime-db": {
     "mime-db": {
-      "version": "1.36.0",
-      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
-      "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
+      "version": "1.37.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz",
+      "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg=="
     },
     },
     "mime-types": {
     "mime-types": {
-      "version": "2.1.20",
-      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
-      "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
+      "version": "2.1.21",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz",
+      "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==",
       "requires": {
       "requires": {
-        "mime-db": "~1.36.0"
+        "mime-db": "~1.37.0"
       }
       }
     },
     },
     "mimic-fn": {
     "mimic-fn": {
@@ -1819,31 +1806,31 @@
       }
       }
     },
     },
     "node-minify": {
     "node-minify": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/node-minify/-/node-minify-3.5.0.tgz",
-      "integrity": "sha512-2MyCUfAsg0eOxP8acyRHCRD/9PykTcwVrrknWsiKe6uvCXnmXbrIkuAcRByeyeIxfvFaMi64b7aXNZuPsCoOlQ==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/node-minify/-/node-minify-3.6.0.tgz",
+      "integrity": "sha512-/t7Xz0yXFyBrHhnGgAZAoOtuqu+oKyYONj0xUDiST6onGEQ0lwzprXhjTNazNWn7ZfIYYoiyP9Bn0rOd+vBuOA==",
       "requires": {
       "requires": {
         "babel-core": "6.26.3",
         "babel-core": "6.26.3",
-        "babel-preset-minify": "0.4.3",
+        "babel-preset-minify": "0.5.0",
         "butternut": "0.4.6",
         "butternut": "0.4.6",
         "chalk": "2.4.1",
         "chalk": "2.4.1",
         "clean-css": "4.2.1",
         "clean-css": "4.2.1",
-        "commander": "2.18.0",
+        "commander": "2.19.0",
         "crass": "0.12.3",
         "crass": "0.12.3",
         "csso": "3.5.1",
         "csso": "3.5.1",
         "depd": "1.1.2",
         "depd": "1.1.2",
         "glob": "7.1.3",
         "glob": "7.1.3",
-        "google-closure-compiler": "20180910.0.0",
+        "google-closure-compiler": "20181008.0.0",
         "gzip-size": "5.0.0",
         "gzip-size": "5.0.0",
         "html-minifier": "3.5.20",
         "html-minifier": "3.5.20",
         "mkdirp": "0.5.1",
         "mkdirp": "0.5.1",
         "node-version": "1.2.0",
         "node-version": "1.2.0",
         "ora": "3.0.0",
         "ora": "3.0.0",
         "sqwish": "0.2.2",
         "sqwish": "0.2.2",
+        "terser": "3.10.2",
         "uglify-es": "3.3.9",
         "uglify-es": "3.3.9",
         "uglify-js": "3.4.9",
         "uglify-js": "3.4.9",
-        "update-notifier": "2.5.0",
-        "xtend": "4.0.1"
+        "update-notifier": "2.5.0"
       },
       },
       "dependencies": {
       "dependencies": {
         "source-map": {
         "source-map": {
@@ -1870,9 +1857,9 @@
       }
       }
     },
     },
     "node-sass": {
     "node-sass": {
-      "version": "4.9.4",
-      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.4.tgz",
-      "integrity": "sha512-MXyurANsUoE4/6KmfMkwGcBzAnJQ5xJBGW7Ei6ea8KnUKuzHr/SguVBIi3uaUAHtZCPUYkvlJ3Ef5T5VAwVpaA==",
+      "version": "4.10.0",
+      "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.10.0.tgz",
+      "integrity": "sha512-fDQJfXszw6vek63Fe/ldkYXmRYK/QS6NbvM3i5oEo9ntPDy4XX7BcKZyTKv+/kSSxRtXXc7l+MSwEmYc0CSy6Q==",
       "requires": {
       "requires": {
         "async-foreach": "^0.1.3",
         "async-foreach": "^0.1.3",
         "chalk": "^1.1.1",
         "chalk": "^1.1.1",
@@ -2022,7 +2009,7 @@
     },
     },
     "os-homedir": {
     "os-homedir": {
       "version": "1.0.2",
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+      "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
       "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
     },
     },
     "os-locale": {
     "os-locale": {
@@ -2035,7 +2022,7 @@
     },
     },
     "os-tmpdir": {
     "os-tmpdir": {
       "version": "1.0.2",
       "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
     },
     },
     "osenv": {
     "osenv": {
@@ -2089,7 +2076,7 @@
     },
     },
     "path-is-absolute": {
     "path-is-absolute": {
       "version": "1.0.1",
       "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
     },
     },
     "path-is-inside": {
     "path-is-inside": {
@@ -2114,7 +2101,7 @@
       "dependencies": {
       "dependencies": {
         "pify": {
         "pify": {
           "version": "2.3.0",
           "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+          "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
         }
         }
       }
       }
@@ -2143,9 +2130,9 @@
       }
       }
     },
     },
     "popper.js": {
     "popper.js": {
-      "version": "1.14.4",
-      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.4.tgz",
-      "integrity": "sha1-juwdj/AqWjoVLdQ0FKFce3n9abY="
+      "version": "1.14.5",
+      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.5.tgz",
+      "integrity": "sha512-fs4Sd8bZLgEzrk8aS7Em1qh+wcawtE87kRUJQhK6+LndyV1HerX7+LURzAylVaTyWIn5NTB/lyjnWqw/AZ6Yrw=="
     },
     },
     "prepend-http": {
     "prepend-http": {
       "version": "1.0.4",
       "version": "1.0.4",
@@ -2173,9 +2160,9 @@
       "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
       "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ=="
     },
     },
     "punycode": {
     "punycode": {
-      "version": "1.4.1",
-      "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
     },
     },
     "q": {
     "q": {
       "version": "1.5.1",
       "version": "1.5.1",
@@ -2383,7 +2370,7 @@
       "dependencies": {
       "dependencies": {
         "source-map": {
         "source-map": {
           "version": "0.4.4",
           "version": "0.4.4",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+          "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
           "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
           "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
           "requires": {
           "requires": {
             "amdefine": ">=0.0.4"
             "amdefine": ">=0.0.4"
@@ -2474,9 +2461,9 @@
       }
       }
     },
     },
     "spdx-license-ids": {
     "spdx-license-ids": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
-      "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w=="
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
+      "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg=="
     },
     },
     "sprintf-js": {
     "sprintf-js": {
       "version": "1.0.3",
       "version": "1.0.3",
@@ -2489,9 +2476,9 @@
       "integrity": "sha1-AP4maBBPEii1u37nOe9gEhu8sFc="
       "integrity": "sha1-AP4maBBPEii1u37nOe9gEhu8sFc="
     },
     },
     "sshpk": {
     "sshpk": {
-      "version": "1.15.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz",
-      "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==",
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz",
+      "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==",
       "requires": {
       "requires": {
         "asn1": "~0.2.3",
         "asn1": "~0.2.3",
         "assert-plus": "^1.0.0",
         "assert-plus": "^1.0.0",
@@ -2562,7 +2549,7 @@
     },
     },
     "strip-eof": {
     "strip-eof": {
       "version": "1.0.0",
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
       "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
       "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
     },
     },
     "strip-indent": {
     "strip-indent": {
@@ -2618,7 +2605,7 @@
     },
     },
     "tar": {
     "tar": {
       "version": "2.2.1",
       "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+      "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
       "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
       "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
       "requires": {
       "requires": {
         "block-stream": "*",
         "block-stream": "*",
@@ -2634,6 +2621,37 @@
         "execa": "^0.7.0"
         "execa": "^0.7.0"
       }
       }
     },
     },
+    "terser": {
+      "version": "3.10.2",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-3.10.2.tgz",
+      "integrity": "sha512-+QrFoqBImmsQGB4c/HvaqgZynmbNvNBwoBxuu7fYXtq5EEtlLUzph+WimDj+xMkuqawXPMl2lgCIz81CdXvt+w==",
+      "requires": {
+        "commander": "~2.17.1",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.6"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+          "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        },
+        "source-map-support": {
+          "version": "0.5.9",
+          "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+          "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
+          "requires": {
+            "buffer-from": "^1.0.0",
+            "source-map": "^0.6.0"
+          }
+        }
+      }
+    },
     "timed-out": {
     "timed-out": {
       "version": "4.0.1",
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
       "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
@@ -2651,6 +2669,13 @@
       "requires": {
       "requires": {
         "psl": "^1.1.24",
         "psl": "^1.1.24",
         "punycode": "^1.4.1"
         "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+        }
       }
       }
     },
     },
     "trim-newlines": {
     "trim-newlines": {
@@ -2745,6 +2770,14 @@
       "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
       "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
       "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
       "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg="
     },
     },
+    "uri-js": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
     "url-parse-lax": {
     "url-parse-lax": {
       "version": "1.0.0",
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
       "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
@@ -2843,9 +2876,9 @@
       }
       }
     },
     },
     "widest-line": {
     "widest-line": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
-      "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+      "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
       "requires": {
       "requires": {
         "string-width": "^2.1.1"
         "string-width": "^2.1.1"
       }
       }
@@ -2899,11 +2932,6 @@
       "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
       "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
       "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
       "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
     },
     },
-    "xtend": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
-    },
     "y18n": {
     "y18n": {
       "version": "3.2.1",
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
       "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",

+ 3 - 3
package.json

@@ -11,8 +11,8 @@
   "dependencies": {
   "dependencies": {
     "bootstrap": "^4.1.3",
     "bootstrap": "^4.1.3",
     "jquery": "^3.3.1",
     "jquery": "^3.3.1",
-    "node-minify": "^3.5.0",
-    "node-sass": "^4.9.4",
-    "popper.js": "^1.14.4"
+    "node-minify": "^3.6.0",
+    "node-sass": "^4.10.0",
+    "popper.js": "^1.14.5"
   }
   }
 }
 }

+ 18 - 1
src/OpenMind/System/Notifications.php

@@ -15,6 +15,10 @@ class Notifications extends Mapper
   const FB_GENERIC = 0x01;
   const FB_GENERIC = 0x01;
   const FB_IMPORT = 0x02;
   const FB_IMPORT = 0x02;
   const FB_NOTALIVE = 11;
   const FB_NOTALIVE = 11;
+  /**
+   * If you need custom notification or to simply send a command to client use FB_CUSTOM_NOTIFICATION+xxx where xxx is a number that identify your notification
+   */
+  const FB_CUSTOM_NOTIFICATION = 0x4000;
 
 
   public function __construct()
   public function __construct()
   {
   {
@@ -32,6 +36,12 @@ class Notifications extends Mapper
     $this->erase(['code=?', $code]);
     $this->erase(['code=?', $code]);
   }
   }
 
 
+  /**
+   * Check if notification $code exists
+   *
+   * @param int $code
+   * @return bool
+   */
   public function check(int $code)
   public function check(int $code)
   {
   {
     $this->load(['code=?', $code]);
     $this->load(['code=?', $code]);
@@ -48,7 +58,14 @@ class Notifications extends Mapper
     $f3->get('DB')->exec('TRUNCATE TABLE notifications');
     $f3->get('DB')->exec('TRUNCATE TABLE notifications');
   }
   }
 
 
-  public function notify(int $code, string $caption, $link = '#')
+  /**
+   * Send custom notification to system
+   *
+   * @param int $code maybe FB_GENERIC, FB_IMPORT, etc
+   * @param string|null $caption
+   * @param null $link
+   */
+  public function notify(int $code, string $caption = null, $link = null)
   {
   {
     if ($code == $this::FB_GENERIC || $this->check($code)) {
     if ($code == $this::FB_GENERIC || $this->check($code)) {
       $this->reset();
       $this->reset();

+ 9 - 2
src/OpenMind/System/OMUtils.php

@@ -32,7 +32,12 @@ class OMUtils
     return $this->Logger;
     return $this->Logger;
   }
   }
 
 
-  public static function getInstance()
+  /**
+   * The Singleton Instance
+   *
+   * @return null|OMUtils
+   */
+  public static function getInstance(): ?OMUtils
   {
   {
     static $instance = null;
     static $instance = null;
     if ($instance === null) {
     if ($instance === null) {
@@ -83,7 +88,6 @@ class OMUtils
     return \Template::instance()->resolve($strTemplate);
     return \Template::instance()->resolve($strTemplate);
   }
   }
 
 
-
   /**
   /**
    * Load an encrypted file with the method "base64_encode(gzcompress(<path to config.ini>))", save it in a temporary file in temp folder of system and load with F3::config()
    * Load an encrypted file with the method "base64_encode(gzcompress(<path to config.ini>))", save it in a temporary file in temp folder of system and load with F3::config()
    *
    *
@@ -103,6 +107,9 @@ class OMUtils
     unlink($tmpFilepath);
     unlink($tmpFilepath);
   }
   }
 
 
+  /*
+   * Exit from APP if the OMLINK requirement aren't meet
+   */
   public function DieByOldPhpVersion()
   public function DieByOldPhpVersion()
   {
   {
     if (version_compare(PHP_VERSION, '7.2') != 1)
     if (version_compare(PHP_VERSION, '7.2') != 1)

+ 23 - 4
ui/js/omlink.js

@@ -6,6 +6,9 @@
  * @time 17:42
  * @time 17:42
  */
  */
 
 
+let CUSTOM_NOTIFY = 0x4000;
+
+
 var fetchHeaders = {
 var fetchHeaders = {
   'Accept': 'text/html',
   'Accept': 'text/html',
   'Content-Type': 'text/html',
   'Content-Type': 'text/html',
@@ -14,6 +17,18 @@ var fetchHeaders = {
   'Pragma': 'no-cache',
   'Pragma': 'no-cache',
   'Expires': '0'
   'Expires': '0'
 };
 };
+/* usefull if a blinking text is need, like in MaxMara project, you need to place this code in html:
+ *
+ * <nav class="navbar navbar-collapse p-0">
+ *   <span class="navbar-text blink" style="color: red" id="statusbartext"></span>
+ * </nav>
+ */
+function SetStatusBarText(msg) {
+  $('#statusbartext').text(msg);
+  setTimeout(() => {
+    $('#statusbartext').text('');
+  }, 60000);
+}
 function NotificationBuilder(notifications) {
 function NotificationBuilder(notifications) {
   let tplNotify = '';
   let tplNotify = '';
   let htmlNotificationArea = '';
   let htmlNotificationArea = '';
@@ -21,8 +36,14 @@ function NotificationBuilder(notifications) {
     $('#notification_area_button').addClass('disabled');
     $('#notification_area_button').addClass('disabled');
     $('#sysmsgnum').empty();
     $('#sysmsgnum').empty();
   } else {
   } else {
+    let notificationCount = 0;
     notifications.forEach(function (element) {
     notifications.forEach(function (element) {
+// If notification codes are >CUSTON_NOTIFY means that are special codes to skip in this logic
+      if (element.code > CUSTOM_NOTIFY)
+        return;
+
       tplNotify += `<a class="dropdown-item" href="javascript:NotificationDelete('${element.link}', ${element.code})">[${element.timestamp}] ${element.caption}<span class="ml-1 badge badge-danger">${element.count}</span></a>`;
       tplNotify += `<a class="dropdown-item" href="javascript:NotificationDelete('${element.link}', ${element.code})">[${element.timestamp}] ${element.caption}<span class="ml-1 badge badge-danger">${element.count}</span></a>`;
+      notificationCount++;
     });
     });
 
 
     htmlNotificationArea = `
     htmlNotificationArea = `
@@ -30,7 +51,7 @@ ${tplNotify}
 <a id="notification_area_deleteall" class="dropdown-item text-center" href="javascript:NotificationDelete('#', 0)" >Cancella tutto</a>
 <a id="notification_area_deleteall" class="dropdown-item text-center" href="javascript:NotificationDelete('#', 0)" >Cancella tutto</a>
 `;
 `;
     $('#notification_area_button').removeClass('disabled');
     $('#notification_area_button').removeClass('disabled');
-    $('#sysmsgnum').html(notifications.length);
+    $('#sysmsgnum').html(notificationCount);
   }
   }
 
 
 
 
@@ -56,7 +77,7 @@ function refreshNotificationArea() {
 function NotificationDelete(link, code) {
 function NotificationDelete(link, code) {
   fetch(`${BASEURL}/api.system.removenotification/${code}`, {method: "POST"})
   fetch(`${BASEURL}/api.system.removenotification/${code}`, {method: "POST"})
     .then(() => {
     .then(() => {
-      if (link !== '#')
+      if (link != null)
         window.location.href = `${BASEURL}${link}`;
         window.location.href = `${BASEURL}${link}`;
     })
     })
     .catch(() => {
     .catch(() => {
@@ -85,8 +106,6 @@ $(function () {
 
 
   ForceFocus(); // INPUT AUTOFOCUS
   ForceFocus(); // INPUT AUTOFOCUS
 
 
-  $('#filters #filterIndex').val(currentFilterIdx);
-
   $('body').on('submit', 'form', function () {
   $('body').on('submit', 'form', function () {
     $('form input,form select').prop('disabled', false);
     $('form input,form select').prop('disabled', false);
     setTimeout(function () {
     setTimeout(function () {