You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by sh...@apache.org on 2023/01/10 20:27:30 UTC

[trafficcontrol] branch master updated: Traffic Portal library typings (#7227)

This is an automated email from the ASF dual-hosted git repository.

shamrick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new c1f1b55fbc Traffic Portal library typings (#7227)
c1f1b55fbc is described below

commit c1f1b55fbccc7d60a04c6f0ccb7f96366d9ba2eb
Author: ocket8888 <oc...@apache.org>
AuthorDate: Tue Jan 10 13:27:23 2023 -0700

    Traffic Portal library typings (#7227)
    
    * Add typings for included libraries
    
    Note that typings for our "vendored" version of moment.js don't exist,
    so I chose the closest that do.
    
    (cherry picked from commit 99fad9a401b7da42b952f30e5d5e18e9af240cf1)
    
    * add JQuery typings
    
    (cherry picked from commit bdfaa60de5db3c19d2d0da47a311220c6cd0f7cf)
    
    * Remove unused dependencies
    
    (cherry picked from commit a8ac354389a85cc11feceebbdc9e1d79e4a563e2)
---
 .../src/common/modules/header/HeaderController.js  |   2 +
 .../modules/navigation/NavigationController.js     |  19 ++-
 .../widget/cdnChart/WidgetCDNChartController.js    |  16 +++
 traffic_portal/app/src/scripts/shared-libs.js      |   4 -
 traffic_portal/grunt/browserify.js                 |   4 -
 traffic_portal/package-lock.json                   | 158 ++++++++++++---------
 traffic_portal/package.json                        |   8 +-
 7 files changed, 128 insertions(+), 83 deletions(-)

diff --git a/traffic_portal/app/src/common/modules/header/HeaderController.js b/traffic_portal/app/src/common/modules/header/HeaderController.js
index 21685535f9..616178431c 100644
--- a/traffic_portal/app/src/common/modules/header/HeaderController.js
+++ b/traffic_portal/app/src/common/modules/header/HeaderController.js
@@ -17,6 +17,8 @@
  * under the License.
  */
 
+/** @typedef {import("jquery")} $ */
+
 const defaultBannerColor = "#EDEDED";
 const defaultSidebarColor = "#2A3F54";
 const defaultTextColor = "#515356";
diff --git a/traffic_portal/app/src/common/modules/navigation/NavigationController.js b/traffic_portal/app/src/common/modules/navigation/NavigationController.js
index 17a73ac583..4755a70318 100644
--- a/traffic_portal/app/src/common/modules/navigation/NavigationController.js
+++ b/traffic_portal/app/src/common/modules/navigation/NavigationController.js
@@ -17,7 +17,22 @@
  * under the License.
  */
 
-var NavigationController = function($scope, $log, $state, $location, $window, $timeout, $uibModal, permissionUtils, authService, trafficPortalService, propertiesModel, userModel) {
+/** @typedef {import("jquery")} $ */
+
+/**
+ * @param {*} $scope
+ * @param {*} $state
+ * @param {import("angular").ILocationService} $location
+ * @param {import("angular").IWindowService} $window
+ * @param {import("angular").ITimeoutService} $timeout
+ * @param {*} $uibModal
+ * @param {import("../../service/utils/PermissionUtils")} permissionUtils
+ * @param {import("../../api/AuthService")} authService
+ * @param {import("../../api/TrafficPortalService")} trafficPortalService
+ * @param {import("../../models/PropertiesModel")} propertiesModel
+ * @param {import("../../models/UserModel")} userModel
+ */
+var NavigationController = function($scope, $state, $location, $window, $timeout, $uibModal, permissionUtils, authService, trafficPortalService, propertiesModel, userModel) {
 
     $scope.appName = propertiesModel.properties.name;
 
@@ -167,5 +182,5 @@ var NavigationController = function($scope, $log, $state, $location, $window, $t
 
 };
 
-NavigationController.$inject = ['$scope', '$log', '$state', '$location', '$window', '$timeout', '$uibModal', 'permissionUtils', 'authService', 'trafficPortalService', 'propertiesModel', 'userModel'];
+NavigationController.$inject = ['$scope', '$state', '$location', '$window', '$timeout', '$uibModal', 'permissionUtils', 'authService', 'trafficPortalService', 'propertiesModel', 'userModel'];
 module.exports = NavigationController;
diff --git a/traffic_portal/app/src/common/modules/widget/cdnChart/WidgetCDNChartController.js b/traffic_portal/app/src/common/modules/widget/cdnChart/WidgetCDNChartController.js
index 95b2f89f04..6ca74db3c4 100644
--- a/traffic_portal/app/src/common/modules/widget/cdnChart/WidgetCDNChartController.js
+++ b/traffic_portal/app/src/common/modules/widget/cdnChart/WidgetCDNChartController.js
@@ -17,6 +17,22 @@
  * under the License.
  */
 
+/** @typedef {import("jquery")} $ */
+
+/**
+ * @param {*} cdn
+ * @param {*} $scope
+ * @param {import("angular").ITimeoutService} $timeout
+ * @param {import("angular").IFilterService} $filter
+ * @param {import("angular").IQService} $q
+ * @param {import("angular").IIntervalService} $interval
+ * @param {import("../../../api/CDNService")} cdnService
+ * @param {import("../../../api/CacheStatsService")} cacheStatsService
+ * @param {import("../../../service/utils/DateUtils")} dateUtils
+ * @param {import("../../../service/utils/LocationUtils")} locationUtils
+ * @param {import("../../../service/utils/NumberUtils")} numberUtils
+ * @param {import("../../../models/PropertiesModel")} propertiesModel
+ */
 var WidgetCDNChartController = function(cdn, $scope, $timeout, $filter, $q, $interval, cdnService, cacheStatsService, dateUtils, locationUtils, numberUtils, propertiesModel) {
 
 	var chartSeries,
diff --git a/traffic_portal/app/src/scripts/shared-libs.js b/traffic_portal/app/src/scripts/shared-libs.js
index c6261ce7ab..3a362d8348 100644
--- a/traffic_portal/app/src/scripts/shared-libs.js
+++ b/traffic_portal/app/src/scripts/shared-libs.js
@@ -52,7 +52,3 @@ require('jquery-flot-stack');
 require('jquery-flot-time');
 require('jquery-flot-tooltip');
 require('jquery-flot-axislabels');
-
-// misc
-require('es5-shim');
-require('json3');
diff --git a/traffic_portal/grunt/browserify.js b/traffic_portal/grunt/browserify.js
index 23c0b14c99..c3c790ed3b 100644
--- a/traffic_portal/grunt/browserify.js
+++ b/traffic_portal/grunt/browserify.js
@@ -35,9 +35,7 @@ module.exports = {
                 "angular-sanitize": './<%= globalConfig.importdir %>/angular-sanitize/angular-sanitize.min.js',
                 "angular-ui-router": './<%= globalConfig.importdir %>/@uirouter/angularjs/release/angular-ui-router.min.js',
                 "bootstrap": './<%= globalConfig.importdir %>/bootstrap-sass/assets/javascripts/bootstrap.min.js',
-                "es5-shim": './<%= globalConfig.importdir %>/es5-shim/es5-shim.min.js',
                 "jquery": './<%= globalConfig.importdir %>/jquery/dist/jquery.min.js',
-                "json3": './<%= globalConfig.importdir %>/json3/lib/json3.min.js',
                 'jquery-flot': './<%= globalConfig.importdir %>/flot/dist/es5/jquery.flot.js',
                 'jquery-flot-pie': './<%= globalConfig.importdir %>/flot/source/jquery.flot.pie.js',
                 'jquery-flot-stack': './<%= globalConfig.importdir %>/flot/source/jquery.flot.stack.js',
@@ -64,9 +62,7 @@ module.exports = {
                 "angular-sanitize": './<%= globalConfig.importdir %>/angular-sanitize/angular-sanitize.min.js',
                 "angular-ui-router": './<%= globalConfig.importdir %>/@uirouter/angularjs/release/angular-ui-router.min.js',
                 "bootstrap": './<%= globalConfig.importdir %>/bootstrap-sass/assets/javascripts/bootstrap.min.js',
-                "es5-shim": './<%= globalConfig.importdir %>/es5-shim/es5-shim.min.js',
                 "jquery": './<%= globalConfig.importdir %>/jquery/dist/jquery.js',
-                "json3": './<%= globalConfig.importdir %>/json3/lib/json3.min.js',
                 'jquery-flot': './<%= globalConfig.importdir %>/flot/dist/es5/jquery.flot.js',
                 'jquery-flot-pie': './<%= globalConfig.importdir %>/flot/source/jquery.flot.pie.js',
                 'jquery-flot-stack': './<%= globalConfig.importdir %>/flot/source/jquery.flot.stack.js',
diff --git a/traffic_portal/package-lock.json b/traffic_portal/package-lock.json
index 5ab37b81d5..d6d7a8517e 100644
--- a/traffic_portal/package-lock.json
+++ b/traffic_portal/package-lock.json
@@ -20,15 +20,15 @@
         "angular-sanitize": "1.8.3",
         "angular-ui-bootstrap": "0.14.3",
         "bootstrap-sass": "3.4.3",
-        "es5-shim": "4.6.7",
         "flot": "2.3.2",
         "font-awesome": "4.7.0",
         "jquery": "3.6.1",
-        "jquery.flot.tooltip": "0.9.0",
-        "json3": "3.3.3"
+        "jquery.flot.tooltip": "0.9.0"
       },
       "devDependencies": {
         "@types/angular": "^1.8.4",
+        "@types/jquery": "^3.5.14",
+        "@types/moment": "^2.13.0",
         "angular-mocks": "1.8.3",
         "browserify": "16.5.1",
         "connect-livereload": "0.6.1",
@@ -562,18 +562,43 @@
       "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
       "dev": true
     },
+    "node_modules/@types/jquery": {
+      "version": "3.5.14",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz",
+      "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==",
+      "dev": true,
+      "dependencies": {
+        "@types/sizzle": "*"
+      }
+    },
     "node_modules/@types/minimatch": {
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
       "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
       "dev": true
     },
+    "node_modules/@types/moment": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz",
+      "integrity": "sha512-DyuyYGpV6r+4Z1bUznLi/Y7HpGn4iQ4IVcGn8zrr1P4KotKLdH0sbK1TFR6RGyX6B+G8u83wCzL+bpawKU/hdQ==",
+      "deprecated": "This is a stub types definition for Moment (https://github.com/moment/moment). Moment provides its own type definitions, so you don't need @types/moment installed!",
+      "dev": true,
+      "dependencies": {
+        "moment": "*"
+      }
+    },
     "node_modules/@types/node": {
       "version": "18.11.9",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
       "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
       "dev": true
     },
+    "node_modules/@types/sizzle": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
+      "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
+      "dev": true
+    },
     "node_modules/@uirouter/angularjs": {
       "version": "0.4.3",
       "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-0.4.3.tgz",
@@ -719,9 +744,9 @@
       }
     },
     "node_modules/anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
       "dev": true,
       "dependencies": {
         "normalize-path": "^3.0.0",
@@ -1400,9 +1425,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001431",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz",
-      "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==",
+      "version": "1.0.30001434",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
+      "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
       "dev": true,
       "funding": [
         {
@@ -2219,14 +2244,6 @@
         "string-template": "~0.2.1"
       }
     },
-    "node_modules/es5-shim": {
-      "version": "4.6.7",
-      "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz",
-      "integrity": "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==",
-      "engines": {
-        "node": ">=0.4.0"
-      }
-    },
     "node_modules/escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -2707,20 +2724,6 @@
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
       "dev": true
     },
-    "node_modules/fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
     "node_modules/function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -4387,11 +4390,6 @@
         "jsonify": "~0.0.0"
       }
     },
-    "node_modules/json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA=="
-    },
     "node_modules/json5": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -5088,6 +5086,15 @@
         "resolve": "^1.17.0"
       }
     },
