1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Compare commits

..

71 Commits

Author SHA1 Message Date
gitstart
f1a960fd78 Add timestamps to the logger messages
Signed-off-by: gitstart <bot@gitstart.com>
Co-authored-by: LuisChiej <54555805+LuisChiej@users.noreply.github.com>
2023-08-09 12:01:42 -04:00
Dustin Feucht
452042f5c5 chore: Update link in CONTRIBUTING.md
The page the link is redirecting to does return a 404.
That's why a link to the most general sub-page is more ideal.

Signed-off-by: Dustin Feucht <code.nopjar@gmail.com>
2023-08-09 09:26:57 -04:00
John Daly
de5fc19240 Update packages/core/src/renderer/components/workloads-pods/container-metrics.injectable.ts
Signed-off-by: John Daly <john.daly2@gmail.com>
2023-08-09 09:26:38 -04:00
John Daly
6e8e58eaf9 Updating PodDetailsContainerMetrics to support fetching metrics for Pods that have multiple containers
Signed-off-by: John Daly <john.daly2@gmail.com>
2023-08-09 09:26:38 -04:00
Gabriel
4ab97d2372 chore: Extract @k8slens/spinner
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-02 13:08:18 +02:00
Gabriel
323b3759fc chore: resolve comments
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 23:38:14 +02:00
Gabriel
2547b19245 chore: update snapshots
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 23:38:14 +02:00
Gabriel
8b69c12ed4 chore: extract @k8slens/notifications
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 23:38:14 +02:00
Jari Kolehmainen
f602ce8f46 chore: extract prometheus from core
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2023-06-01 13:53:39 -04:00
Gabriel
7274cdde50 chore: include types with void operator for coverage
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 19:03:09 +02:00
Gabriel
34ca6509b8 chore: extract tokens
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 19:03:09 +02:00
Sebastian Malton
21914db35b chore: Fix unit tests
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
e7f32bce30 fix: Add registration of kubeApiSpecificsFeature
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
d144558c6d chore: Update lockfile
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
a546ae1000 chore: Extract specific KubeApi injectables to own package
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
84017b48db chore: Fix spelling mistake in KubeApi documentation
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
0dd833c00b chore!: Switch to using specific log functions in KubeApi dependencies
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
eee567b7f2 chore: Move storesAndApisCanBeCreatedInjectionToken to @k8slens/kube-api-specifics
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Sebastian Malton
2efa801838 chore: Fix typo in kube-api documentation
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-06-01 09:41:59 -04:00
Jan-Otto Kröpke
48a5e3c3be Update @electron/notarize
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
2023-06-01 08:42:27 -04:00
Gabriel
683ac4efcc chore: remove injectable from export
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 11:36:30 +02:00
Gabriel
58e4ebcdea chore: bump package.json
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 11:36:30 +02:00
Gabriel
86fa93ac8b chore: extract @k8slens/random
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-06-01 11:36:30 +02:00
Janne Savolainen
847f2b1b7b Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Bump ogre-tools to latest

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
2023-06-01 11:09:58 +03:00
Janne Savolainen
fe77164311 Bump ogre-tools for linkable improvements
Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
2023-06-01 11:09:58 +03:00
Iku-turso
9a2d585e62 feat: Add support for lens-webpack-build --watch
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
2023-06-01 08:57:01 +03:00
Iku-turso
28c9eeec36 feat: Make lens-webpack-build cope long lasting processes, eg. watch
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
2023-06-01 08:57:01 +03:00
Iku-turso
0c2cc25b5b feat: Make webpack configuration trigger linkable-push
Previously this was done by lens-webpack-build, which is awkward for
build-scripts that watch.

Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
2023-06-01 08:57:01 +03:00
Sebastian Malton
0c1e822788 chore: Move files around to better places
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 16:21:35 -04:00
Sebastian Malton
34adfcd20b fix: Retrieve projectVersion from main for 'extensions-persistent-storage'
- Prevent the version being changed by the renderer

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 16:21:35 -04:00
Sebastian Malton
5511a2f461 chore: Update snapshots after rebase
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
f6cc1b00c2 chore: Fix lint after rebase
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
b3990b535e chore: Fixup dependency versions of @k8slens/cluster-sidebar
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
a0e38b2178 chore: Update @orge-tools/* deps
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
b1a988e133 chore: Move around Custom Resource and Custom Resource Definition files to simplify names
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
66a7615e9c chore: Factor out NavigateToCustomResources type
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
e641509e3d chore: Cleanup custom resource route definition
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
147be22db3 fix: The command pallet command for navigating to Custom Resource Definitions should navigate to the correct route
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
bedd7a25bb fix: Custom Resource Definitions sidebar item should navigate to the correct route
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
49db31a9aa fix: Custom Resource Definitions should be the first entry in the side bar
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
1ff2436240 chore: Fix tests after rebase
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
54b6375a7e chore: Fix integration tests failing due to helm testid's changing
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
eb78edb226 fix: Fix formatting of custom resource sidebar items
- The titles should better handle being line wrapped

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
d37a765ac2 chore: Improve title formatting for Horizontal/Vertical Pod Autoscalers
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
27a14714c3 chore: Fix IDs for some sidebar items
- Also cleanup formatting of the sidebar item titles

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
27aaa3623d chore: Fixup tests snapshots to match new testid behaviour
- Move order-of-sidebar-items to the new package
- Fix the extension sidebar item registrator

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
7924ab5504 chore: Convert sidebarItemInjectionToken to use InjectWithMetadata instead of duplicating the IDs
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
04273dcda2 chore: Rename sidebar item injectable files
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Sebastian Malton
500ac15703 chore: Extract sidebar item injection token into separate package
- Add unit tests to cover custom resources sidebar items

Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-31 14:23:53 -04:00
Gabriel
d28da8e7ac chore: update package version
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 23:02:45 +02:00
Gabriel
da1d35d1de chore: extract @k8slens/animate
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 23:02:45 +02:00
Gabriel
ea1f85f224 extract @k8slens/icon
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 23:02:45 +02:00
Gabriel
9e751938bd chore: bump ogre-tools
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 21:35:33 +02:00
Gabriel
8ebe99ae54 chore: update snapshots
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 21:35:33 +02:00
Gabriel
3715a47067 chore: fix lint
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 21:35:33 +02:00
Gabriel
41798b718a extract @k8slens/icon
Signed-off-by: Gabriel <gaccettola@mirantis.com>
2023-05-30 21:35:33 +02:00
Iku-turso
7a4f30ab61 chore: Add infra for linkable
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Mikko Aspiala <mikko.aspiala@gmail.com>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
2023-05-30 10:56:53 -04:00
Iku-turso
f02e09245b chore: Bump linkable to recover from yalc error
Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
2023-05-30 10:56:53 -04:00
Jim Ehrismann
9f13931318
Temporary fix for extensions always disabled on startup (#7801)
Signed-off-by: Jim Ehrismann <jehrismann@mirantis.com>
2023-05-30 10:24:27 -04:00
Sebastian Malton
5432259e05 fix: Fix build not working due to missing dependencies
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-29 09:38:24 -04:00
Sebastian Malton
8fd0b5fab4 chore: Move kubeApiInjectionToken into own package
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-29 09:38:24 -04:00
Sebastian Malton
711ad11bf1 chore: Revert kube-api-parse test changes
Signed-off-by: Sebastian Malton <sebastian@malton.name>
2023-05-29 09:38:24 -04:00
Sami Tiilikainen
75beacfa7c Lint and dependency fix
Signed-off-by: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com>
2023-05-29 09:38:24 -04:00
Sami Tiilikainen
b7a636dd74 Add kube-object dependency to prevent duplicate instances
Signed-off-by: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com>
2023-05-29 09:38:24 -04:00
Sami Tiilikainen
d674680cbb Use lens-webpack-build to get linkable
Signed-off-by: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com>
2023-05-29 09:38:24 -04:00
Jari Kolehmainen
0298b36a9f chore: kube-api lint fixes
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2023-05-29 09:38:24 -04:00
Jari Kolehmainen
7b8bd1e758 chore: move kube-api related tests from core
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2023-05-29 09:38:24 -04:00
Jari Kolehmainen
e8be89eb51 chore: fix kube-api dependency to core
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2023-05-29 09:38:24 -04:00
Jari Kolehmainen
1ab5323f68 chore: extract kube-api from core
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
2023-05-29 09:38:24 -04:00
Alex Andreev
a22229ba60 Linter fix
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2023-05-29 12:00:33 +03:00
Alex Andreev
26b8ed66da Reverting table injection tokens (7754)
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
2023-05-29 12:00:33 +03:00
954 changed files with 27961 additions and 24639 deletions

3
.gitignore vendored
View File

@ -9,3 +9,6 @@ lerna-debug.log
coverage coverage
dist dist
node_modules node_modules
.linkable.json
yalc.lock
.yalc

View File

@ -1,3 +1,3 @@
# Contributing to Lens # Contributing to Lens
See [Contributing to Lens](https://docs.k8slens.dev/contributing/) documentation. See [Contributing to Lens](https://docs.k8slens.dev/contributing/contribute-to-lens/) documentation.

View File

@ -2,7 +2,7 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
const { notarize } = require("electron-notarize"); const { notarize } = require("@electron/notarize");
exports.default = async function notarizing(context) { exports.default = async function notarizing(context) {
const { electronPlatformName, appOutDir } = context; const { electronPlatformName, appOutDir } = context;
@ -22,6 +22,8 @@ exports.default = async function notarizing(context) {
appPath: `${appOutDir}/${appName}.app`, appPath: `${appOutDir}/${appName}.app`,
appleId: process.env.APPLEID, appleId: process.env.APPLEID,
appleIdPassword: process.env.APPLEIDPASS, appleIdPassword: process.env.APPLEIDPASS,
ascProvider:process.env.ASCPROVIDER, ascProvider: process.env.ASCPROVIDER,
teamId: process.env.APPLETEAMID,
tool: process.env.NOTARIZE_TOOL || "legacy",
}); });
}; };

View File

@ -172,219 +172,219 @@ const scenarios = [
{ {
expectedSelector: "div[data-testid='cluster-overview-page'] div.label", expectedSelector: "div[data-testid='cluster-overview-page'] div.label",
parentSidebarItemTestId: null, parentSidebarItemTestId: null,
sidebarItemTestId: "sidebar-item-link-for-cluster-overview", sidebarItemTestId: "link-for-sidebar-item-cluster-overview",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: null, parentSidebarItemTestId: null,
sidebarItemTestId: "sidebar-item-link-for-nodes", sidebarItemTestId: "link-for-sidebar-item-nodes",
}, },
{ {
expectedSelector: 'h5 >> text="Overview"', expectedSelector: 'h5 >> text="Overview"',
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-overview", sidebarItemTestId: "link-for-sidebar-item-workloads-overview",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-pods", sidebarItemTestId: "link-for-sidebar-item-pods",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-deployments", sidebarItemTestId: "link-for-sidebar-item-deployments",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-daemon-sets", sidebarItemTestId: "link-for-sidebar-item-daemon-sets",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-stateful-sets", sidebarItemTestId: "link-for-sidebar-item-stateful-sets",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-replica-sets", sidebarItemTestId: "link-for-sidebar-item-replica-sets",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-jobs", sidebarItemTestId: "link-for-sidebar-item-jobs",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-workloads", parentSidebarItemTestId: "link-for-sidebar-item-workloads",
sidebarItemTestId: "sidebar-item-link-for-cron-jobs", sidebarItemTestId: "link-for-sidebar-item-cron-jobs",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-config-maps", sidebarItemTestId: "link-for-sidebar-item-config-maps",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-secrets", sidebarItemTestId: "link-for-sidebar-item-secrets",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-resource-quotas", sidebarItemTestId: "link-for-sidebar-item-resource-quotas",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-limit-ranges", sidebarItemTestId: "link-for-sidebar-item-limit-ranges",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-horizontal-pod-auto-scalers", sidebarItemTestId: "link-for-sidebar-item-horizontal-pod-autoscalers",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-pod-disruption-budgets", sidebarItemTestId: "link-for-sidebar-item-pod-disruption-budgets",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-network", parentSidebarItemTestId: "link-for-sidebar-item-network",
sidebarItemTestId: "sidebar-item-link-for-services", sidebarItemTestId: "link-for-sidebar-item-services",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-network", parentSidebarItemTestId: "link-for-sidebar-item-network",
sidebarItemTestId: "sidebar-item-link-for-endpoints", sidebarItemTestId: "link-for-sidebar-item-endpoints",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-network", parentSidebarItemTestId: "link-for-sidebar-item-network",
sidebarItemTestId: "sidebar-item-link-for-ingresses", sidebarItemTestId: "link-for-sidebar-item-ingresses",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-network", parentSidebarItemTestId: "link-for-sidebar-item-network",
sidebarItemTestId: "sidebar-item-link-for-network-policies", sidebarItemTestId: "link-for-sidebar-item-network-policies",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-storage", parentSidebarItemTestId: "link-for-sidebar-item-storage",
sidebarItemTestId: "sidebar-item-link-for-persistent-volume-claims", sidebarItemTestId: "link-for-sidebar-item-persistent-volume-claims",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-storage", parentSidebarItemTestId: "link-for-sidebar-item-storage",
sidebarItemTestId: "sidebar-item-link-for-persistent-volumes", sidebarItemTestId: "link-for-sidebar-item-persistent-volumes",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-storage", parentSidebarItemTestId: "link-for-sidebar-item-storage",
sidebarItemTestId: "sidebar-item-link-for-storage-classes", sidebarItemTestId: "link-for-sidebar-item-storage-classes",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: null, parentSidebarItemTestId: null,
sidebarItemTestId: "sidebar-item-link-for-namespaces", sidebarItemTestId: "link-for-sidebar-item-namespaces",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: null, parentSidebarItemTestId: null,
sidebarItemTestId: "sidebar-item-link-for-events", sidebarItemTestId: "link-for-sidebar-item-events",
}, },
{ {
expectedSelector: "div.HelmCharts input", expectedSelector: "div.HelmCharts input",
parentSidebarItemTestId: "sidebar-item-link-for-helm", parentSidebarItemTestId: "link-for-sidebar-item-helm",
sidebarItemTestId: "sidebar-item-link-for-charts", sidebarItemTestId: "link-for-sidebar-item-helm-charts",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-helm", parentSidebarItemTestId: "link-for-sidebar-item-helm",
sidebarItemTestId: "sidebar-item-link-for-releases", sidebarItemTestId: "link-for-sidebar-item-helm-releases",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-user-management", parentSidebarItemTestId: "link-for-sidebar-item-user-management",
sidebarItemTestId: "sidebar-item-link-for-service-accounts", sidebarItemTestId: "link-for-sidebar-item-service-accounts",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-user-management", parentSidebarItemTestId: "link-for-sidebar-item-user-management",
sidebarItemTestId: "sidebar-item-link-for-cluster-roles", sidebarItemTestId: "link-for-sidebar-item-cluster-roles",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-user-management", parentSidebarItemTestId: "link-for-sidebar-item-user-management",
sidebarItemTestId: "sidebar-item-link-for-roles", sidebarItemTestId: "link-for-sidebar-item-roles",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-user-management", parentSidebarItemTestId: "link-for-sidebar-item-user-management",
sidebarItemTestId: "sidebar-item-link-for-cluster-role-bindings", sidebarItemTestId: "link-for-sidebar-item-cluster-role-bindings",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-user-management", parentSidebarItemTestId: "link-for-sidebar-item-user-management",
sidebarItemTestId: "sidebar-item-link-for-role-bindings", sidebarItemTestId: "link-for-sidebar-item-role-bindings",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: null, parentSidebarItemTestId: null,
sidebarItemTestId: "sidebar-item-link-for-custom-resources", sidebarItemTestId: "link-for-sidebar-item-custom-resources",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-validating-webhook-configurations", sidebarItemTestId: "link-for-sidebar-item-validating-webhook-configurations",
}, },
{ {
expectedSelector: "h5.title", expectedSelector: "h5.title",
parentSidebarItemTestId: "sidebar-item-link-for-config", parentSidebarItemTestId: "link-for-sidebar-item-config",
sidebarItemTestId: "sidebar-item-link-for-mutating-webhook-configurations", sidebarItemTestId: "link-for-sidebar-item-mutating-webhook-configurations",
}, },
]; ];
const navigateToPods = async (frame: Frame) => { const navigateToPods = async (frame: Frame) => {
await frame.click(`[data-testid="sidebar-item-link-for-workloads"]`); await frame.click(`[data-testid="link-for-sidebar-item-workloads"]`);
await frame.click(`[data-testid="sidebar-item-link-for-pods"]`); await frame.click(`[data-testid="link-for-sidebar-item-pods"]`);
}; };
const navigateToNamespaces = async (frame: Frame) => { const navigateToNamespaces = async (frame: Frame) => {
await frame.click(`[data-testid="sidebar-item-link-for-namespaces"]`); await frame.click(`[data-testid="link-for-sidebar-item-namespaces"]`);
}; };

View File

@ -30,7 +30,7 @@
"dev:main": "cross-env NODE_ENV=development webpack --config webpack/main.ts --progress --watch", "dev:main": "cross-env NODE_ENV=development webpack --config webpack/main.ts --progress --watch",
"dev:renderer": "cross-env NODE_ENV=development ts-node ./webpack/dev-server.ts", "dev:renderer": "cross-env NODE_ENV=development ts-node ./webpack/dev-server.ts",
"test:integration": "jest -xyz --runInBand --modulePaths=[\"<rootDir>/integration/\"];", "test:integration": "jest -xyz --runInBand --modulePaths=[\"<rootDir>/integration/\"];",
"build:tray-icons": "npm run --workspace @k8slens/generate-tray-icons generate -- --output static/build/tray --input @k8slens/core/icons/logo-lens.svg --notice-icon @k8slens/core/icons/notice.svg --spinner-icon @k8slens/core/icons/arrow-spinner.svg", "build:tray-icons": "npm run --workspace @k8slens/generate-tray-icons generate -- --output static/build/tray --input @k8slens/icon/icons/logo-lens.svg --notice-icon @k8slens/icon/icons/notice.svg --spinner-icon @k8slens/icon/icons/arrow-spinner.svg",
"download:binaries": "npm run --workspace @k8slens/ensure-binaries ensure -- --package package.json --base-dir binaries/client", "download:binaries": "npm run --workspace @k8slens/ensure-binaries ensure -- --package package.json --base-dir binaries/client",
"postinstall": "electron-rebuild" "postinstall": "electron-rebuild"
}, },
@ -184,12 +184,16 @@
"@k8slens/application-for-electron-main": "^6.5.0", "@k8slens/application-for-electron-main": "^6.5.0",
"@k8slens/button": "^1.0.0", "@k8slens/button": "^1.0.0",
"@k8slens/cluster-settings": "^6.5.0", "@k8slens/cluster-settings": "^6.5.0",
"@k8slens/cluster-sidebar": "^1.0.0",
"@k8slens/core": "^6.5.0", "@k8slens/core": "^6.5.0",
"@k8slens/ensure-binaries": "^6.5.0", "@k8slens/ensure-binaries": "^6.5.0",
"@k8slens/error-boundary": "^1.0.0", "@k8slens/error-boundary": "^1.0.0",
"@k8slens/event-emitter": "^1.0.0", "@k8slens/event-emitter": "^1.0.0",
"@k8slens/feature-core": "^6.5.0", "@k8slens/feature-core": "^6.5.0",
"@k8slens/json-api": "^1.0.0-alpha.3",
"@k8slens/keyboard-shortcuts": "^1.0.0", "@k8slens/keyboard-shortcuts": "^1.0.0",
"@k8slens/kube-api": "^1.0.0-alpha.1",
"@k8slens/kube-api-specifics": "^1.0.0",
"@k8slens/kube-object": "^1.0.0", "@k8slens/kube-object": "^1.0.0",
"@k8slens/kubectl-versions": "^1.0.0", "@k8slens/kubectl-versions": "^1.0.0",
"@k8slens/legacy-extension-example": "^1.0.0", "@k8slens/legacy-extension-example": "^1.0.0",
@ -202,6 +206,8 @@
"@k8slens/messaging-for-renderer": "^1.0.0", "@k8slens/messaging-for-renderer": "^1.0.0",
"@k8slens/metrics": "^6.5.0", "@k8slens/metrics": "^6.5.0",
"@k8slens/node-fetch": "^6.5.0", "@k8slens/node-fetch": "^6.5.0",
"@k8slens/prometheus": "^1.0.0",
"@k8slens/random": "^1.0.0",
"@k8slens/react-application": "^1.0.0", "@k8slens/react-application": "^1.0.0",
"@k8slens/resizing-anchor": "^1.0.0", "@k8slens/resizing-anchor": "^1.0.0",
"@k8slens/resource-templates": "^1.0.0", "@k8slens/resource-templates": "^1.0.0",
@ -213,11 +219,11 @@
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^0.18.1",
"@material-ui/core": "^4.12.3", "@material-ui/core": "^4.12.3",
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"@sentry/electron": "^3.0.8", "@sentry/electron": "^3.0.8",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"ansi_up": "^5.2.1", "ansi_up": "^5.2.1",
@ -293,6 +299,7 @@
"xterm-link-provider": "^1.3.1" "xterm-link-provider": "^1.3.1"
}, },
"devDependencies": { "devDependencies": {
"@electron/notarize": "^1.2.3",
"@electron/rebuild": "^3.2.10", "@electron/rebuild": "^3.2.10",
"@k8slens/generate-tray-icons": "^6.5.0", "@k8slens/generate-tray-icons": "^6.5.0",
"@k8slens/test-utils": "^1.0.0", "@k8slens/test-utils": "^1.0.0",
@ -326,7 +333,6 @@
"css-loader": "^6.7.2", "css-loader": "^6.7.2",
"electron": "^22.3.10", "electron": "^22.3.10",
"electron-builder": "^23.6.0", "electron-builder": "^23.6.0",
"electron-notarize": "^0.3.0",
"esbuild-loader": "^2.20.0", "esbuild-loader": "^2.20.0",
"fork-ts-checker-webpack-plugin": "^7.3.0", "fork-ts-checker-webpack-plugin": "^7.3.0",
"html-webpack-plugin": "^5.5.1", "html-webpack-plugin": "^5.5.1",

View File

@ -12,6 +12,9 @@ import { applicationFeature, startApplicationInjectionToken } from '@k8slens/app
import { applicationFeatureForElectronMain } from '@k8slens/application-for-electron-main' import { applicationFeatureForElectronMain } from '@k8slens/application-for-electron-main'
import { messagingFeatureForMain } from "@k8slens/messaging-for-main"; import { messagingFeatureForMain } from "@k8slens/messaging-for-main";
import { loggerFeature } from "@k8slens/logger"; import { loggerFeature } from "@k8slens/logger";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { prometheusFeature } from "@k8slens/prometheus";
const environment = "main"; const environment = "main";
@ -24,14 +27,15 @@ registerMobX(di);
runInAction(() => { runInAction(() => {
registerLensCore(di, environment); registerLensCore(di, environment);
registerFeature(di, registerFeature(
di,
loggerFeature, loggerFeature,
); prometheusFeature,
registerFeature(di,
applicationFeature, applicationFeature,
applicationFeatureForElectronMain, applicationFeatureForElectronMain,
messagingFeatureForMain, messagingFeatureForMain,
randomFeature,
kubeApiSpecificsFeature,
); );
try { try {

View File

@ -3,6 +3,10 @@ import "@k8slens/button/styles";
import "@k8slens/error-boundary/styles"; import "@k8slens/error-boundary/styles";
import "@k8slens/tooltip/styles"; import "@k8slens/tooltip/styles";
import "@k8slens/resizing-anchor/styles"; import "@k8slens/resizing-anchor/styles";
import "@k8slens/icon/styles";
import "@k8slens/animate/styles";
import "@k8slens/notifications/styles";
import "@k8slens/spinner/styles";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import { import {
@ -10,7 +14,6 @@ import {
commonExtensionApi as Common, commonExtensionApi as Common,
registerLensCore, registerLensCore,
metricsFeature, metricsFeature,
tableFeature,
} from "@k8slens/core/renderer"; } from "@k8slens/core/renderer";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
import { registerFeature } from "@k8slens/feature-core"; import { registerFeature } from "@k8slens/feature-core";
@ -26,6 +29,11 @@ import { keyboardShortcutsFeature } from "@k8slens/keyboard-shortcuts";
import { reactApplicationFeature } from "@k8slens/react-application"; import { reactApplicationFeature } from "@k8slens/react-application";
import { routingFeature } from "@k8slens/routing"; import { routingFeature } from "@k8slens/routing";
import { loggerFeature } from "@k8slens/logger"; import { loggerFeature } from "@k8slens/logger";
import { animateFeature } from "@k8slens/animate";
import { clusterSidebarFeature } from "@k8slens/cluster-sidebar";
import { randomFeature } from "@k8slens/random";
import { kubeApiSpecificsFeature } from "@k8slens/kube-api-specifics";
import { notificationsFeature } from "@k8slens/notifications";
const environment = "renderer"; const environment = "renderer";
@ -51,7 +59,11 @@ runInAction(() => {
reactApplicationFeature, reactApplicationFeature,
routingFeature, routingFeature,
metricsFeature, metricsFeature,
tableFeature, animateFeature,
clusterSidebarFeature,
randomFeature,
kubeApiSpecificsFeature,
notificationsFeature,
); );
autoRegister({ autoRegister({

578
package-lock.json generated
View File

@ -5,12 +5,13 @@
"packages": { "packages": {
"": { "": {
"name": "lens-monorepo", "name": "lens-monorepo",
"hasInstallScript": true,
"workspaces": [ "workspaces": [
"packages/**/*", "packages/**/*",
"open-lens" "open-lens"
], ],
"devDependencies": { "devDependencies": {
"@ogre-tools/linkable": "^16.1.0", "@ogre-tools/linkable": "^17.2.0",
"adr": "^1.4.3", "adr": "^1.4.3",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"lerna": "^6.6.1", "lerna": "^6.6.1",
@ -2187,6 +2188,19 @@
"node": ">= 4.0.0" "node": ">= 4.0.0"
} }
}, },
"node_modules/@electron/notarize": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.3.tgz",
"integrity": "sha512-9oRzT56rKh5bspk3KpAVF8lPKHYQrBnRwcgiOeR0hdilVEQmszDaAu0IPCPrwwzJN0ugNs0rRboTreHMt/6mBQ==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
"fs-extra": "^9.0.1"
},
"engines": {
"node": ">= 10.0.0"
}
},
"node_modules/@electron/rebuild": { "node_modules/@electron/rebuild": {
"version": "3.2.13", "version": "3.2.13",
"resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.2.13.tgz", "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.2.13.tgz",
@ -3681,6 +3695,10 @@
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
}, },
"node_modules/@k8slens/animate": {
"resolved": "packages/ui-components/animate",
"link": true
},
"node_modules/@k8slens/application": { "node_modules/@k8slens/application": {
"resolved": "packages/technical-features/application/agnostic", "resolved": "packages/technical-features/application/agnostic",
"link": true "link": true
@ -3697,6 +3715,10 @@
"resolved": "packages/cluster-settings", "resolved": "packages/cluster-settings",
"link": true "link": true
}, },
"node_modules/@k8slens/cluster-sidebar": {
"resolved": "packages/cluster-sidebar",
"link": true
},
"node_modules/@k8slens/computed-channel": { "node_modules/@k8slens/computed-channel": {
"resolved": "packages/technical-features/messaging/computed-channel", "resolved": "packages/technical-features/messaging/computed-channel",
"link": true "link": true
@ -3733,6 +3755,10 @@
"resolved": "packages/generate-tray-icons", "resolved": "packages/generate-tray-icons",
"link": true "link": true
}, },
"node_modules/@k8slens/icon": {
"resolved": "packages/ui-components/icon",
"link": true
},
"node_modules/@k8slens/jest": { "node_modules/@k8slens/jest": {
"resolved": "packages/infrastructure/jest", "resolved": "packages/infrastructure/jest",
"link": true "link": true
@ -3745,6 +3771,14 @@
"resolved": "packages/business-features/keyboard-shortcuts", "resolved": "packages/business-features/keyboard-shortcuts",
"link": true "link": true
}, },
"node_modules/@k8slens/kube-api": {
"resolved": "packages/utility-features/kube-api",
"link": true
},
"node_modules/@k8slens/kube-api-specifics": {
"resolved": "packages/utility-features/kube-api-specifics",
"link": true
},
"node_modules/@k8slens/kube-object": { "node_modules/@k8slens/kube-object": {
"resolved": "packages/kube-object", "resolved": "packages/kube-object",
"link": true "link": true
@ -3797,6 +3831,18 @@
"resolved": "packages/node-fetch", "resolved": "packages/node-fetch",
"link": true "link": true
}, },
"node_modules/@k8slens/notifications": {
"resolved": "packages/ui-components/notifications",
"link": true
},
"node_modules/@k8slens/prometheus": {
"resolved": "packages/technical-features/prometheus",
"link": true
},
"node_modules/@k8slens/random": {
"resolved": "packages/random-id",
"link": true
},
"node_modules/@k8slens/react-application": { "node_modules/@k8slens/react-application": {
"resolved": "packages/technical-features/react-application", "resolved": "packages/technical-features/react-application",
"link": true "link": true
@ -3829,12 +3875,12 @@
"resolved": "packages/semver", "resolved": "packages/semver",
"link": true "link": true
}, },
"node_modules/@k8slens/startable-stoppable": { "node_modules/@k8slens/spinner": {
"resolved": "packages/utility-features/startable-stoppable", "resolved": "packages/ui-components/spinner",
"link": true "link": true
}, },
"node_modules/@k8slens/table-tokens": { "node_modules/@k8slens/startable-stoppable": {
"resolved": "packages/table", "resolved": "packages/utility-features/startable-stoppable",
"link": true "link": true
}, },
"node_modules/@k8slens/test-utils": { "node_modules/@k8slens/test-utils": {
@ -6049,50 +6095,50 @@
} }
}, },
"node_modules/@ogre-tools/fp": { "node_modules/@ogre-tools/fp": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/fp/-/fp-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/fp/-/fp-17.2.0.tgz",
"integrity": "sha512-9OF6fKj/2Vg0YH2h0C2MDOvl5RAy7OiMPRjAJzU4YQh9r/A/50Dm80OtfwiEExsD4mGby1CQIeRba1J5Fd1Eyg==", "integrity": "sha512-FF2v/jlQkyVYtborPGq3AS8dK+Fah1f01lajtqd7tW85IwJk0ut7B69o3OA78SvHzNkkFy6y7BmfmVZQ+DkdtA==",
"peerDependencies": { "peerDependencies": {
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"node_modules/@ogre-tools/injectable": { "node_modules/@ogre-tools/injectable": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/injectable/-/injectable-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/injectable/-/injectable-17.2.0.tgz",
"integrity": "sha512-QZ0f09ahDohr9RN9aqvrtlzLu9YzT0KA3farSrcoVgXbIvjzYL9QOIt21erJ6KvCazHUKQYWDQbw7miViJ33dg==", "integrity": "sha512-foBG+lZvlSfoL3hwkyLFHcpfiXuBzsRLcqI7YuKvY//9Wz3DhXXlafF8s6vUDmVl8AQ2pODfDEe36X2WTrqMdg==",
"peerDependencies": { "peerDependencies": {
"@ogre-tools/fp": "*", "@ogre-tools/fp": "^16 || ^17",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"node_modules/@ogre-tools/injectable-extension-for-auto-registration": { "node_modules/@ogre-tools/injectable-extension-for-auto-registration": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-17.2.0.tgz",
"integrity": "sha512-L4aYnXqEiFdLfcQgiWxGv5C1vmV8KASvaIqIjcqzatK9uJLPpwKHAkpliKG48ZdqwgKS2VmM6CkCuxKOf1aCvA==", "integrity": "sha512-G3YfbbaqYnJcAejPjRw1KLEdYQnE1OVqVMthLUCamG3iOaRE/QvQ4IPKO4zJH+v5JpTZjxmfYcn/z4dPdx65wA==",
"peerDependencies": { "peerDependencies": {
"@ogre-tools/fp": "*", "@ogre-tools/fp": "^16 || ^17",
"@ogre-tools/injectable": "*", "@ogre-tools/injectable": "^16 || ^17",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"node_modules/@ogre-tools/injectable-extension-for-mobx": { "node_modules/@ogre-tools/injectable-extension-for-mobx": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-17.2.0.tgz",
"integrity": "sha512-1nKZD/YSSHbXPZOLHgPuQd00pDOZe4Fs/CvFZowoA8PvWcV77fbhl/BuJfxtBGZW62rDtaKQ77t0EkG1LWnFsg==", "integrity": "sha512-o+VJn8c10P5mYJBwq/3LQQqpcZ5cP3tY+Gmru0xv2VYUGN4+2kye9mlXfZ6eisQ2IMVImRFx/qJxYLCLNNPZMw==",
"peerDependencies": { "peerDependencies": {
"@ogre-tools/fp": "*", "@ogre-tools/fp": "^16 || ^17",
"@ogre-tools/injectable": "*", "@ogre-tools/injectable": "^16 || ^17",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.3.0" "mobx": "^6.3.0"
} }
}, },
"node_modules/@ogre-tools/injectable-react": { "node_modules/@ogre-tools/injectable-react": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/injectable-react/-/injectable-react-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-react/-/injectable-react-17.2.0.tgz",
"integrity": "sha512-kBNNIuR6wSKREEkI39Z2t55dBN+Bg6jNJ2dXL3zefa22d6F07DBbdTlUZ9Fq9Vyr860rNnNosCzgExB5LtgkYQ==", "integrity": "sha512-pAZZKnXCFxPlNhGxWeFmX8xbbR1YJUmNZGNHt0mvjfujLnRsITSlA7AwFFB+UghpDPXi0aY48NRnq8KB3/nkrg==",
"peerDependencies": { "peerDependencies": {
"@ogre-tools/fp": "*", "@ogre-tools/fp": "^16 || ^17",
"@ogre-tools/injectable": "*", "@ogre-tools/injectable": "^16 || ^17",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.3.0", "mobx": "^6.3.0",
"mobx-react": "^7.2.0", "mobx-react": "^7.2.0",
@ -6101,13 +6147,13 @@
} }
}, },
"node_modules/@ogre-tools/linkable": { "node_modules/@ogre-tools/linkable": {
"version": "16.1.2", "version": "17.2.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/linkable/-/linkable-16.1.2.tgz", "resolved": "https://registry.npmjs.org/@ogre-tools/linkable/-/linkable-17.2.0.tgz",
"integrity": "sha512-6bUJdW3xombYig0Gi5mUPpArcqMmCRxAVroOzuaMovYwlYUjE1oNBbzJbr0hBEtMWKw+zl1FyX0wbnmlpSVapg==", "integrity": "sha512-s0YoTV2JjhwF6+vlkHAXmhTEL1c+r+hBwbdTO2GnE+sqjtN1prASASlkyF/ZUwBNBjv02SbBKtM1Jy++N91Wyg==",
"dependencies": { "dependencies": {
"@ogre-tools/fp": "^16.1.2", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.2", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.2", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"fast-glob": "^3.2.12", "fast-glob": "^3.2.12",
"fs-extra": "^9.0.1", "fs-extra": "^9.0.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@ -6118,15 +6164,6 @@
"linkable-push": "bin/linkable-push" "linkable-push": "bin/linkable-push"
} }
}, },
"node_modules/@ogre-tools/test-utils": {
"version": "16.1.2",
"resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-16.1.2.tgz",
"integrity": "sha512-1jhsXj0s+5Vkvci8Vl7D5R4V70xshZdZh2bXEuWAfCMC2qceeeUOO+6FXDXOpjm/ioNMwX7OisSUVPPBGb8H5A==",
"dev": true,
"peerDependencies": {
"lodash": "^4.17.21"
}
},
"node_modules/@parcel/watcher": { "node_modules/@parcel/watcher": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz",
@ -12741,49 +12778,6 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/electron-notarize": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.3.0.tgz",
"integrity": "sha512-tuDw8H0gcDOalNLv6RM2CwGvUXU60MPGZRDEmd0ppX+yP5XqL8Ec2DuXyz9J7WQSA3aRCfzIgH8C5CAivDYWMw==",
"deprecated": "Please use @electron/notarize moving forward. There is no API change, just a package name change",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
"fs-extra": "^8.1.0"
}
},
"node_modules/electron-notarize/node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
},
"node_modules/electron-notarize/node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/electron-notarize/node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/electron-osx-sign": { "node_modules/electron-osx-sign": {
"version": "0.6.0", "version": "0.6.0",
"resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz", "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz",
@ -33989,12 +33983,16 @@
"@k8slens/application-for-electron-main": "^6.5.0", "@k8slens/application-for-electron-main": "^6.5.0",
"@k8slens/button": "^1.0.0", "@k8slens/button": "^1.0.0",
"@k8slens/cluster-settings": "^6.5.0", "@k8slens/cluster-settings": "^6.5.0",
"@k8slens/cluster-sidebar": "^1.0.0",
"@k8slens/core": "^6.5.0", "@k8slens/core": "^6.5.0",
"@k8slens/ensure-binaries": "^6.5.0", "@k8slens/ensure-binaries": "^6.5.0",
"@k8slens/error-boundary": "^1.0.0", "@k8slens/error-boundary": "^1.0.0",
"@k8slens/event-emitter": "^1.0.0", "@k8slens/event-emitter": "^1.0.0",
"@k8slens/feature-core": "^6.5.0", "@k8slens/feature-core": "^6.5.0",
"@k8slens/json-api": "^1.0.0-alpha.3",
"@k8slens/keyboard-shortcuts": "^1.0.0", "@k8slens/keyboard-shortcuts": "^1.0.0",
"@k8slens/kube-api": "^1.0.0-alpha.1",
"@k8slens/kube-api-specifics": "^1.0.0",
"@k8slens/kube-object": "^1.0.0", "@k8slens/kube-object": "^1.0.0",
"@k8slens/kubectl-versions": "^1.0.0", "@k8slens/kubectl-versions": "^1.0.0",
"@k8slens/legacy-extension-example": "^1.0.0", "@k8slens/legacy-extension-example": "^1.0.0",
@ -34007,6 +34005,8 @@
"@k8slens/messaging-for-renderer": "^1.0.0", "@k8slens/messaging-for-renderer": "^1.0.0",
"@k8slens/metrics": "^6.5.0", "@k8slens/metrics": "^6.5.0",
"@k8slens/node-fetch": "^6.5.0", "@k8slens/node-fetch": "^6.5.0",
"@k8slens/prometheus": "^1.0.0",
"@k8slens/random": "^1.0.0",
"@k8slens/react-application": "^1.0.0", "@k8slens/react-application": "^1.0.0",
"@k8slens/resizing-anchor": "^1.0.0", "@k8slens/resizing-anchor": "^1.0.0",
"@k8slens/resource-templates": "^1.0.0", "@k8slens/resource-templates": "^1.0.0",
@ -34018,11 +34018,11 @@
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^0.18.1",
"@material-ui/core": "^4.12.3", "@material-ui/core": "^4.12.3",
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"@sentry/electron": "^3.0.8", "@sentry/electron": "^3.0.8",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"ansi_up": "^5.2.1", "ansi_up": "^5.2.1",
@ -34098,6 +34098,7 @@
"xterm-link-provider": "^1.3.1" "xterm-link-provider": "^1.3.1"
}, },
"devDependencies": { "devDependencies": {
"@electron/notarize": "^1.2.3",
"@electron/rebuild": "^3.2.10", "@electron/rebuild": "^3.2.10",
"@k8slens/generate-tray-icons": "^6.5.0", "@k8slens/generate-tray-icons": "^6.5.0",
"@k8slens/test-utils": "^1.0.0", "@k8slens/test-utils": "^1.0.0",
@ -34131,7 +34132,6 @@
"css-loader": "^6.7.2", "css-loader": "^6.7.2",
"electron": "^22.3.10", "electron": "^22.3.10",
"electron-builder": "^23.6.0", "electron-builder": "^23.6.0",
"electron-notarize": "^0.3.0",
"esbuild-loader": "^2.20.0", "esbuild-loader": "^2.20.0",
"fork-ts-checker-webpack-plugin": "^7.3.0", "fork-ts-checker-webpack-plugin": "^7.3.0",
"html-webpack-plugin": "^5.5.1", "html-webpack-plugin": "^5.5.1",
@ -34173,10 +34173,10 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/react-application": "^1.0.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"react": "^17 || ^18" "react": "^17 || ^18"
} }
@ -34190,7 +34190,27 @@
"rimraf": "^4.4.1" "rimraf": "^4.4.1"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
}
},
"packages/cluster-sidebar": {
"name": "@k8slens/cluster-sidebar",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.3",
"@k8slens/jest": "^6.5.0-alpha.5",
"@k8slens/typescript": "^6.5.0-alpha.2",
"@k8slens/webpack": "^6.5.0-alpha.5"
},
"peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.4",
"@k8slens/utilities": "^1.0.0-alpha.3",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"mobx": "^6.9.0",
"react": "^17.0.2"
} }
}, },
"packages/core": { "packages/core": {
@ -34202,7 +34222,7 @@
"@k8slens/messaging-fake-bridge": "^1.0.0", "@k8slens/messaging-fake-bridge": "^1.0.0",
"@k8slens/react-testing-library-discovery": "^1.0.0", "@k8slens/react-testing-library-discovery": "^1.0.0",
"@k8slens/test-utils": "^1.0.0", "@k8slens/test-utils": "^1.0.0",
"@ogre-tools/linkable": "^16.1.0", "@ogre-tools/linkable": "^17.2.0",
"@sentry/types": "^6.19.7", "@sentry/types": "^6.19.7",
"@side/jest-runtime": "^1.1.0", "@side/jest-runtime": "^1.1.0",
"@swc/cli": "^0.1.62", "@swc/cli": "^0.1.62",
@ -34306,12 +34326,18 @@
"peerDependencies": { "peerDependencies": {
"@hapi/call": "^9.0.1", "@hapi/call": "^9.0.1",
"@hapi/subtext": "^7.1.0", "@hapi/subtext": "^7.1.0",
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/application-for-electron-main": "^6.5.0-alpha.0", "@k8slens/application-for-electron-main": "^6.5.0-alpha.0",
"@k8slens/button": "^1.0.0-alpha.5", "@k8slens/button": "^1.0.0-alpha.5",
"@k8slens/cluster-settings": "^6.5.0-alpha.1", "@k8slens/cluster-settings": "^6.5.0-alpha.1",
"@k8slens/cluster-sidebar": "^1.0.0",
"@k8slens/error-boundary": "^1.0.0-alpha.5", "@k8slens/error-boundary": "^1.0.0-alpha.5",
"@k8slens/event-emitter": "^1.0.0-alpha.1", "@k8slens/event-emitter": "^1.0.0-alpha.1",
"@k8slens/icon": "^1.0.0-alpha.7",
"@k8slens/kube-api": "^1.0.0-alpha.1",
"@k8slens/kube-api-specifics": "^1.0.0-alpha.1",
"@k8slens/kube-object": "^1.0.0-alpha.5",
"@k8slens/kubectl-versions": "^1.0.0-alpha.0", "@k8slens/kubectl-versions": "^1.0.0-alpha.0",
"@k8slens/legacy-extensions": "^1.0.0-alpha.0", "@k8slens/legacy-extensions": "^1.0.0-alpha.0",
"@k8slens/legacy-global-di": "^1.0.0-alpha.0", "@k8slens/legacy-global-di": "^1.0.0-alpha.0",
@ -34322,23 +34348,25 @@
"@k8slens/messaging-for-renderer": "^1.0.0-alpha.1", "@k8slens/messaging-for-renderer": "^1.0.0-alpha.1",
"@k8slens/metrics": "^6.5.0-alpha.7", "@k8slens/metrics": "^6.5.0-alpha.7",
"@k8slens/node-fetch": "^6.5.0-alpha.3", "@k8slens/node-fetch": "^6.5.0-alpha.3",
"@k8slens/notifications": "^1.0.0",
"@k8slens/prometheus": "^1.0.0",
"@k8slens/random": "^1.0.0",
"@k8slens/react-application": "^1.0.0-alpha.5", "@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/resizing-anchor": "^1.0.0-alpha.5", "@k8slens/resizing-anchor": "^1.0.0-alpha.5",
"@k8slens/resource-templates": "^1.0.0-alpha.1", "@k8slens/resource-templates": "^1.0.0-alpha.1",
"@k8slens/routing": "^1.0.0-alpha.5", "@k8slens/routing": "^1.0.0-alpha.5",
"@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1",
"@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1",
"@k8slens/table-tokens": "^6.5.0-alpha.7",
"@k8slens/tooltip": "^1.0.0-alpha.5", "@k8slens/tooltip": "^1.0.0-alpha.5",
"@k8slens/utilities": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1",
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^0.18.1",
"@material-ui/core": "^4.12.3", "@material-ui/core": "^4.12.3",
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"@sentry/electron": "^3.0.8", "@sentry/electron": "^3.0.8",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"ansi_up": "^5.2.1", "ansi_up": "^5.2.1",
@ -34865,7 +34893,7 @@
"version": "6.5.0", "version": "6.5.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@ogre-tools/linkable": "^16.1.0", "@ogre-tools/linkable": "^17.2.0",
"@types/webpack-env": "^1.18.0", "@types/webpack-env": "^1.18.0",
"css-loader": "^6.7.2", "css-loader": "^6.7.2",
"fork-ts-checker-webpack-plugin": "^7.3.0", "fork-ts-checker-webpack-plugin": "^7.3.0",
@ -34885,14 +34913,23 @@
"devDependencies": { "devDependencies": {
"@async-fn/jest": "^1.6.4", "@async-fn/jest": "^1.6.4",
"@k8slens/typescript": "^6.5.0", "@k8slens/typescript": "^6.5.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/test-utils": "^16.1.0", "@ogre-tools/test-utils": "^17.2.0",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"webpack-node-externals": "^3.0.0" "webpack-node-externals": "^3.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"lodash": "^4.17.21"
}
},
"packages/infrastructure/webpack/node_modules/@ogre-tools/test-utils": {
"version": "17.1.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-17.1.0.tgz",
"integrity": "sha512-QlCBycGqU7XvRj55THt34bRJm2snnMaNraGj0J0biOSiSVawolkQErmvFbBe8NYp+yHdSuJhHmrAjWKNisO8pw==",
"dev": true,
"peerDependencies": {
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
@ -34945,7 +34982,7 @@
}, },
"peerDependencies": { "peerDependencies": {
"@k8slens/utilities": "^1.0.0-alpha.2", "@k8slens/utilities": "^1.0.0-alpha.2",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"auto-bind": "^4.0.0", "auto-bind": "^4.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"rfc6902": "^5.0.1", "rfc6902": "^5.0.1",
@ -34967,7 +35004,7 @@
"typed-regex": "^0.0.8" "typed-regex": "^0.0.8"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
} }
}, },
"packages/legacy-extension-example": { "packages/legacy-extension-example": {
@ -35115,7 +35152,7 @@
"@k8slens/webpack": "^6.5.0" "@k8slens/webpack": "^6.5.0"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
} }
}, },
"packages/list-layout": { "packages/list-layout": {
@ -35129,9 +35166,9 @@
"@k8slens/webpack": "^6.5.0" "@k8slens/webpack": "^6.5.0"
}, },
"peerDependencies": { "peerDependencies": {
"@k8slens/kube-object": "^1.0.0-alpha.1", "@k8slens/kube-object": "^1.0.0-alpha.5",
"@k8slens/utilities": "^1.0.0-alpha.3", "@k8slens/utilities": "^1.0.0-alpha.3",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"react": "^17.0.2" "react": "^17.0.2"
} }
}, },
@ -35147,9 +35184,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"winston": "^3.8.2" "winston": "^3.8.2"
} }
@ -35193,8 +35230,8 @@
"@k8slens/webpack": "^6.5.0" "@k8slens/webpack": "^6.5.0"
}, },
"peerDependencies": { "peerDependencies": {
"@k8slens/kube-object": "^1.0.0-alpha.1", "@k8slens/kube-object": "^1.0.0-alpha.5",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"react": "^17.0.2" "react": "^17.0.2"
} }
}, },
@ -35226,6 +35263,43 @@
"url": "https://opencollective.com/node-fetch" "url": "https://opencollective.com/node-fetch"
} }
}, },
"packages/prometheus": {
"name": "@k8slens/prometheus",
"version": "1.0.0",
"extraneous": true,
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.3",
"@k8slens/jest": "^6.5.0-alpha.5",
"@k8slens/typescript": "^6.5.0-alpha.3",
"@k8slens/webpack": "^6.5.0-alpha.9"
},
"peerDependencies": {
"@k8slens/application": "^6.5.0-alpha.2",
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/utilities": "^1.0.0-alpha.7",
"@kubernetes/client-node": "^0.18.1",
"@ogre-tools/fp": "^16.1.0",
"@ogre-tools/injectable": "^16.1.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0"
}
},
"packages/random-id": {
"name": "@k8slens/random",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
},
"peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@ogre-tools/injectable": "^17.1.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.1.0",
"uuid": "^8.3.2"
}
},
"packages/release-tool": { "packages/release-tool": {
"name": "@k8slens/release-tool", "name": "@k8slens/release-tool",
"version": "6.5.0", "version": "6.5.0",
@ -35278,10 +35352,10 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/react-application": "^1.0.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"auto-bind": "^4.0.0", "auto-bind": "^4.0.0",
"history": "^4.10.1", "history": "^4.10.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@ -35309,18 +35383,6 @@
"rimraf": "^4.4.1" "rimraf": "^4.4.1"
} }
}, },
"packages/table": {
"name": "@k8slens/table-tokens",
"version": "6.5.0",
"license": "MIT",
"devDependencies": {
"@k8slens/webpack": "^6.5.0",
"rimraf": "^4.4.1"
},
"peerDependencies": {
"@ogre-tools/injectable": "^16.1.0"
}
},
"packages/technical-features/application/agnostic": { "packages/technical-features/application/agnostic": {
"name": "@k8slens/application", "name": "@k8slens/application",
"version": "6.5.0", "version": "6.5.0",
@ -35334,9 +35396,9 @@
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/logger": "^1.0.0-alpha.5", "@k8slens/logger": "^1.0.0-alpha.5",
"@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"lodash": "^4.17.15" "lodash": "^4.17.15"
} }
}, },
@ -35348,18 +35410,27 @@
"@async-fn/jest": "^1.6.4", "@async-fn/jest": "^1.6.4",
"@k8slens/eslint-config": "^6.5.0", "@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0", "@k8slens/webpack": "^6.5.0",
"@ogre-tools/test-utils": "^16.1.0" "@ogre-tools/test-utils": "^17.2.0"
}, },
"peerDependencies": { "peerDependencies": {
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"electron": "^22.3.3", "electron": "^22.3.3",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"packages/technical-features/application/electron-main/node_modules/@ogre-tools/test-utils": {
"version": "17.1.0",
"resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-17.1.0.tgz",
"integrity": "sha512-QlCBycGqU7XvRj55THt34bRJm2snnMaNraGj0J0biOSiSVawolkQErmvFbBe8NYp+yHdSuJhHmrAjWKNisO8pw==",
"dev": true,
"peerDependencies": {
"lodash": "^4.17.21"
}
},
"packages/technical-features/application/legacy-extensions": { "packages/technical-features/application/legacy-extensions": {
"name": "@k8slens/legacy-extensions", "name": "@k8slens/legacy-extensions",
"version": "1.0.0", "version": "1.0.0",
@ -35369,7 +35440,7 @@
"@k8slens/webpack": "^6.5.0" "@k8slens/webpack": "^6.5.0"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
} }
}, },
"packages/technical-features/feature-core": { "packages/technical-features/feature-core": {
@ -35381,7 +35452,7 @@
"@k8slens/webpack": "^6.5.0" "@k8slens/webpack": "^6.5.0"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
} }
}, },
"packages/technical-features/messaging/agnostic": { "packages/technical-features/messaging/agnostic": {
@ -35396,9 +35467,9 @@
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.7.0" "mobx": "^6.7.0"
} }
@ -35417,10 +35488,10 @@
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/messaging": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.8.0" "mobx": "^6.8.0"
} }
@ -35437,9 +35508,9 @@
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/messaging": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"electron": "^22.3.3", "electron": "^22.3.3",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
@ -35458,8 +35529,8 @@
"@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/messaging": "^1.0.0-alpha.1",
"@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1",
"@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"electron": "^22.3.3", "electron": "^22.3.3",
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
@ -35476,13 +35547,34 @@
"@async-fn/jest": "^1.6.4", "@async-fn/jest": "^1.6.4",
"@k8slens/feature-core": "^6.5.0-alpha.2", "@k8slens/feature-core": "^6.5.0-alpha.2",
"@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/messaging": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.9.0" "mobx": "^6.9.0"
} }
}, },
"packages/technical-features/prometheus": {
"name": "@k8slens/prometheus",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.3",
"@k8slens/jest": "^6.5.0-alpha.5",
"@k8slens/typescript": "^6.5.0-alpha.3",
"@k8slens/webpack": "^6.5.0-alpha.9"
},
"peerDependencies": {
"@k8slens/application": "^6.5.0-alpha.2",
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/utilities": "^1.0.0-alpha.7",
"@kubernetes/client-node": "^0.18.1",
"@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0"
}
},
"packages/technical-features/react-application": { "packages/technical-features/react-application": {
"name": "@k8slens/react-application", "name": "@k8slens/react-application",
"version": "1.0.0", "version": "1.0.0",
@ -35497,11 +35589,11 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/application": "^6.5.0-alpha.2", "@k8slens/application": "^6.5.0-alpha.2",
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"mobx": "^6.8.0", "mobx": "^6.8.0",
"mobx-react": "^7.6.0", "mobx-react": "^7.6.0",
@ -35509,6 +35601,23 @@
"react-dom": "^17.0.2" "react-dom": "^17.0.2"
} }
}, },
"packages/ui-components/animate": {
"name": "@k8slens/animate",
"version": "1.0.0-alpha.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
},
"peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-react": "^17.2.0",
"react": "^17.0.2"
}
},
"packages/ui-components/button": { "packages/ui-components/button": {
"name": "@k8slens/button", "name": "@k8slens/button",
"version": "1.0.0", "version": "1.0.0",
@ -35564,8 +35673,8 @@
"@k8slens/button": "^1.0.0-alpha.5", "@k8slens/button": "^1.0.0-alpha.5",
"@k8slens/routing": "^1.0.0-alpha.5", "@k8slens/routing": "^1.0.0-alpha.5",
"@k8slens/utilities": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"auto-bind": "^4.0.0", "auto-bind": "^4.0.0",
"history": "^4.10.1", "history": "^4.10.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@ -35576,6 +35685,77 @@
"react-dom": "^17.0.2" "react-dom": "^17.0.2"
} }
}, },
"packages/ui-components/icon": {
"name": "@k8slens/icon",
"version": "1.0.0-alpha.7",
"license": "MIT",
"devDependencies": {
"@async-fn/jest": "^1.6.4",
"@k8slens/eslint-config": "^6.5.0-alpha.3",
"@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4",
"@k8slens/webpack": "^6.5.0-alpha.9",
"@testing-library/react": "^12.1.5",
"@testing-library/user-event": "^13.5.0"
},
"peerDependencies": {
"@k8slens/button": "^1.0.0-alpha.10",
"@k8slens/feature-core": "^6.5.0-alpha.8",
"@k8slens/logger": "^1.0.0-alpha.7",
"@k8slens/routing": "^1.0.0-alpha.8",
"@k8slens/tooltip": "^1.0.0-alpha.10",
"@k8slens/utilities": "^1.0.0-alpha.7",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-react": "^17.2.0",
"auto-bind": "^4.0.0",
"dompurify": "^2.4.4",
"history": "^4.10.1",
"lodash": "^4.17.21",
"mobx": "^6.9.0",
"mobx-observable-history": "^2.0.3",
"mobx-react": "^7.6.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.3.4",
"winston": "^3.8.2"
}
},
"packages/ui-components/notifications": {
"name": "@k8slens/notifications",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
},
"peerDependencies": {
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/application": "^6.5.0",
"@k8slens/event-emitter": "^1.0.0",
"@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/icon": "^1.0.0-alpha.7",
"@k8slens/json-api": "^1.0.0-alpha.3",
"@k8slens/logger": "^1.0.0",
"@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/run-many": "^1.0.0",
"@k8slens/tooltip": "^1.0.0",
"@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^17.2.0",
"auto-bind": "^4.0.0",
"lodash": "^4.17.21",
"mobx": "^6.8.0",
"mobx-react": "^7.6.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-router-dom": "^5.3.4",
"uuid": "^8.3.2",
"winston": "^3.8.2"
}
},
"packages/ui-components/resizing-anchor": { "packages/ui-components/resizing-anchor": {
"name": "@k8slens/resizing-anchor", "name": "@k8slens/resizing-anchor",
"version": "1.0.0", "version": "1.0.0",
@ -35589,9 +35769,9 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/utilities": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"auto-bind": "^4.0.0", "auto-bind": "^4.0.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.8.0", "mobx": "^6.8.0",
@ -35600,6 +35780,19 @@
"react-dom": "^17.0.2" "react-dom": "^17.0.2"
} }
}, },
"packages/ui-components/spinner": {
"name": "@k8slens/spinner",
"version": "1.0.0-alpha.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0",
"@k8slens/webpack": "^6.5.0"
},
"peerDependencies": {
"@k8slens/utilities": "^1.0.0-alpha.1",
"react": "^17.0.2"
}
},
"packages/ui-components/tooltip": { "packages/ui-components/tooltip": {
"name": "@k8slens/tooltip", "name": "@k8slens/tooltip",
"version": "1.0.0", "version": "1.0.0",
@ -35671,6 +35864,49 @@
"rfc6902": "^5.0.1" "rfc6902": "^5.0.1"
} }
}, },
"packages/utility-features/kube-api": {
"name": "@k8slens/kube-api",
"version": "1.0.0-alpha.1",
"license": "MIT",
"dependencies": {
"@k8slens/node-fetch": "^6.5.0-alpha.3"
},
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.2",
"@k8slens/jest": "^6.5.0-alpha.4",
"@k8slens/typescript": "^6.5.0-alpha.2"
},
"peerDependencies": {
"@k8slens/json-api": "^1.0.0-alpha.1",
"@k8slens/kube-object": "^1.0.0-alpha.5",
"@k8slens/logger": "^1.0.0-alpha.5",
"@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^17.2.0",
"byline": "^5.0.0",
"lodash": "^4.17.15",
"mobx": "^6.8.0",
"moment": "^2.29.4",
"rfc6902": "^5.0.1"
}
},
"packages/utility-features/kube-api-specifics": {
"name": "@k8slens/kube-api-specifics",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.2",
"@k8slens/jest": "^6.5.0-alpha.4",
"@k8slens/typescript": "^6.5.0-alpha.2"
},
"peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.8",
"@k8slens/kube-api": "^1.0.0-alpha.1",
"@k8slens/logger": "^1.0.0",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0"
}
},
"packages/utility-features/react-testing-library-discovery": { "packages/utility-features/react-testing-library-discovery": {
"name": "@k8slens/react-testing-library-discovery", "name": "@k8slens/react-testing-library-discovery",
"version": "1.0.0", "version": "1.0.0",
@ -35693,8 +35929,8 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/test-utils": "^1.0.0-alpha.3", "@k8slens/test-utils": "^1.0.0-alpha.3",
"@k8slens/utilities": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"type-fest": "^2.19.0", "type-fest": "^2.19.0",
"typed-emitter": "^1.4.0", "typed-emitter": "^1.4.0",
"uuid": "^8.3.2" "uuid": "^8.3.2"
@ -35724,8 +35960,8 @@
"@types/lodash": "^4.14.191" "@types/lodash": "^4.14.191"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"@testing-library/react": "^12.1.5", "@testing-library/react": "^12.1.5",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mobx": "^6.8.0", "mobx": "^6.8.0",

View File

@ -21,11 +21,13 @@
"postdev": "lerna watch -- lerna run build --stream --include-dependents --scope \\$LERNA_PACKAGE_NAME", "postdev": "lerna watch -- lerna run build --stream --include-dependents --scope \\$LERNA_PACKAGE_NAME",
"prestart-dev": "cd ./open-lens && npm run build:tray-icons && npm run download:binaries", "prestart-dev": "cd ./open-lens && npm run build:tray-icons && npm run download:binaries",
"start-dev": "lerna run start", "start-dev": "lerna run start",
"postinstall": "linkable",
"lint": "lerna run lint --stream --no-bail", "lint": "lerna run lint --stream --no-bail",
"lint:fix": "lerna run lint:fix --stream", "lint:fix": "lerna run lint:fix --stream",
"mkdocs:serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest", "mkdocs:serve-local": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -it -p 8000:8000 -v ${PWD}:/docs mkdocs-serve-local:latest",
"mkdocs:verify": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict", "mkdocs:verify": "docker build -t mkdocs-serve-local:latest mkdocs/ && docker run --rm -v ${PWD}:/docs mkdocs-serve-local:latest build --strict",
"test:unit": "lerna run --stream test:unit --no-bail", "test:unit": "lerna run --stream test:unit --no-bail",
"test:unit:updatesnapshot": "lerna run --stream test:unit --no-bail -- -u",
"test:unit:watch": "jest --watch", "test:unit:watch": "jest --watch",
"test:integration": "lerna run --stream test:integration --no-bail", "test:integration": "lerna run --stream test:integration --no-bail",
"bump-version": "lerna version --no-git-tag-version --no-push", "bump-version": "lerna version --no-git-tag-version --no-push",
@ -38,7 +40,7 @@
"@types/react": "^17" "@types/react": "^17"
}, },
"devDependencies": { "devDependencies": {
"@ogre-tools/linkable": "^16.1.0", "@ogre-tools/linkable": "^17.2.0",
"adr": "^1.4.3", "adr": "^1.4.3",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"lerna": "^6.6.1", "lerna": "^6.6.1",

View File

@ -33,10 +33,10 @@
"peerDependencies": { "peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0",
"@k8slens/react-application": "^1.0.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"react": "^17 || ^18" "react": "^17 || ^18"
}, },

View File

@ -23,6 +23,6 @@
"rimraf": "^4.4.1" "rimraf": "^4.4.1"
}, },
"peerDependencies": { "peerDependencies": {
"@ogre-tools/injectable": "^16.1.0" "@ogre-tools/injectable": "^17.2.0"
} }
} }

