From b53684a89e02e9686542aca2f4cd4d929d81744a Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Mon, 30 Mar 2026 14:54:50 +0300 Subject: [PATCH] chore(deps): remove unused client dependencies [BE-12749] (#2172) --- app/assets/css/index.js | 3 +- app/index.js | 2 - .../configurationsDatatable.html | 200 ------------------ .../configurationsDatatableController.js | 83 -------- app/vendors.js | 22 +- package.json | 4 - pnpm-lock.yaml | 39 ++-- webpack/webpack.analyze.js | 16 +- webpack/webpack.common.js | 2 - 9 files changed, 28 insertions(+), 343 deletions(-) delete mode 100644 app/kubernetes/components/datatables/configurations-datatable/configurationsDatatable.html delete mode 100644 app/kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js diff --git a/app/assets/css/index.js b/app/assets/css/index.js index 0b86ace7a5..0b9264e786 100644 --- a/app/assets/css/index.js +++ b/app/assets/css/index.js @@ -2,8 +2,7 @@ import 'bootstrap/dist/css/bootstrap.css'; import 'toastr/build/toastr.css'; import 'angularjs-slider/dist/rzslider.css'; import 'angular-loading-bar/build/loading-bar.css'; -import 'angular-moment-picker/dist/angular-moment-picker.min.css'; -import 'spinkit/spinkit.min.css'; +import 'spinkit/spinkit.min.css'; // ViewLoading, index.html, internal-auth. auth, import '@reach/menu-button/styles.css'; import './colors'; diff --git a/app/index.js b/app/index.js index ca31081abb..6b6a5c851b 100644 --- a/app/index.js +++ b/app/index.js @@ -41,7 +41,6 @@ angular 'ngFileUpload', 'ngMessages', 'ngResource', - 'angularUtils.directives.dirPagination', 'LocalStorageModule', 'angular-loading-bar', 'angular-clipboard', @@ -54,7 +53,6 @@ angular 'portainer.kubernetes', 'portainer.edge', 'rzModule', - 'moment-picker', constantsModule, ]) .run(onStartupAngular) diff --git a/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatable.html b/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatable.html deleted file mode 100644 index e5392cc236..0000000000 --- a/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatable.html +++ /dev/null @@ -1,200 +0,0 @@ -
- - - -
-
-
-
- -
- ConfigMaps & Secrets -
- - -
- - - -
-
- - - - - - -
-
-
- - -
System resources are hidden, this can be changed in the table settings.
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - -
-
- - - - - -
- - - - - {{ item.Name }} - external - unused - system - - {{ item.Namespace }} - {{ item.Kind | kubernetesConfigurationKindText }}{{ item.CreationDate | getisodate }} {{ item.ConfigurationOwner ? 'by ' + item.ConfigurationOwner : '' }}
Loading...
No ConfigMaps or Secrets available.
-
- -
-
-
diff --git a/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js b/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js deleted file mode 100644 index dd13bbcd7c..0000000000 --- a/app/kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js +++ /dev/null @@ -1,83 +0,0 @@ -import KubernetesConfigurationHelper from '@/kubernetes/helpers/configurationHelper'; -import KubernetesNamespaceHelper from '@/kubernetes/helpers/namespaceHelper'; - -angular.module('portainer.docker').controller('KubernetesConfigurationsDatatableController', [ - '$scope', - '$controller', - 'DatatableService', - 'Authentication', - function ($scope, $controller, DatatableService, Authentication) { - angular.extend(this, $controller('GenericDatatableController', { $scope: $scope })); - - const ctrl = this; - - this.settings = Object.assign(this.settings, { - showSystem: false, - }); - - this.onSettingsShowSystemChange = function () { - DatatableService.setDataTableSettings(this.tableKey, this.settings); - }; - - this.isSystemNamespace = function (item) { - return KubernetesNamespaceHelper.isSystemNamespace(item.Namespace); - }; - - this.isSystemToken = function (item) { - return KubernetesConfigurationHelper.isSystemToken(item); - }; - - this.isSystemConfig = function (item) { - return ctrl.isSystemNamespace(item) || ctrl.isSystemToken(item) || item.IsRegistrySecret; - }; - - this.isExternalConfiguration = function (item) { - return KubernetesConfigurationHelper.isExternalConfiguration(item); - }; - - this.isDisplayed = function (item) { - return !ctrl.isSystemConfig(item) || (ctrl.settings.showSystem && ctrl.isAdmin); - }; - - /** - * Do not allow configurations in system namespaces to be selected - */ - this.allowSelection = function (item) { - return !this.isSystemConfig(item) && !item.Used; - }; - - this.$onInit = function () { - this.isAdmin = Authentication.isAdmin(); - this.setDefaults(); - this.prepareTableFromDataset(); - - this.state.orderBy = this.orderBy; - var storedOrder = DatatableService.getDataTableOrder(this.tableKey); - if (storedOrder !== null) { - this.state.reverseOrder = storedOrder.reverse; - this.state.orderBy = storedOrder.orderBy; - } - - var textFilter = DatatableService.getDataTableTextFilters(this.tableKey); - if (textFilter !== null) { - this.state.textFilter = textFilter; - this.onTextFilterChange(); - } - - var storedFilters = DatatableService.getDataTableFilters(this.tableKey); - if (storedFilters !== null) { - this.filters = storedFilters; - } - if (this.filters && this.filters.state) { - this.filters.state.open = false; - } - - var storedSettings = DatatableService.getDataTableSettings(this.tableKey); - if (storedSettings !== null) { - this.settings = storedSettings; - this.settings.open = false; - } - this.onSettingsRepeaterChange(); - }; - }, -]); diff --git a/app/vendors.js b/app/vendors.js index 274a1f1d92..46e1dc04c4 100644 --- a/app/vendors.js +++ b/app/vendors.js @@ -1,19 +1,15 @@ import angular from 'angular'; -import 'moment'; import 'angular-sanitize'; -import 'ng-file-upload'; -import 'angular-messages'; -import 'angular-resource'; -import 'angular-utils-pagination'; -import 'angular-local-storage'; -import 'angular-loading-bar'; -import 'angular-clipboard'; -import 'angular-file-saver'; -import 'angularjs-scroll-glue'; -import 'angularjs-slider'; +import 'ng-file-upload'; // build-image, import-image, kubernetes configuration data, endpoint security, init admin +import 'angular-messages'; // used for form helpers - ng-message +import 'angular-resource'; // used for http services +import 'angular-local-storage'; // used by localStorage service which is used every where +import 'angular-loading-bar'; // used in app/config.js and HeaderContainer - can be removed once we're not using the $http and $resource modules +import 'angular-clipboard'; // log-viewer, service edit, kube configmap edit, kube secret edit +import 'angular-file-saver'; // used in host-browser, volume-browser, logViewer, images edit, kube app logs, kube stacks logs, user-activity +import 'angularjs-scroll-glue'; // used in logViewer +import 'angularjs-slider'; // used in services create and edit import 'bootstrap/dist/js/bootstrap.js'; -import 'js-yaml/dist/js-yaml.js'; import 'angular-ui-bootstrap'; -import 'angular-moment-picker'; window.angular = angular; diff --git a/package.json b/package.json index 3ba435fe2e..d0b6680b6b 100644 --- a/package.json +++ b/package.json @@ -70,11 +70,9 @@ "angular-local-storage": "~0.5.2", "angular-messages": "1.8.2", "angular-mocks": "1.8.2", - "angular-moment-picker": "^0.10.2", "angular-resource": "1.8.2", "angular-sanitize": "1.8.2", "angular-ui-bootstrap": "~2.5.0", - "angular-utils-pagination": "~0.11.1", "angularjs-scroll-glue": "^2.2.0", "angularjs-slider": "^6.4.0", "axios": "^1.13.5", @@ -103,7 +101,6 @@ "i18next-http-backend": "^1.3.1", "jquery": "^3.6.0", "js-base64": "^3.7.2", - "js-yaml": "^3.14.2", "jsdom": "^24", "json-schema": "^0.4.0", "lodash": "^4.17.21", @@ -247,7 +244,6 @@ "jquery": "^3.6.0", "decompress": "^4.2.1", "lodash": "^4.17.21", - "js-yaml": "^3.14.0", "minimist": "^1.2.6", "http-proxy": "^1.18.1", "daterangepicker>jquery": "^3.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1aef9b3dae..0f201d86f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,6 @@ overrides: jquery: ^3.6.0 decompress: ^4.2.1 lodash: ^4.17.21 - js-yaml: ^3.14.0 minimist: ^1.2.6 http-proxy: ^1.18.1 daterangepicker>jquery: ^3.5.1 @@ -141,9 +140,6 @@ importers: angular-mocks: specifier: 1.8.2 version: 1.8.2 - angular-moment-picker: - specifier: ^0.10.2 - version: 0.10.2 angular-resource: specifier: 1.8.2 version: 1.8.2 @@ -153,9 +149,6 @@ importers: angular-ui-bootstrap: specifier: ~2.5.0 version: 2.5.6 - angular-utils-pagination: - specifier: ~0.11.1 - version: 0.11.1 angularjs-scroll-glue: specifier: ^2.2.0 version: 2.2.0 @@ -240,9 +233,6 @@ importers: js-base64: specifier: ^3.7.2 version: 3.7.2 - js-yaml: - specifier: ^3.14.0 - version: 3.14.2 jsdom: specifier: ^24 version: 24.1.3 @@ -3650,9 +3640,6 @@ packages: angular-mocks@1.8.2: resolution: {integrity: sha512-I5L3P0l21HPdVsP4A4qWmENt4ePjjbkDFdAzOaM7QiibFySbt14DptPbt2IjeG4vFBr4vSLbhIz8Fk03DISl8Q==} - angular-moment-picker@0.10.2: - resolution: {integrity: sha512-WvmrQM0zEcFqi50yDELaF34Ilrx4PtL7mWLcpTZCJGQDvMlIsxJrB30LxOkoJv8yrrLxD2s6nnR3t1/SqioWWw==} - angular-resource@1.8.2: resolution: {integrity: sha512-CbTu8ypkVZMBLm+Wd+jI9xR7QEVCeUgN8WXsr9Yi9l0s/8ZQa5kEIuYX3F/75Ej8Xs1Jp9DoKjAyvACI6Q8IJA==} deprecated: For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward. @@ -3664,9 +3651,6 @@ packages: angular-ui-bootstrap@2.5.6: resolution: {integrity: sha512-yzcHpPMLQl0232nDzm5P4iAFTFQ9dMw0QgFLuKYbDj9M0xJ62z0oudYD/Lvh1pWfRsukiytP4Xj6BHOSrSXP8A==} - angular-utils-pagination@0.11.1: - resolution: {integrity: sha512-0ZTwRASUfl9hNGreC5EiJj82mqRfEeoiu6ufnIne3kzDxt28mDqc0c66ZUoTxhosecTJLZVeUOBbfrpeSOUQrA==} - angular@1.8.2: resolution: {integrity: sha512-IauMOej2xEe7/7Ennahkbb5qd/HFADiNuLSESz9Q27inmi32zB0lnAsFeLEWcox3Gd1F6YhNd1CP7/9IukJ0Gw==} deprecated: For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward. @@ -5750,6 +5734,10 @@ packages: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + jsdoc-type-pratt-parser@4.8.0: resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} engines: {node: '>=12.0.0'} @@ -8595,7 +8583,7 @@ snapshots: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 call-me-maybe: 1.0.2 - js-yaml: 3.14.2 + js-yaml: 4.1.1 '@apidevtools/openapi-schemas@2.1.0': {} @@ -9785,7 +9773,7 @@ snapshots: globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 - js-yaml: 3.14.2 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -11906,19 +11894,12 @@ snapshots: angular-mocks@1.8.2: {} - angular-moment-picker@0.10.2: - dependencies: - angular: 1.8.2 - moment: 2.29.4 - angular-resource@1.8.2: {} angular-sanitize@1.8.2: {} angular-ui-bootstrap@2.5.6: {} - angular-utils-pagination@0.11.1: {} - angular@1.8.2: {} angularjs-scroll-glue@2.2.0: {} @@ -12627,7 +12608,7 @@ snapshots: cosmiconfig@8.2.0: dependencies: import-fresh: 3.3.0 - js-yaml: 3.14.2 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 @@ -13409,7 +13390,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 3.14.2 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -14313,6 +14294,10 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + jsdoc-type-pratt-parser@4.8.0: {} jsdom@24.1.3: diff --git a/webpack/webpack.analyze.js b/webpack/webpack.analyze.js index 4cf8bec045..5c1f479eb6 100644 --- a/webpack/webpack.analyze.js +++ b/webpack/webpack.analyze.js @@ -1,12 +1,8 @@ -const SpeedMeasurePlugin = require('speed-measure-webpack-plugin'); -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const smp = new SpeedMeasurePlugin(); -const merge = require('webpack-merge'); -const webpackConfig = require('./webpack.production.js'); +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import { merge } from 'webpack-merge'; +import webpackConfig from './webpack.production.js'; // const webpackConfig = require('./webpack.develop.js'); -module.exports = smp.wrap( - merge(webpackConfig, { - plugins: [new BundleAnalyzerPlugin()], - }) -); +export default merge(webpackConfig, { + plugins: [new BundleAnalyzerPlugin()], +}); diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index cea0837373..0ef7d7566c 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -149,8 +149,6 @@ module.exports = { 'window.jQuery': 'jquery', 'window.moment': 'moment', moment: 'moment', - 'window.jsyaml': 'js-yaml', - jsyaml: 'js-yaml', }), new MiniCssExtractPlugin({ filename: '[name].[contenthash].css',