+    "node_modules/moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/morgan": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
@@ -6323,17 +6330,17 @@
       ]
     },
     "node_modules/socket.io": {
-      "version": "4.5.3",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz",
-      "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==",
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz",
+      "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==",
       "dev": true,
       "dependencies": {
         "accepts": "~1.3.4",
         "base64id": "~2.0.0",
         "debug": "~4.3.2",
-        "engine.io": "~6.2.0",
+        "engine.io": "~6.2.1",
         "socket.io-adapter": "~2.4.0",
-        "socket.io-parser": "~4.2.0"
+        "socket.io-parser": "~4.2.1"
       },
       "engines": {
         "node": ">=10.0.0"
@@ -7817,18 +7824,42 @@
       "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
       "dev": true
     },
+    "@types/jquery": {
+      "version": "3.5.14",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.14.tgz",
+      "integrity": "sha512-X1gtMRMbziVQkErhTQmSe2jFwwENA/Zr+PprCkF63vFq+Yt5PZ4AlKqgmeNlwgn7dhsXEK888eIW2520EpC+xg==",
+      "dev": true,
+      "requires": {
+        "@types/sizzle": "*"
+      }
+    },
     "@types/minimatch": {
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz",
       "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
       "dev": true
     },
+    "@types/moment": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/@types/moment/-/moment-2.13.0.tgz",
+      "integrity": "sha512-DyuyYGpV6r+4Z1bUznLi/Y7HpGn4iQ4IVcGn8zrr1P4KotKLdH0sbK1TFR6RGyX6B+G8u83wCzL+bpawKU/hdQ==",
+      "dev": true,
+      "requires": {
+        "moment": "*"
+      }
+    },
     "@types/node": {
       "version": "18.11.9",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
       "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==",
       "dev": true
     },