View File

@ -0,0 +1,6 @@
module.exports = {
extends: "@k8slens/eslint-config/eslint",
parserOptions: {
project: "./tsconfig.json",
},
};

View File

@ -0,0 +1 @@
"@k8slens/eslint-config/prettier"

View File

@ -3,7 +3,6 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
export * from "./crd-list"; export * from "./src/tokens";
export * from "./crd-details"; export * from "./src/feature";
export * from "./crd-resources"; export { default as sidebarItemsInjectable } from "./src/sidebar-items.injectable";
export * from "./crd-resource-details";

View File

@ -0,0 +1 @@
module.exports = require("@k8slens/jest").monorepoPackageConfig(__dirname).configForReact;

View File

@ -0,0 +1,48 @@
{
"name": "@k8slens/cluster-sidebar",
"private": false,
"version": "1.0.0",
"description": "Injection tokens for adding new sidebar items within the Cluster View",
"type": "commonjs",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"files": [
"dist"
],
"repository": {
"type": "git",
"url": "git+https://github.com/lensapp/lens.git"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"author": {
"name": "OpenLens Authors",
"email": "info@k8slens.dev"
},
"license": "MIT",
"homepage": "https://github.com/lensapp/lens",
"scripts": {
"build": "lens-webpack-build",
"clean": "rimraf dist/",
"test": "jest --coverage --runInBand",
"lint": "lens-lint",
"lint:fix": "lens-lint --fix"
},
"peerDependencies": {
"@k8slens/feature-core": "^6.5.0-alpha.4",
"@k8slens/utilities": "^1.0.0-alpha.3",
"@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"mobx": "^6.9.0",
"react": "^17.0.2"
},
"devDependencies": {
"@k8slens/eslint-config": "^6.5.0-alpha.3",
"@k8slens/jest": "^6.5.0-alpha.5",
"@k8slens/typescript": "^6.5.0-alpha.2",
"@k8slens/webpack": "^6.5.0-alpha.5"
}
}

View File

@ -0,0 +1,14 @@
import { getFeature } from "@k8slens/feature-core";
import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration";
export const clusterSidebarFeature = getFeature({
id: "cluster-side-feature",
register: (di) => {
autoRegister({
di,
targetModule: module,
getRequireContexts: () => [require.context("./", true, /\.injectable\.(ts|tsx)$/)],
});
},
});

View File

@ -0,0 +1,174 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { createContainer, DiContainer, getInjectable } from "@ogre-tools/injectable";
import { computed, IComputedValue } from "mobx";
import { noop } from "lodash/fp";
import sidebarItemsInjectable from "./sidebar-items.injectable";
import { SidebarItemDeclaration, sidebarItemInjectionToken } from "./tokens";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { clusterSidebarFeature } from "./feature";
const someParentSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-parent",
instantiate: () => ({
parentId: null,
title: "Some parent",
onClick: noop,
orderNumber: 42,
}),
injectionToken: sidebarItemInjectionToken,
});
const someOtherParentSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-other-parent",
instantiate: () => ({
parentId: null,
title: "Some other parent",
onClick: noop,
orderNumber: 126,
}),
injectionToken: sidebarItemInjectionToken,
});
const someAnotherParentSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-another-parent",
instantiate: () => ({
parentId: null,
title: "Some another parent",
onClick: noop,
orderNumber: 84,
}),
injectionToken: sidebarItemInjectionToken,
});
const someForthParentSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-forth-parent",
instantiate: () => ({
parentId: null,
title: "Some another parent",
onClick: noop,
orderNumber: 84,
isVisible: computed(() => false),
isActive: computed(() => true),
}),
injectionToken: sidebarItemInjectionToken,
});
const someChildSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-child",
instantiate: () => ({
parentId: someParentSidebarItemInjectable.id,
title: "Some child",
onClick: noop,
orderNumber: 168,
}),
injectionToken: sidebarItemInjectionToken,
});
const someOtherChildSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-other-child",
instantiate: () => ({
parentId: someParentSidebarItemInjectable.id,
title: "Some other child",
onClick: noop,
orderNumber: 252,
}),
injectionToken: sidebarItemInjectionToken,
});
const someAnotherChildSidebarItemInjectable = getInjectable({
id: "sidebar-item-some-another-child",
instantiate: () => ({
parentId: someParentSidebarItemInjectable.id,
title: "Some another child",
onClick: noop,
orderNumber: 210,
}),
injectionToken: sidebarItemInjectionToken,
});
describe("order of sidebar items", () => {
let di: DiContainer;
let sidebarItems: IComputedValue<SidebarItemDeclaration[]>;
beforeEach(() => {
di = createContainer("test");
di.register(
someParentSidebarItemInjectable,
someOtherParentSidebarItemInjectable,
someAnotherParentSidebarItemInjectable,
someChildSidebarItemInjectable,
someOtherChildSidebarItemInjectable,
someAnotherChildSidebarItemInjectable,
someForthParentSidebarItemInjectable,
);
clusterSidebarFeature.register(di);
registerMobX(di);
sidebarItems = di.inject(sidebarItemsInjectable);
});
it("has parent items in order", () => {
const actual = sidebarItems.get().map((item) => item.id);
expect(actual).toEqual([
"sidebar-item-some-parent",
"sidebar-item-some-another-parent",
"sidebar-item-some-forth-parent",
"sidebar-item-some-other-parent",
]);
});
it("an item with no children and no isVisible configuration by default is visible", () => {
const item = sidebarItems.get().find((item) => item.id === someAnotherParentSidebarItemInjectable.id);
expect(item?.isVisible.get()).toBe(true);
});
it("an item with no children and an isVisible configuration is whatever the configuration specifies", () => {
const item = sidebarItems.get().find((item) => item.id === someForthParentSidebarItemInjectable.id);
expect(item?.isVisible.get()).toBe(false);
});
it("an item with children is visible if at least one of the children is visible", () => {
const item = sidebarItems.get().find((item) => item.id === "sidebar-item-some-parent");
expect(item?.isVisible.get()).toBe(true);
});
it("an item with no children and no isActive configuration by default is not active", () => {
const item = sidebarItems.get().find((item) => item.id === someAnotherParentSidebarItemInjectable.id);
expect(item?.isActive.get()).toBe(false);
});
it("an item with no children and an isActive configuration is whatever the configuration specifies", () => {
const item = sidebarItems.get().find((item) => item.id === someForthParentSidebarItemInjectable.id);
expect(item?.isActive.get()).toBe(true);
});
it("an item with children is active if at least one of the children is active", () => {
const item = sidebarItems.get().find((item) => item.id === "sidebar-item-some-parent");
expect(item?.isActive.get()).toBe(false);
});
it("has child items in order", () => {
const actual = sidebarItems
.get()
.find((item) => item.id === "sidebar-item-some-parent")
?.children.map((item) => item.id);
expect(actual).toEqual([
"sidebar-item-some-child",
"sidebar-item-some-another-child",
"sidebar-item-some-other-child",
]);
});
});