+    "@types/sizzle": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz",
+      "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
+      "dev": true
+    },
     "@uirouter/angularjs": {
       "version": "0.4.3",
       "resolved": "https://registry.npmjs.org/@uirouter/angularjs/-/angularjs-0.4.3.tgz",
@@ -7946,9 +7977,9 @@
       "dev": true
     },
     "anymatch": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
-      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
       "dev": true,
       "requires": {
         "normalize-path": "^3.0.0",
@@ -8528,9 +8559,9 @@
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30001431",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz",
-      "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==",
+      "version": "1.0.30001434",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001434.tgz",
+      "integrity": "sha512-aOBHrLmTQw//WFa2rcF1If9fa3ypkC1wzqqiKHgfdrXTWcU8C4gKVZT77eQAPWN1APys3+uQ0Df07rKauXGEYA==",
       "dev": true
     },
     "chalk": {
@@ -9202,11 +9233,6 @@
         "string-template": "~0.2.1"
       }
     },
-    "es5-shim": {
-      "version": "4.6.7",
-      "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz",
-      "integrity": "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ=="
-    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -9587,13 +9613,6 @@
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
       "dev": true
     },
-    "fsevents": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
-      "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
-      "dev": true,
-      "optional": true
-    },
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -10888,11 +10907,6 @@
         "jsonify": "~0.0.0"
       }
     },