View File

@ -0,0 +1,60 @@
import { getInjectable, InjectionInstanceWithMeta } from "@ogre-tools/injectable";
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
import { SidebarItemDeclaration, sidebarItemInjectionToken, SidebarItemRegistration } from "./tokens";
import { computed } from "mobx";
import { byOrderNumber } from "@k8slens/utilities";
const getSidebarItemsHierarchy = (
registrations: InjectionInstanceWithMeta<SidebarItemRegistration>[],
parentId: string | null,
): SidebarItemDeclaration[] =>
registrations
.filter(({ instance }) => instance.parentId === parentId)
.map(({ instance: { isActive, isVisible, ...registration }, meta: { id } }) => {
const children = getSidebarItemsHierarchy(registrations, id);
return {
...registration,
id,
children,
isVisible: computed(() => {
if (children.length === 0) {
if (isVisible) {
return isVisible.get();
}
return true;
}
return children.some((child) => child.isVisible.get());
}),
isActive: computed(() => {
if (children.length === 0) {
if (isActive) {
return isActive.get();
}
return false;
}
return children.some((child) => child.isActive.get());
}),
};
})
.sort(byOrderNumber);
const sidebarItemsInjectable = getInjectable({
id: "sidebar-items",
instantiate: (di) => {
const computedInjectMany = di.inject(computedInjectManyInjectable);
const sidebarItemRegistrations = computedInjectMany(sidebarItemInjectionToken);
return computed(() => {
void sidebarItemRegistrations.get();
return getSidebarItemsHierarchy(di.injectManyWithMeta(sidebarItemInjectionToken), null);
});
},
});
export default sidebarItemsInjectable;

View File

@ -0,0 +1,34 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectionToken } from "@ogre-tools/injectable";
import type { IComputedValue } from "mobx";
import type { StrictReactNode } from "@k8slens/utilities";
export interface SidebarItemRegistration {
id?: undefined;
parentId: string | null;
title: StrictReactNode;
onClick: () => void;
getIcon?: () => StrictReactNode;
isActive?: IComputedValue<boolean>;
isVisible?: IComputedValue<boolean>;
orderNumber: number;
}
export interface SidebarItemDeclaration {
id: string;
parentId: string | null;
title: StrictReactNode;
onClick: () => void;
getIcon?: () => StrictReactNode;
isActive: IComputedValue<boolean>;
isVisible: IComputedValue<boolean>;
children: SidebarItemDeclaration[];
}
export const sidebarItemInjectionToken = getInjectionToken<SidebarItemRegistration>({
id: "sidebar-item-injection-token",
});

View File

@ -0,0 +1,4 @@
{
"extends": "@k8slens/typescript/config/base.json",
"include": ["**/*.ts"]
}

View File

@ -0,0 +1 @@
module.exports = require("@k8slens/webpack").configForReact;

View File

@ -24,8 +24,7 @@
"./styles": "./static/build/library/renderer.css", "./styles": "./static/build/library/renderer.css",
"./template.html": "./src/renderer/template.html", "./template.html": "./src/renderer/template.html",
"./vars.scss": "./src/renderer/components/vars.scss", "./vars.scss": "./src/renderer/components/vars.scss",
"./fonts": "./static/build/library/fonts", "./fonts": "./static/build/library/fonts"
"./icons/*.svg": "./src/renderer/components/icon/*.svg"
}, },
"typesVersions": { "typesVersions": {
"*": { "*": {
@ -44,7 +43,6 @@
"static/build/library/**/*", "static/build/library/**/*",
"src/renderer/template.html", "src/renderer/template.html",
"src/renderer/components/vars.scss", "src/renderer/components/vars.scss",
"src/renderer/components/icon/*.svg",
"types/*", "types/*",
"tsconfig.json" "tsconfig.json"
], ],
@ -107,7 +105,7 @@
"@k8slens/messaging-fake-bridge": "^1.0.0", "@k8slens/messaging-fake-bridge": "^1.0.0",
"@k8slens/react-testing-library-discovery": "^1.0.0", "@k8slens/react-testing-library-discovery": "^1.0.0",
"@k8slens/test-utils": "^1.0.0", "@k8slens/test-utils": "^1.0.0",
"@ogre-tools/linkable": "^16.1.0", "@ogre-tools/linkable": "^17.2.0",
"@sentry/types": "^6.19.7", "@sentry/types": "^6.19.7",
"@side/jest-runtime": "^1.1.0", "@side/jest-runtime": "^1.1.0",
"@swc/cli": "^0.1.62", "@swc/cli": "^0.1.62",
@ -208,12 +206,19 @@
"peerDependencies": { "peerDependencies": {
"@hapi/call": "^9.0.1", "@hapi/call": "^9.0.1",
"@hapi/subtext": "^7.1.0", "@hapi/subtext": "^7.1.0",
"@k8slens/animate": "^1.0.0-alpha.0",
"@k8slens/notifications": "^1.0.0",
"@k8slens/application": "^6.5.0-alpha.0", "@k8slens/application": "^6.5.0-alpha.0",
"@k8slens/application-for-electron-main": "^6.5.0-alpha.0", "@k8slens/application-for-electron-main": "^6.5.0-alpha.0",
"@k8slens/button": "^1.0.0-alpha.5", "@k8slens/button": "^1.0.0-alpha.5",
"@k8slens/cluster-settings": "^6.5.0-alpha.1", "@k8slens/cluster-settings": "^6.5.0-alpha.1",
"@k8slens/cluster-sidebar": "^1.0.0",
"@k8slens/error-boundary": "^1.0.0-alpha.5", "@k8slens/error-boundary": "^1.0.0-alpha.5",
"@k8slens/event-emitter": "^1.0.0-alpha.1", "@k8slens/event-emitter": "^1.0.0-alpha.1",
"@k8slens/icon": "^1.0.0-alpha.7",
"@k8slens/kube-api": "^1.0.0-alpha.1",
"@k8slens/kube-api-specifics": "^1.0.0-alpha.1",
"@k8slens/kube-object": "^1.0.0-alpha.5",
"@k8slens/kubectl-versions": "^1.0.0-alpha.0", "@k8slens/kubectl-versions": "^1.0.0-alpha.0",
"@k8slens/legacy-extensions": "^1.0.0-alpha.0", "@k8slens/legacy-extensions": "^1.0.0-alpha.0",
"@k8slens/legacy-global-di": "^1.0.0-alpha.0", "@k8slens/legacy-global-di": "^1.0.0-alpha.0",
@ -224,23 +229,25 @@
"@k8slens/messaging-for-renderer": "^1.0.0-alpha.1", "@k8slens/messaging-for-renderer": "^1.0.0-alpha.1",
"@k8slens/metrics": "^6.5.0-alpha.7", "@k8slens/metrics": "^6.5.0-alpha.7",
"@k8slens/node-fetch": "^6.5.0-alpha.3", "@k8slens/node-fetch": "^6.5.0-alpha.3",
"@k8slens/prometheus": "^1.0.0",
"@k8slens/react-application": "^1.0.0-alpha.5", "@k8slens/react-application": "^1.0.0-alpha.5",
"@k8slens/random": "^1.0.0",
"@k8slens/resizing-anchor": "^1.0.0-alpha.5", "@k8slens/resizing-anchor": "^1.0.0-alpha.5",
"@k8slens/resource-templates": "^1.0.0-alpha.1", "@k8slens/resource-templates": "^1.0.0-alpha.1",
"@k8slens/routing": "^1.0.0-alpha.5", "@k8slens/routing": "^1.0.0-alpha.5",
"@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1",
"@k8slens/spinner": "^1.0.0",
"@k8slens/startable-stoppable": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1",
"@k8slens/table-tokens": "^6.5.0-alpha.7",
"@k8slens/tooltip": "^1.0.0-alpha.5", "@k8slens/tooltip": "^1.0.0-alpha.5",
"@k8slens/utilities": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.1",
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^0.18.1",
"@material-ui/core": "^4.12.3", "@material-ui/core": "^4.12.3",
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",
"@ogre-tools/fp": "^16.1.0", "@ogre-tools/fp": "^17.2.0",
"@ogre-tools/injectable": "^16.1.0", "@ogre-tools/injectable": "^17.2.0",
"@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "@ogre-tools/injectable-extension-for-auto-registration": "^17.2.0",
"@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "@ogre-tools/injectable-extension-for-mobx": "^17.2.0",
"@ogre-tools/injectable-react": "^16.1.0", "@ogre-tools/injectable-react": "^17.2.0",
"@sentry/electron": "^3.0.8", "@sentry/electron": "^3.0.8",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"ansi_up": "^5.2.1", "ansi_up": "^5.2.1",

View File

@ -1,21 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { computed } from "mobx";
import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token";
const crdListRouteInjectable = getInjectable({
id: "crd-list-route",
instantiate: () => ({
path: "/crd/definitions",
clusterFrame: true,
isEnabled: computed(() => true),
}),
injectionToken: frontEndRouteInjectionToken,
});
export default crdListRouteInjectable;

View File

@ -0,0 +1,24 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { shouldShowResourceInjectionToken } from "../../../../../features/cluster/showing-kube-resources/common/allowed-resources-injection-token";
import { frontEndRouteInjectionToken } from "../../../front-end-route-injection-token";
const customResourceDefinitionsRouteInjectable = getInjectable({
id: "custom-resource-definitions-route",
instantiate: (di) => ({
path: "/crd/definitions",
clusterFrame: true,
isEnabled: di.inject(shouldShowResourceInjectionToken, {
group: "apiextensions.k8s.io",
apiName: "customresourcedefinitions",
}),
}),
injectionToken: frontEndRouteInjectionToken,
});
export default customResourceDefinitionsRouteInjectable;

View File

@ -4,19 +4,19 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { computed } from "mobx"; import { computed } from "mobx";
import type { Route } from "../../../../front-end-route-injection-token"; import type { Route } from "../../../front-end-route-injection-token";
import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token"; import { frontEndRouteInjectionToken } from "../../../front-end-route-injection-token";
export interface CustomResourcesPathParameters { export interface CustomResourcesPathParameters {
group?: string; group: string;
name?: string; name: string;
} }
const customResourcesRouteInjectable = getInjectable({ const customResourcesRouteInjectable = getInjectable({
id: "custom-resources-route", id: "custom-resources-route",
instantiate: (): Route<CustomResourcesPathParameters> => ({ instantiate: (): Route<CustomResourcesPathParameters> => ({
path: "/crd/:group?/:name?", path: "/crd/:group/:name",
clusterFrame: true, clusterFrame: true,
isEnabled: computed(() => true), isEnabled: computed(() => true),
}), }),

View File

@ -3,11 +3,11 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import crdListRouteInjectable from "./crd-list-route.injectable"; import { navigateToRouteInjectionToken } from "../../../navigate-to-route-injection-token";
import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token"; import crdListRouteInjectable from "./custom-resource-definitions.injectable";
const navigateToCrdListInjectable = getInjectable({ const navigateToCustomResourceDefinitionsInjectable = getInjectable({
id: "navigate-to-crd-list", id: "navigate-to-custom-resource-definitions",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToRoute = di.inject(navigateToRouteInjectionToken);
@ -17,4 +17,4 @@ const navigateToCrdListInjectable = getInjectable({
}, },
}); });
export default navigateToCrdListInjectable; export default navigateToCustomResourceDefinitionsInjectable;

View File

@ -3,19 +3,20 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../../navigate-to-route-injection-token";
import type { CustomResourcesPathParameters } from "./custom-resources-route.injectable"; import type { CustomResourcesPathParameters } from "./custom-resources-route.injectable";
import customResourcesRouteInjectable from "./custom-resources-route.injectable"; import customResourcesRouteInjectable from "./custom-resources-route.injectable";
import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token";
export type NavigateToCustomResources = (parameters: CustomResourcesPathParameters) => void;
const navigateToCustomResourcesInjectable = getInjectable({ const navigateToCustomResourcesInjectable = getInjectable({
id: "navigate-to-custom-resources", id: "navigate-to-custom-resources",
instantiate: (di) => { instantiate: (di): NavigateToCustomResources => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToRoute = di.inject(navigateToRouteInjectionToken);
const route = di.inject(customResourcesRouteInjectable); const route = di.inject(customResourcesRouteInjectable);
return (parameters?: CustomResourcesPathParameters) => return (parameters) => navigateToRoute(route, { parameters });
navigateToRoute(route, { parameters });
}, },
}); });

View File

@ -0,0 +1,24 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token";
import { shouldShowResourceInjectionToken } from "../../../../../../features/cluster/showing-kube-resources/common/allowed-resources-injection-token";
const ingressClassesRouteInjectable = getInjectable({
id: "ingress-classes-route",
instantiate: (di) => ({
path: "/ingress-classes",
clusterFrame: true,
isEnabled: di.inject(shouldShowResourceInjectionToken, {
apiName: "ingressclasses",
group: "networking.k8s.io",
}),
}),
injectionToken: frontEndRouteInjectionToken,
});
export default ingressClassesRouteInjectable;

View File

@ -1,30 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { frontEndRouteInjectionToken } from "../../../../front-end-route-injection-token";
import {
shouldShowResourceInjectionToken,
} from "../../../../../../features/cluster/showing-kube-resources/common/allowed-resources-injection-token";
const ingressClassesesRouteInjectable = getInjectable({
id: "ingress-classes-route",
instantiate: (di) => {
const isEnabled = di.inject(shouldShowResourceInjectionToken, {
apiName: "ingressclasses",
group: "networking.k8s.io",
});
return {
path: "/ingress-classes",
clusterFrame: true,
isEnabled,
};
},
injectionToken: frontEndRouteInjectionToken,
});
export default ingressClassesesRouteInjectable;

View File

@ -4,14 +4,14 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token"; import { navigateToRouteInjectionToken } from "../../../../navigate-to-route-injection-token";
import ingressClassesesRouteInjectable from "./ingress-classeses-route.injectable"; import ingressClassesRouteInjectable from "./ingress-classes-route.injectable";
const navigateToIngressesInjectable = getInjectable({ const navigateToIngressesInjectable = getInjectable({
id: "navigate-to-ingress-classes", id: "navigate-to-ingress-classes",
instantiate: (di) => { instantiate: (di) => {
const navigateToRoute = di.inject(navigateToRouteInjectionToken); const navigateToRoute = di.inject(navigateToRouteInjectionToken);
const route = di.inject(ingressClassesesRouteInjectable); const route = di.inject(ingressClassesRouteInjectable);
return () => navigateToRoute(route); return () => navigateToRoute(route);
}, },

View File

@ -26,12 +26,11 @@ export type ImplInitializableInjectionTokensArgs<T> = {
token: Initializable<T>; token: Initializable<T>;
init: (di: DiContainerForInjection) => T | Promise<T>; init: (di: DiContainerForInjection) => T | Promise<T>;
} & ( } & (
{ | {
phase: InjectionToken<Runnable<void>, void>; phase: InjectionToken<Runnable<void>, void>;
runAfter?: Injectable<Runnable<void>, Runnable<void>, void>[]; runAfter?: Injectable<Runnable<void>, Runnable<void>, void>[];
} }
| | {
{
runAfter: Injectable<Runnable<void>, Runnable<void>, void>; runAfter: Injectable<Runnable<void>, Runnable<void>, void>;
phase?: undefined; phase?: undefined;
} }

View File

@ -11,13 +11,12 @@ import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable"; import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable";
import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
import directoryForUserDataInjectable from "../../app-paths/directory-for-user-data/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../../app-paths/directory-for-user-data/directory-for-user-data.injectable";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, loggerInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import type { ApiManager } from "../api-manager"; import type { ApiManager } from "../api-manager";
import apiManagerInjectable from "../api-manager/manager.injectable"; import apiManagerInjectable from "../api-manager/manager.injectable";
import { KubeApi } from "../kube-api"; import { KubeApi } from "@k8slens/kube-api";
import { KubeObject } from "@k8slens/kube-object"; import { KubeObject } from "@k8slens/kube-object";
import { KubeObjectStore } from "../kube-object.store"; import { KubeObjectStore } from "../kube-object.store";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
// eslint-disable-next-line no-restricted-imports // eslint-disable-next-line no-restricted-imports
import { KubeApi as ExternalKubeApi } from "../../../extensions/common-api/k8s-api"; import { KubeApi as ExternalKubeApi } from "../../../extensions/common-api/k8s-api";
@ -25,6 +24,7 @@ import { Cluster } from "../../cluster/cluster";
import { runInAction } from "mobx"; import { runInAction } from "mobx";
import { customResourceDefinitionApiInjectionToken } from "../api-manager/crd-api-token"; import { customResourceDefinitionApiInjectionToken } from "../api-manager/crd-api-token";
import assert from "assert"; import assert from "assert";
import { maybeKubeApiInjectable } from "@k8slens/kube-api-specifics";
class TestApi extends KubeApi<KubeObject> { class TestApi extends KubeApi<KubeObject> {
protected checkPreferredVersion() { protected checkPreferredVersion() {
@ -61,7 +61,9 @@ describe("ApiManager", () => {
const apiBase = "api/v1/foo"; const apiBase = "api/v1/foo";
const fallbackApiBase = "/apis/extensions/v1beta1/foo"; const fallbackApiBase = "/apis/extensions/v1beta1/foo";
const kubeApi = new TestApi({ const kubeApi = new TestApi({
logger: di.inject(loggerInjectionToken), logError: di.inject(logErrorInjectionToken),
logInfo: di.inject(logInfoInjectionToken),
logWarn: di.inject(logWarningInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, { }, {
objectConstructor: KubeObject, objectConstructor: KubeObject,
@ -136,7 +138,9 @@ describe("ApiManager", () => {
return Object.assign( return Object.assign(
new KubeApi({ new KubeApi({
logger: di.inject(loggerInjectionToken), logError: di.inject(logErrorInjectionToken),
logInfo: di.inject(logInfoInjectionToken),
logWarn: di.inject(logWarningInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, { objectConstructor }), }, { objectConstructor }),
{ {

View File

@ -1,52 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
import storesAndApisCanBeCreatedInjectable from "../../../renderer/stores-apis-can-be-created.injectable";
import apiKubeInjectable from "../../../renderer/k8s/api-kube.injectable";
import type { DeploymentApi } from "../endpoints/deployment.api";
import deploymentApiInjectable from "../endpoints/deployment.api.injectable";
import type { KubeJsonApi } from "../kube-json-api";
describe("DeploymentApi", () => {
let deploymentApi: DeploymentApi;
let kubeJsonApi: jest.Mocked<KubeJsonApi>;
beforeEach(() => {
const di = getDiForUnitTesting();
di.override(storesAndApisCanBeCreatedInjectable, () => true);
kubeJsonApi = {
getResponse: jest.fn(),
get: jest.fn(),
post: jest.fn(),
put: jest.fn(),
patch: jest.fn(),
del: jest.fn(),
} as never;
di.override(apiKubeInjectable, () => kubeJsonApi);
deploymentApi = di.inject(deploymentApiInjectable);
});
describe("scale", () => {
it("requests Kubernetes API with PATCH verb and correct amount of replicas", async () => {
await deploymentApi.scale({ namespace: "default", name: "deployment-1" }, 5);
expect(kubeJsonApi.patch).toHaveBeenCalledWith("/apis/apps/v1/namespaces/default/deployments/deployment-1/scale", {
data: {
spec: {
replicas: 5,
},
},
},
{
headers: {
"content-type": "application/merge-patch+json",
},
});
});
});
});

View File

@ -3,8 +3,8 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import type { ApiManager } from "../api-manager"; import type { ApiManager } from "../api-manager";
import type { IngressApi } from "../endpoints"; import type { IngressApi } from "@k8slens/kube-api";
import { HorizontalPodAutoscalerApi } from "../endpoints"; import { HorizontalPodAutoscalerApi } from "@k8slens/kube-api";
import { Ingress } from "@k8slens/kube-object"; import { Ingress } from "@k8slens/kube-object";
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting"; import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
import type { Fetch } from "../../fetch/fetch.injectable"; import type { Fetch } from "../../fetch/fetch.injectable";
@ -20,9 +20,8 @@ import hostedClusterInjectable from "../../../renderer/cluster-frame-context/hos
import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable"; import directoryForKubeConfigsInjectable from "../../app-paths/directory-for-kube-configs/directory-for-kube-configs.injectable";
import apiManagerInjectable from "../api-manager/manager.injectable"; import apiManagerInjectable from "../api-manager/manager.injectable";
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import ingressApiInjectable from "../endpoints/ingress.api.injectable"; import { ingressApiInjectable, maybeKubeApiInjectable } from "@k8slens/kube-api-specifics";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { Cluster } from "../../cluster/cluster"; import { Cluster } from "../../cluster/cluster";
describe("KubeApi", () => { describe("KubeApi", () => {
@ -710,7 +709,9 @@ describe("KubeApi", () => {
beforeEach(async () => { beforeEach(async () => {
horizontalPodAutoscalerApi = new HorizontalPodAutoscalerApi({ horizontalPodAutoscalerApi = new HorizontalPodAutoscalerApi({
logger: di.inject(loggerInjectionToken), logError: di.inject(logErrorInjectionToken),
logInfo: di.inject(logInfoInjectionToken),
logWarn: di.inject(logWarningInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, { }, {
allowedUsableVersions: { allowedUsableVersions: {

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
*/ */
import { noop } from "@k8slens/utilities"; import { noop } from "@k8slens/utilities";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
import { KubeObject } from "@k8slens/kube-object"; import { KubeObject } from "@k8slens/kube-object";
import type { KubeObjectStoreLoadingParams } from "../kube-object.store"; import type { KubeObjectStoreLoadingParams } from "../kube-object.store";
import { KubeObjectStore } from "../kube-object.store"; import { KubeObjectStore } from "../kube-object.store";

View File

@ -7,9 +7,9 @@ import type { KubeObjectStore } from "../kube-object.store";
import type { IComputedValue } from "mobx"; import type { IComputedValue } from "mobx";
import { autorun, action, observable } from "mobx"; import { autorun, action, observable } from "mobx";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
import type { KubeObject, ObjectReference } from "@k8slens/kube-object"; import type { KubeObject, ObjectReference } from "@k8slens/kube-object";
import { parseKubeApi, createKubeApiURL } from "../kube-api-parse"; import { parseKubeApi, createKubeApiURL } from "@k8slens/kube-api";
import { getOrInsertWith, iter } from "@k8slens/utilities"; import { getOrInsertWith, iter } from "@k8slens/utilities";
import type { CreateCustomResourceStore } from "./create-custom-resource-store.injectable"; import type { CreateCustomResourceStore } from "./create-custom-resource-store.injectable";

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import EventEmitter from "events"; import EventEmitter from "events";
import type TypedEventEmitter from "typed-emitter"; import type TypedEventEmitter from "typed-emitter";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
export interface LegacyAutoRegistration { export interface LegacyAutoRegistration {
kubeApi: (api: KubeApi<any, any>) => void; kubeApi: (api: KubeApi<any, any>) => void;

View File

@ -4,7 +4,7 @@
*/ */
import { getInjectionToken } from "@ogre-tools/injectable"; import { getInjectionToken } from "@ogre-tools/injectable";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
export const customResourceDefinitionApiInjectionToken = getInjectionToken<KubeApi>({ export const customResourceDefinitionApiInjectionToken = getInjectionToken<KubeApi>({
id: "custom-resource-definition-api-token", id: "custom-resource-definition-api-token",

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import clusterFrameContextForNamespacedResourcesInjectable from "../../../renderer/cluster-frame-context/for-namespaced-resources.injectable"; import clusterFrameContextForNamespacedResourcesInjectable from "../../../renderer/cluster-frame-context/for-namespaced-resources.injectable";
import { loggerInjectionToken } from "@k8slens/logger"; import { loggerInjectionToken } from "@k8slens/logger";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
import type { KubeObject } from "@k8slens/kube-object"; import type { KubeObject } from "@k8slens/kube-object";
import type { KubeObjectStoreDependencies } from "../kube-object.store"; import type { KubeObjectStoreDependencies } from "../kube-object.store";
import { CustomResourceStore } from "./resource.store"; import { CustomResourceStore } from "./resource.store";

View File

@ -3,11 +3,10 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ApiManager } from "./api-manager"; import { ApiManager } from "./api-manager";
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx"; import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
import { kubeObjectStoreInjectionToken } from "./kube-object-store-token"; import { kubeObjectStoreInjectionToken } from "./kube-object-store-token";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token"; import { kubeApiInjectionToken, storesAndApisCanBeCreatedInjectionToken } from "@k8slens/kube-api-specifics";
import { computed } from "mobx"; import { computed } from "mobx";
import { customResourceDefinitionApiInjectionToken } from "./crd-api-token"; import { customResourceDefinitionApiInjectionToken } from "./crd-api-token";
import createCustomResourceStoreInjectable from "./create-custom-resource-store.injectable"; import createCustomResourceStoreInjectable from "./create-custom-resource-store.injectable";

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
import type { KubeObjectStoreDependencies } from "../kube-object.store"; import type { KubeObjectStoreDependencies } from "../kube-object.store";
import { KubeObjectStore } from "../kube-object.store"; import { KubeObjectStore } from "../kube-object.store";
import type { KubeObject } from "@k8slens/kube-object"; import type { KubeObject } from "@k8slens/kube-object";

View File

@ -3,13 +3,13 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import { apiKubePrefix } from "../vars"; import { apiKubePrefix } from "../vars";
import isDevelopmentInjectable from "../vars/is-development.injectable"; import isDevelopmentInjectable from "../vars/is-development.injectable";
import apiBaseInjectable from "./api-base.injectable"; import apiBaseInjectable from "./api-base.injectable";
import type { KubeApiConstructor } from "./create-kube-api-for-remote-cluster.injectable"; import type { KubeApiConstructor } from "./create-kube-api-for-remote-cluster.injectable";
import createKubeJsonApiInjectable from "./create-kube-json-api.injectable"; import createKubeJsonApiInjectable from "./create-kube-json-api.injectable";
import { KubeApi } from "./kube-api"; import { KubeApi } from "@k8slens/kube-api";
import type { KubeJsonApiDataFor, KubeObject, KubeObjectConstructor } from "@k8slens/kube-object"; import type { KubeJsonApiDataFor, KubeObject, KubeObjectConstructor } from "@k8slens/kube-object";
export interface CreateKubeApiForLocalClusterConfig { export interface CreateKubeApiForLocalClusterConfig {
@ -37,7 +37,9 @@ const createKubeApiForClusterInjectable = getInjectable({
const apiBase = di.inject(apiBaseInjectable); const apiBase = di.inject(apiBaseInjectable);
const isDevelopment = di.inject(isDevelopmentInjectable); const isDevelopment = di.inject(isDevelopmentInjectable);
const createKubeJsonApi = di.inject(createKubeJsonApiInjectable); const createKubeJsonApi = di.inject(createKubeJsonApiInjectable);
const logger = di.inject(loggerInjectionToken); const logError = di.inject(logErrorInjectionToken);
const logInfo = di.inject(logInfoInjectionToken);
const logWarn = di.inject(logWarningInjectionToken);
return ( return (
cluster: CreateKubeApiForLocalClusterConfig, cluster: CreateKubeApiForLocalClusterConfig,
@ -64,7 +66,9 @@ const createKubeApiForClusterInjectable = getInjectable({
return new KubeApi( return new KubeApi(
{ {
logger, logError,
logInfo,
logWarn,
maybeKubeApi: undefined, maybeKubeApi: undefined,
}, },
{ {

View File

@ -6,11 +6,11 @@ import { getInjectable } from "@ogre-tools/injectable";
import type { AgentOptions } from "https"; import type { AgentOptions } from "https";
import { Agent } from "https"; import { Agent } from "https";
import type { RequestInit } from "@k8slens/node-fetch"; import type { RequestInit } from "@k8slens/node-fetch";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import isDevelopmentInjectable from "../vars/is-development.injectable"; import isDevelopmentInjectable from "../vars/is-development.injectable";
import createKubeJsonApiInjectable from "./create-kube-json-api.injectable"; import createKubeJsonApiInjectable from "./create-kube-json-api.injectable";
import type { KubeApiOptions } from "./kube-api"; import type { KubeApiOptions } from "@k8slens/kube-api";
import { KubeApi } from "./kube-api"; import { KubeApi } from "@k8slens/kube-api";
import type { KubeJsonApiDataFor, KubeObject, KubeObjectConstructor } from "@k8slens/kube-object"; import type { KubeJsonApiDataFor, KubeObject, KubeObjectConstructor } from "@k8slens/kube-object";
export interface CreateKubeApiForRemoteClusterConfig { export interface CreateKubeApiForRemoteClusterConfig {
@ -53,7 +53,9 @@ const createKubeApiForRemoteClusterInjectable = getInjectable({
instantiate: (di): CreateKubeApiForRemoteCluster => { instantiate: (di): CreateKubeApiForRemoteCluster => {
const isDevelopment = di.inject(isDevelopmentInjectable); const isDevelopment = di.inject(isDevelopmentInjectable);
const createKubeJsonApi = di.inject(createKubeJsonApiInjectable); const createKubeJsonApi = di.inject(createKubeJsonApiInjectable);
const logger = di.inject(loggerInjectionToken); const logError = di.inject(logErrorInjectionToken);
const logInfo = di.inject(logInfoInjectionToken);
const logWarn = di.inject(logWarningInjectionToken);
return ( return (
config: CreateKubeApiForRemoteClusterConfig, config: CreateKubeApiForRemoteClusterConfig,
@ -110,7 +112,9 @@ const createKubeApiForRemoteClusterInjectable = getInjectable({
return new KubeApi( return new KubeApi(
{ {
logger, logError,
logInfo,
logWarn,
maybeKubeApi: undefined, maybeKubeApi: undefined,
}, },
{ {

View File

@ -3,9 +3,9 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "./kube-api"; import type { DerivedKubeApiOptions, KubeApiDependencies } from "@k8slens/kube-api";
import maybeKubeApiInjectable from "./maybe-kube-api.injectable"; import { maybeKubeApiInjectable } from "@k8slens/kube-api-specifics";
export interface CreateKubeApi { export interface CreateKubeApi {
<Api>(ctor: new (deps: KubeApiDependencies, opts: DerivedKubeApiOptions) => Api, opts?: DerivedKubeApiOptions): Api; <Api>(ctor: new (deps: KubeApiDependencies, opts: DerivedKubeApiOptions) => Api, opts?: DerivedKubeApiOptions): Api;
@ -15,7 +15,9 @@ const createKubeApiInjectable = getInjectable({
id: "create-kube-api", id: "create-kube-api",
instantiate: (di): CreateKubeApi => { instantiate: (di): CreateKubeApi => {
const deps: KubeApiDependencies = { const deps: KubeApiDependencies = {
logger: di.inject(loggerInjectionToken), logError: di.inject(logErrorInjectionToken),
logInfo: di.inject(logInfoInjectionToken),
logWarn: di.inject(logWarningInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}; };

View File

@ -7,7 +7,7 @@ import { apiKubePrefix } from "../vars";
import isDebuggingInjectable from "../vars/is-debugging.injectable"; import isDebuggingInjectable from "../vars/is-debugging.injectable";
import { apiBaseHostHeaderInjectionToken, apiBaseServerAddressInjectionToken } from "./api-base-configs"; import { apiBaseHostHeaderInjectionToken, apiBaseServerAddressInjectionToken } from "./api-base-configs";
import createKubeJsonApiInjectable from "./create-kube-json-api.injectable"; import createKubeJsonApiInjectable from "./create-kube-json-api.injectable";
import type { KubeJsonApi } from "./kube-json-api"; import type { KubeJsonApi } from "@k8slens/kube-api";
export type CreateKubeJsonApiForCluster = (clusterId: string) => KubeJsonApi; export type CreateKubeJsonApiForCluster = (clusterId: string) => KubeJsonApi;

View File

@ -9,7 +9,7 @@ import lensProxyCertificateInjectable from "../certificate/lens-proxy-certificat
import fetchInjectable from "../fetch/fetch.injectable"; import fetchInjectable from "../fetch/fetch.injectable";
import { loggerInjectionToken } from "@k8slens/logger"; import { loggerInjectionToken } from "@k8slens/logger";
import type { JsonApiConfig, JsonApiDependencies } from "@k8slens/json-api"; import type { JsonApiConfig, JsonApiDependencies } from "@k8slens/json-api";
import { KubeJsonApi } from "./kube-json-api"; import { KubeJsonApi } from "@k8slens/kube-api";
export type CreateKubeJsonApi = (config: JsonApiConfig, reqInit?: RequestInit) => KubeJsonApi; export type CreateKubeJsonApi = (config: JsonApiConfig, reqInit?: RequestInit) => KubeJsonApi;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ClusterRoleBindingApi } from "./cluster-role-binding.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const clusterRoleBindingApiInjectable = getInjectable({
id: "cluster-role-binding-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "clusterRoleBindingApi is only accessible in certain environments");
return new ClusterRoleBindingApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default clusterRoleBindingApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ClusterRoleApi } from "./cluster-role.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const clusterRoleApiInjectable = getInjectable({
id: "cluster-role-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "clusterRoleApi is only available in certain environments");
return new ClusterRoleApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default clusterRoleApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ClusterApi } from "./cluster.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const clusterApiInjectable = getInjectable({
id: "cluster-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "clusterApi is only available in certain environments");
return new ClusterApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default clusterApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ComponentStatusApi } from "./component-status.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
const componentStatusApiInjectable = getInjectable({
id: "component-status-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "componentStatusApi is only available in certain environments");
return new ComponentStatusApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default componentStatusApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ConfigMapApi } from "./config-map.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const configMapApiInjectable = getInjectable({
id: "config-map-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "configMapApi is only available in certain environments");
return new ConfigMapApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default configMapApiInjectable;

View File

@ -1,29 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { CronJobApi } from "./cron-job.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const cronJobApiInjectable = getInjectable({
id: "cron-job-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "cronJobApi is only available in certain environments");
return new CronJobApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, {
checkPreferredVersion: true,
});
},
injectionToken: kubeApiInjectionToken,
});
export default cronJobApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { CustomResourceDefinitionApi } from "./custom-resource-definition.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { loggerInjectionToken } from "@k8slens/logger";
const customResourceDefinitionApiInjectable = getInjectable({
id: "custom-resource-definition-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "customResourceDefinitionApi is only available in certain environments");
return new CustomResourceDefinitionApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default customResourceDefinitionApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { DaemonSetApi } from "./daemon-set.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const daemonSetApiInjectable = getInjectable({
id: "daemon-set-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "daemonSetApi is only available in certain environments");
return new DaemonSetApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default daemonSetApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { DeploymentApi } from "./deployment.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const deploymentApiInjectable = getInjectable({
id: "deployment-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "deploymentApi is only available in certain environments");
return new DeploymentApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default deploymentApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { EndpointsApi } from "./endpoint.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const endpointsApiInjectable = getInjectable({
id: "endpoints-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "endpointsApi is only available in certain environments");
return new EndpointsApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default endpointsApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { KubeEventApi } from "./events.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const kubeEventApiInjectable = getInjectable({
id: "kube-event-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "kubeEventApi is only available in certain environments");
return new KubeEventApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default kubeEventApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { HorizontalPodAutoscalerApi } from "./horizontal-pod-autoscaler.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const horizontalPodAutoscalerApiInjectable = getInjectable({
id: "horizontal-pod-autoscaler-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "horizontalPodAutoscalerApi is only available in certain environments");
return new HorizontalPodAutoscalerApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default horizontalPodAutoscalerApiInjectable;

View File

@ -1,21 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { IngressClassApi } from "./ingress-class.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const ingressClassApiInjectable = getInjectable({
id: "ingress-class-api",
instantiate: (di) => new IngressClassApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
}),
injectionToken: kubeApiInjectionToken,
});
export default ingressClassApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { IngressApi } from "./ingress.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const ingressApiInjectable = getInjectable({
id: "ingress-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "ingressApi is only available in certain environments");
return new IngressApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default ingressApiInjectable;

View File

@ -1,29 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { JobApi } from "./job.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const jobApiInjectable = getInjectable({
id: "job-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "jobApi is only available in certain environments");
return new JobApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, {
checkPreferredVersion: true,
});
},
injectionToken: kubeApiInjectionToken,
});
export default jobApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { LeaseApi } from "./lease.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const leaseApiInjectable = getInjectable({
id: "lease-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "leaseApi is only available in certain environments");
return new LeaseApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default leaseApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { LimitRangeApi } from "./limit-range.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const limitRangeApiInjectable = getInjectable({
id: "limit-range-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "limitRangeApi is only available in certain environments");
return new LimitRangeApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default limitRangeApiInjectable;

View File

@ -4,7 +4,7 @@
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import type { MetricData } from "../metrics.api"; import type { MetricData } from "../metrics.api";
import type { Pod } from "@k8slens/kube-object"; import type { Pod, Container } from "@k8slens/kube-object";
import requestMetricsInjectable from "./request-metrics.injectable"; import requestMetricsInjectable from "./request-metrics.injectable";
export interface PodMetricData { export interface PodMetricData {
@ -21,16 +21,16 @@ export interface PodMetricData {
memoryLimits: MetricData; memoryLimits: MetricData;
} }
export type RequestPodMetrics = (pods: Pod[], namespace: string, selector?: string) => Promise<PodMetricData>; export type RequestPodMetrics = (pods: Pod[], namespace: string, container?: Container, selector?: string) => Promise<PodMetricData>;
const requestPodMetricsInjectable = getInjectable({ const requestPodMetricsInjectable = getInjectable({
id: "request-pod-metrics", id: "request-pod-metrics",
instantiate: (di): RequestPodMetrics => { instantiate: (di): RequestPodMetrics => {
const requestMetrics = di.inject(requestMetricsInjectable); const requestMetrics = di.inject(requestMetricsInjectable);
return (pods, namespace, selector = "pod, namespace") => { return (pods, namespace, container, selector = "pod, namespace") => {
const podSelector = pods.map(pod => pod.getName()).join("|"); const podSelector = pods.map(pod => pod.getName()).join("|");
const opts = { category: "pods", pods: podSelector, namespace, selector }; const opts = { category: "pods", pods: podSelector, container: container?.name, namespace, selector };
return requestMetrics({ return requestMetrics({
cpuUsage: opts, cpuUsage: opts,

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { MutatingWebhookConfigurationApi } from "./mutating-webhook-configuration.api";
const mutatingWebhookConfigurationApiInjectable = getInjectable({
id: "mutating-webhook-configuration",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "mutatingWebhookApi is only available in certain environments");
return new MutatingWebhookConfigurationApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default mutatingWebhookConfigurationApiInjectable;

View File

@ -1,28 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { NamespaceApi } from "./namespace.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const namespaceApiInjectable = getInjectable({
id: "namespace-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "namespaceApi is only available in certain environments");
return new NamespaceApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default namespaceApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { NetworkPolicyApi } from "./network-policy.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const networkPolicyApiInjectable = getInjectable({
id: "network-policy-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "networkPolicyApi is only available in certain environments");
return new NetworkPolicyApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default networkPolicyApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { NodeApi } from "./node.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const nodeApiInjectable = getInjectable({
id: "node-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "nodeApi is only available in certain environments");
return new NodeApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default nodeApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PersistentVolumeClaimApi } from "./persistent-volume-claim.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const persistentVolumeClaimApiInjectable = getInjectable({
id: "persistent-volume-claim-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "persistentVolumeClaimApi is only available in certain environments");
return new PersistentVolumeClaimApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default persistentVolumeClaimApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PersistentVolumeApi } from "./persistent-volume.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const persistentVolumeApiInjectable = getInjectable({
id: "persistent-volume-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "persistentVolumeApi is only available in certain environments");
return new PersistentVolumeApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default persistentVolumeApiInjectable;

View File

@ -1,35 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PodDisruptionBudgetApi } from "./pod-disruption-budget.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const podDisruptionBudgetApiInjectable = getInjectable({
id: "pod-disruption-budget-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "podDisruptionBudgetApi is only available in certain environments");
return new PodDisruptionBudgetApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, {
checkPreferredVersion: true,
allowedUsableVersions: {
policy: [
"v1",
"v1beta1",
],
},
});
},
injectionToken: kubeApiInjectionToken,
});
export default podDisruptionBudgetApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PodMetricsApi } from "./pod-metrics.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const podMetricsApiInjectable = getInjectable({
id: "pod-metrics-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "podMetricsApi is only available in certain environments");
return new PodMetricsApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default podMetricsApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PodSecurityPolicyApi } from "./pod-security-policy.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const podSecurityPolicyApiInjectable = getInjectable({
id: "pod-security-policy-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "podSecurityPolicyApi is only available in certain environments");
return new PodSecurityPolicyApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default podSecurityPolicyApiInjectable;

View File

@ -1,28 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PodApi } from "./pod.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const podApiInjectable = getInjectable({
id: "pod-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "podApi is only available in certain environments");
return new PodApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default podApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { PriorityClassApi } from "./priority-class.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const priorityClassApiInjectable = getInjectable({
id: "priority-class-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "PriorityClassApi is only available in certain environments");
return new PriorityClassApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default priorityClassApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ReplicaSetApi } from "./replica-set.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const replicaSetApiInjectable = getInjectable({
id: "replica-set-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "replicaSetApi is only available in certain environments");
return new ReplicaSetApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default replicaSetApiInjectable;

View File

@ -1,23 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { ReplicationControllerApi } from "./replication-controller.api";
const replicationControllerApiInjectable = getInjectable({
id: "replication-controller-api",
instantiate: (di) => {
return new ReplicationControllerApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default replicationControllerApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ResourceQuotaApi } from "./resource-quota.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const resourceQuotaApiInjectable = getInjectable({
id: "resource-quota-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "resourceQuotaApi is only available in certain environments");
return new ResourceQuotaApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default resourceQuotaApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { RoleBindingApi } from "./role-binding.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const roleBindingApiInjectable = getInjectable({
id: "role-binding-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "roleBindingApi is only available in certain environments");
return new RoleBindingApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default roleBindingApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { RoleApi } from "./role.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const roleApiInjectable = getInjectable({
id: "role-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "roleApi is only available in certain environments");
return new RoleApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default roleApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { RuntimeClassApi } from "./runtime-class.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const runtimeClassApiInjectable = getInjectable({
id: "runtime-class-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "RuntimeClassApi is only available in certain environments");
return new RuntimeClassApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default runtimeClassApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { SecretApi } from "./secret.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const secretApiInjectable = getInjectable({
id: "secret-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "secretApi is only available in certain environments");
return new SecretApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default secretApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { SelfSubjectRulesReviewApi } from "./self-subject-rules-reviews.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const selfSubjectRulesReviewApiInjectable = getInjectable({
id: "self-subject-rules-review-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "selfSubjectRulesReviewApi is only available in certain environments");
return new SelfSubjectRulesReviewApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default selfSubjectRulesReviewApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ServiceAccountApi } from "./service-account.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const serviceAccountApiInjectable = getInjectable({
id: "service-account-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "serviceAccountApi is only available in certain environments");
return new ServiceAccountApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default serviceAccountApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { ServiceApi } from "./service.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const serviceApiInjectable = getInjectable({
id: "service-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "serviceApi is only available in certain environments");
return new ServiceApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default serviceApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { StatefulSetApi } from "./stateful-set.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const statefulSetApiInjectable = getInjectable({
id: "stateful-set-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "statefulSetApi is only available in certain environments");
return new StatefulSetApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default statefulSetApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { StorageClassApi } from "./storage-class.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const storageClassApiInjectable = getInjectable({
id: "storage-class-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "storageClassApi is only available in certain environments");
return new StorageClassApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default storageClassApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
import { ValidatingWebhookConfigurationApi } from "./validating-webhook-configuration.api";
const validatingWebhookConfigurationApiInjectable = getInjectable({
id: "validating-webhook-configuration",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "validatingWebhookApi is only available in certain environments");
return new ValidatingWebhookConfigurationApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default validatingWebhookConfigurationApiInjectable;

View File

@ -1,27 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import assert from "assert";
import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token";
import { VerticalPodAutoscalerApi } from "./vertical-pod-autoscaler.api";
import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token";
import { loggerInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../maybe-kube-api.injectable";
const verticalPodAutoscalerApiInjectable = getInjectable({
id: "vertical-pod-autoscaler-api",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "verticalPodAutoscalerApi is only available in certain environments");
return new VerticalPodAutoscalerApi({
logger: di.inject(loggerInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default verticalPodAutoscalerApiInjectable;

View File

@ -3,9 +3,9 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { parseKubeApi } from "../kube-api-parse"; import { parseKubeApi } from "@k8slens/kube-api";
import { kubeApiInjectionToken } from "./kube-api-injection-token"; import { kubeApiInjectionToken } from "@k8slens/kube-api-specifics";
import type { KubeApi } from "../kube-api"; import type { KubeApi } from "@k8slens/kube-api";
export type GetKubeApiFromPath = (apiPath: string) => KubeApi | undefined; export type GetKubeApiFromPath = (apiPath: string) => KubeApi | undefined;

View File

@ -8,10 +8,9 @@ import type { Disposer } from "@k8slens/utilities";
import { waitUntilDefined, includes, rejectPromiseBy, object } from "@k8slens/utilities"; import { waitUntilDefined, includes, rejectPromiseBy, object } from "@k8slens/utilities";
import type { KubeJsonApiDataFor, KubeObject } from "@k8slens/kube-object"; import type { KubeJsonApiDataFor, KubeObject } from "@k8slens/kube-object";
import { KubeStatus } from "@k8slens/kube-object"; import { KubeStatus } from "@k8slens/kube-object";
import type { IKubeWatchEvent } from "./kube-watch-event"; import type { IKubeWatchEvent, KubeApiQueryParams, KubeApi, KubeApiWatchCallback } from "@k8slens/kube-api";
import { ItemStore } from "../item.store"; import { ItemStore } from "../item.store";
import type { KubeApiQueryParams, KubeApi, KubeApiWatchCallback } from "./kube-api"; import { parseKubeApi } from "@k8slens/kube-api";
import { parseKubeApi } from "./kube-api-parse";
import type { RequestInit } from "@k8slens/node-fetch"; import type { RequestInit } from "@k8slens/node-fetch";
import type { Patch } from "rfc6902"; import type { Patch } from "rfc6902";
import type { Logger } from "@k8slens/logger"; import type { Logger } from "@k8slens/logger";

View File

@ -2,10 +2,10 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { storesAndApisCanBeCreatedInjectionToken } from "@k8slens/kube-api-specifics";
import { getInjectable } from "@ogre-tools/injectable"; import { getInjectable } from "@ogre-tools/injectable";
import { computed } from "mobx"; import { computed } from "mobx";
import clusterFrameContextForNamespacedResourcesInjectable from "../../renderer/cluster-frame-context/for-namespaced-resources.injectable"; import clusterFrameContextForNamespacedResourcesInjectable from "../../renderer/cluster-frame-context/for-namespaced-resources.injectable";
import { storesAndApisCanBeCreatedInjectionToken } from "./stores-apis-can-be-created.token";
const selectedFilterNamespacesInjectable = getInjectable({ const selectedFilterNamespacesInjectable = getInjectable({
id: "selected-filter-namespaces", id: "selected-filter-namespaces",

View File

@ -1,25 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { sortBy } from "lodash/fp";
export interface Orderable {
readonly orderNumber: number;
}
export type MaybeOrderable = Orderable | object;
export const orderByOrderNumber = <T extends MaybeOrderable>(maybeOrderables: T[]) =>
sortBy(
(orderable) =>
"orderNumber" in orderable
? orderable.orderNumber
: Number.MAX_SAFE_INTEGER,
maybeOrderables,
);
export const byOrderNumber = <T extends Orderable>(left: T, right: T) => (
left.orderNumber - right.orderNumber
);

View File

@ -4,6 +4,6 @@
*/ */
import { getGlobalOverride } from "@k8slens/test-utils"; import { getGlobalOverride } from "@k8slens/test-utils";
import getRandomIdInjectable from "./get-random-id.injectable"; import { getRandomIdInjectionToken } from "@k8slens/random";
export default getGlobalOverride(getRandomIdInjectable, () => () => "some-irrelevant-random-id"); export default getGlobalOverride(getRandomIdInjectionToken, () => () => "some-irrelevant-random-id");

View File

@ -1,14 +0,0 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { getInjectable } from "@ogre-tools/injectable";
import { v4 as getRandomId } from "uuid";
const getRandomIdInjectable = getInjectable({
id: "get-random-id",
instantiate: () => () => getRandomId(),
causesSideEffects: true,
});
export default getRandomIdInjectable;

View File

@ -8,12 +8,12 @@ import type { LensExtension } from "./lens-extension";
import type { StaticThis } from "../common/utils/singleton"; import type { StaticThis } from "../common/utils/singleton";
import { getOrInsertWith } from "@k8slens/utilities"; import { getOrInsertWith } from "@k8slens/utilities";
import { getLegacyGlobalDiForExtensionApi } from "@k8slens/legacy-global-di"; import { getLegacyGlobalDiForExtensionApi } from "@k8slens/legacy-global-di";
import type { PersistentStorage, PersistentStorageParams } from "../common/persistent-storage/create.injectable";
import createPersistentStorageInjectable from "../common/persistent-storage/create.injectable";
import directoryForUserDataInjectable from "../common/app-paths/directory-for-user-data/directory-for-user-data.injectable"; import directoryForUserDataInjectable from "../common/app-paths/directory-for-user-data/directory-for-user-data.injectable";
import assert from "assert"; import assert from "assert";
import type { Options } from "conf"; import type { Options } from "conf";
import type { Migrations } from "../common/persistent-storage/migrations.injectable"; import createPersistentStorageInjectable, { type PersistentStorage } from "../features/persistent-storage/common/create.injectable";
import type { PersistentStorageParams } from "./common-api/stores";
import type { Migrations } from "../features/persistent-storage/common/migrations.injectable";
export interface ExtensionStoreParams<T extends object> extends Omit<PersistentStorageParams<T>, "migrations" | "cwd" | "fromStore" | "toJSON"> { export interface ExtensionStoreParams<T extends object> extends Omit<PersistentStorageParams<T>, "migrations" | "cwd" | "fromStore" | "toJSON"> {
migrations?: Options<T>["migrations"]; migrations?: Options<T>["migrations"];

View File

@ -17,16 +17,13 @@ import type { KubernetesCluster } from "./catalog";
import type { KubeApiDataFrom, KubeObjectStoreOptions } from "../../common/k8s-api/kube-object.store"; import type { KubeApiDataFrom, KubeObjectStoreOptions } from "../../common/k8s-api/kube-object.store";
import { KubeObjectStore as InternalKubeObjectStore } from "../../common/k8s-api/kube-object.store"; import { KubeObjectStore as InternalKubeObjectStore } from "../../common/k8s-api/kube-object.store";
import type { KubeJsonApiDataFor, KubeObject } from "@k8slens/kube-object"; import type { KubeJsonApiDataFor, KubeObject } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies, KubeApiOptions } from "../../common/k8s-api/kube-api"; import type { DerivedKubeApiOptions, KubeApiDependencies, KubeApiOptions, KubeJsonApi as InternalKubeJsonApi } from "@k8slens/kube-api";
import { KubeApi as InternalKubeApi } from "../../common/k8s-api/kube-api";
import clusterFrameContextForNamespacedResourcesInjectable from "../../renderer/cluster-frame-context/for-namespaced-resources.injectable"; import clusterFrameContextForNamespacedResourcesInjectable from "../../renderer/cluster-frame-context/for-namespaced-resources.injectable";
import type { ClusterContext } from "../../renderer/cluster-frame-context/cluster-frame-context"; import type { ClusterContext } from "../../renderer/cluster-frame-context/cluster-frame-context";
import { loggerInjectionToken } from "@k8slens/logger"; import { logErrorInjectionToken, loggerInjectionToken, logInfoInjectionToken, logWarningInjectionToken } from "@k8slens/logger";
import maybeKubeApiInjectable from "../../common/k8s-api/maybe-kube-api.injectable"; import { maybeKubeApiInjectable, storesAndApisCanBeCreatedInjectionToken } from "@k8slens/kube-api-specifics";
import { DeploymentApi as InternalDeploymentApi, IngressApi as InternalIngressApi, NodeApi, PersistentVolumeClaimApi, PodApi } from "../../common/k8s-api/endpoints"; import { DeploymentApi as InternalDeploymentApi, IngressApi as InternalIngressApi, NodeApi, PersistentVolumeClaimApi, PodApi, KubeApi as InternalKubeApi } from "@k8slens/kube-api";
import { storesAndApisCanBeCreatedInjectionToken } from "../../common/k8s-api/stores-apis-can-be-created.token";
import type { JsonApiConfig } from "@k8slens/json-api"; import type { JsonApiConfig } from "@k8slens/json-api";
import type { KubeJsonApi as InternalKubeJsonApi } from "../../common/k8s-api/kube-json-api";
import createKubeJsonApiInjectable from "../../common/k8s-api/create-kube-json-api.injectable"; import createKubeJsonApiInjectable from "../../common/k8s-api/create-kube-json-api.injectable";
import type { RequestInit } from "@k8slens/node-fetch"; import type { RequestInit } from "@k8slens/node-fetch";
import createKubeJsonApiForClusterInjectable from "../../common/k8s-api/create-kube-json-api-for-cluster.injectable"; import createKubeJsonApiForClusterInjectable from "../../common/k8s-api/create-kube-json-api-for-cluster.injectable";
@ -42,7 +39,9 @@ const getKubeApiDeps = (): KubeApiDependencies => {
const di = getLegacyGlobalDiForExtensionApi(); const di = getLegacyGlobalDiForExtensionApi();
return { return {
logger: di.inject(loggerInjectionToken), logError: di.inject(logErrorInjectionToken),
logInfo: di.inject(logInfoInjectionToken),
logWarn: di.inject(logWarningInjectionToken),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}; };
}; };

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import type { PersistentStorageParams } from "../../common/persistent-storage/create.injectable"; import type { PersistentStorageParams } from "../../features/persistent-storage/common/create.injectable";
import type { ExtensionStoreParams } from "../base-extension-store"; import type { ExtensionStoreParams } from "../base-extension-store";
import { BaseExtensionStore as ExtensionStore } from "../base-extension-store"; import { BaseExtensionStore as ExtensionStore } from "../base-extension-store";

Some files were not shown because too many files have changed in this diff Show More