-    "json3": {
-      "version": "3.3.3",
-      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
-      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA=="
-    },
     "json5": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -11456,6 +11470,12 @@
         }
       }
     },
+    "moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
+      "dev": true
+    },
     "morgan": {
       "version": "1.10.0",
       "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
@@ -12446,17 +12466,17 @@
       "dev": true
     },
     "socket.io": {
-      "version": "4.5.3",
-      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz",
-      "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==",
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz",
+      "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==",
       "dev": true,
       "requires": {
         "accepts": "~1.3.4",
         "base64id": "~2.0.0",
         "debug": "~4.3.2",
-        "engine.io": "~6.2.0",
+        "engine.io": "~6.2.1",
         "socket.io-adapter": "~2.4.0",
-        "socket.io-parser": "~4.2.0"
+        "socket.io-parser": "~4.2.1"
       },
       "dependencies": {
         "debug": {
diff --git a/traffic_portal/package.json b/traffic_portal/package.json
index 275345f84b..1f5c39ec6a 100644
--- a/traffic_portal/package.json
+++ b/traffic_portal/package.json
@@ -15,8 +15,10 @@
   },
   "engineStrict": true,
   "devDependencies": {
-    "angular-mocks": "1.8.3",
     "@types/angular": "^1.8.4",
+    "@types/jquery": "^3.5.14",
+    "@types/moment": "^2.13.0",
+    "angular-mocks": "1.8.3",
     "browserify": "16.5.1",
     "connect-livereload": "0.6.1",
     "connect-modrewrite": "0.10.2",
@@ -58,11 +60,9 @@
     "angular-sanitize": "1.8.3",
     "angular-ui-bootstrap": "0.14.3",
     "bootstrap-sass": "3.4.3",
-    "es5-shim": "4.6.7",
     "flot": "2.3.2",
     "font-awesome": "4.7.0",
     "jquery": "3.6.1",
-    "jquery.flot.tooltip": "0.9.0",
-    "json3": "3.3.3"
+    "jquery.flot.tooltip": "0.9.0"
   }
 }