@k8slens/extensions 5.6.0-git.db65a89ee0.0 → 5.6.0-git.de43df1cca.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/src/common/cluster/cluster.d.ts +2 -2
  2. package/dist/src/common/cluster/create-cluster-injection-token.d.ts +2 -2
  3. package/dist/src/common/cluster-store/allowed-resources-injection-token.d.ts +6 -0
  4. package/dist/src/common/cluster-store/cluster-store.d.ts +4 -1
  5. package/dist/src/common/cluster-store/read-cluster-config.injectable.d.ts +4 -0
  6. package/dist/src/common/cluster-types.d.ts +8 -0
  7. package/dist/src/common/front-end-routing/{route-injection-token.d.ts → front-end-route-injection-token.d.ts} +1 -1
  8. package/dist/src/common/front-end-routing/navigate-to-route-injection-token.d.ts +1 -1
  9. package/dist/src/common/front-end-routing/routes/catalog/catalog-route.injectable.d.ts +1 -1
  10. package/dist/src/common/front-end-routing/routes/cluster/custom-resources/custom-resources/custom-resources-route.injectable.d.ts +1 -1
  11. package/dist/src/common/front-end-routing/routes/cluster-view/cluster-view-route.injectable.d.ts +1 -1
  12. package/dist/src/common/fs/read-file-sync.injectable.d.ts +3 -0
  13. package/dist/src/common/k8s-api/endpoints/cluster.api.d.ts +7 -0
  14. package/dist/src/common/k8s-api/endpoints/metrics.api.d.ts +1 -1
  15. package/dist/src/common/k8s-api/kube-object.store.d.ts +2 -2
  16. package/dist/src/common/kube-helpers.d.ts +10 -2
  17. package/dist/src/common/utils/buildUrl.d.ts +1 -1
  18. package/dist/src/common/utils/reject-promise.d.ts +2 -2
  19. package/dist/src/common/utils/type-narrowing.d.ts +5 -0
  20. package/dist/src/common/vars/base-bundled-binaries-dir.injectable.d.ts +2 -2
  21. package/dist/src/common/vars/normalized-platform-architecture.injectable.d.ts +2 -0
  22. package/dist/src/common/vars/package-json.injectable.d.ts +14 -9
  23. package/dist/src/common/vars.d.ts +1 -0
  24. package/dist/src/extensions/extension-loader/extension/extension.injectable.d.ts +7 -0
  25. package/dist/src/extensions/extension-loader/extension-loader.d.ts +2 -2
  26. package/dist/src/extensions/extension-loader/extension-registrator-injection-token.d.ts +7 -0
  27. package/dist/src/extensions/extensions-store/extensions-store.d.ts +5 -4
  28. package/dist/src/extensions/lens-extension-set-dependencies.d.ts +1 -1
  29. package/dist/src/extensions/registries/entity-setting-registry.d.ts +1 -1
  30. package/dist/src/main/kube-auth-proxy/kube-auth-proxy.d.ts +1 -0
  31. package/dist/src/main/start-main-application/lens-window/application-window/application-window.injectable.d.ts +1 -6
  32. package/dist/src/main/start-main-application/lens-window/application-window/{create-electron-window-for.injectable.d.ts → create-electron-window.injectable.d.ts} +4 -5
  33. package/dist/src/main/start-main-application/lens-window/application-window/create-lens-window.injectable.d.ts +6 -9
  34. package/dist/src/main/start-main-application/lens-window/application-window/lens-window-injection-token.d.ts +5 -2
  35. package/dist/src/main/start-main-application/lens-window/application-window/wait-until-bundled-extensions-are-loaded.injectable.d.ts +2 -0
  36. package/dist/src/main/start-main-application/lens-window/navigate.injectable.d.ts +1 -1
  37. package/dist/src/main/start-main-application/lens-window/splash-window/splash-window.injectable.d.ts +1 -6
  38. package/dist/src/{common/cluster-store → renderer/cluster-frame-context}/hosted-cluster-id.injectable.d.ts +0 -0
  39. package/dist/src/{common/cluster-store → renderer/cluster-frame-context}/hosted-cluster.injectable.d.ts +1 -1
  40. package/dist/src/renderer/components/dock/dock/create-dock-tab.injectable.d.ts +1 -1
  41. package/dist/src/renderer/components/drawer/drawer-title.d.ts +5 -1
  42. package/dist/src/renderer/components/input/input.d.ts +6 -7
  43. package/dist/src/renderer/components/input/input_validators.d.ts +28 -15
  44. package/dist/src/renderer/components/layout/sidebar-items.injectable.d.ts +0 -2
  45. package/dist/src/renderer/components/notifications/notifications.d.ts +4 -4
  46. package/dist/src/renderer/components/wizard/wizard.d.ts +2 -0
  47. package/dist/src/renderer/routes/route-path-parameters.injectable.d.ts +1 -1
  48. package/package.json +2 -2
  49. package/dist/src/common/cluster-store/allowed-resources.injectable.d.ts +0 -2
  50. package/dist/src/common/vars/bundled-binaries-normalized-arch.injectable.d.ts +0 -2
@@ -9,7 +9,7 @@ import type { KubeconfigManager } from "../../main/kubeconfig-manager/kubeconfig
9
9
  import type { KubeResource } from "../rbac";
10
10
  import type { VersionDetector } from "../../main/cluster-detectors/version-detector";
11
11
  import type { DetectorRegistry } from "../../main/cluster-detectors/detector-registry";
12
- import type { ClusterState, ClusterRefreshOptions, ClusterMetricsResourceType, ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences, UpdateClusterModel } from "../cluster-types";
12
+ import type { ClusterState, ClusterRefreshOptions, ClusterMetricsResourceType, ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences, UpdateClusterModel, ClusterConfigData } from "../cluster-types";
13
13
  import { ClusterStatus } from "../cluster-types";
14
14
  import type { CanI } from "./authorization-review.injectable";
15
15
  import type { ListNamespaces } from "./list-namespaces.injectable";
@@ -187,7 +187,7 @@ export declare class Cluster implements ClusterModel, ClusterState {
187
187
  * @internal
188
188
  */
189
189
  get defaultNamespace(): string | undefined;
190
- constructor(dependencies: ClusterDependencies, model: ClusterModel);
190
+ constructor(dependencies: ClusterDependencies, model: ClusterModel, configData: ClusterConfigData);
191
191
  /**
192
192
  * Update cluster data model
193
193
  *
@@ -1,4 +1,4 @@
1
- import type { ClusterModel } from "../cluster-types";
1
+ import type { ClusterConfigData, ClusterModel } from "../cluster-types";
2
2
  import type { Cluster } from "./cluster";
3
- export declare type CreateCluster = (model: ClusterModel) => Cluster;
3
+ export declare type CreateCluster = (model: ClusterModel, configData: ClusterConfigData) => Cluster;
4
4
  export declare const createClusterInjectionToken: import("@ogre-tools/injectable").InjectionToken<CreateCluster, void>;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) OpenLens Authors. All rights reserved.
3
+ * Licensed under MIT License. See LICENSE in root directory for more information.
4
+ */
5
+ import type { IComputedValue } from "mobx";
6
+ export declare const allowedResourcesInjectionToken: import("@ogre-tools/injectable").InjectionToken<IComputedValue<Set<string>>, void>;
@@ -5,11 +5,14 @@
5
5
  import { BaseStore } from "../base-store";
6
6
  import { Cluster } from "../cluster/cluster";
7
7
  import type { ClusterModel, ClusterId } from "../cluster-types";
8
+ import type { CreateCluster } from "../cluster/create-cluster-injection-token";
9
+ import type { ReadClusterConfigSync } from "./read-cluster-config.injectable";
8
10
  export interface ClusterStoreModel {
9
11
  clusters?: ClusterModel[];
10
12
  }
11
13
  interface Dependencies {
12
- createCluster: (model: ClusterModel) => Cluster;
14
+ createCluster: CreateCluster;
15
+ readClusterConfigSync: ReadClusterConfigSync;
13
16
  }
14
17
  export declare class ClusterStore extends BaseStore<ClusterStoreModel> {
15
18
  private dependencies;
@@ -0,0 +1,4 @@
1
+ import type { ClusterConfigData, ClusterModel } from "../cluster-types";
2
+ export declare type ReadClusterConfigSync = (model: ClusterModel) => ClusterConfigData;
3
+ declare const readClusterConfigSyncInjectable: import("@ogre-tools/injectable").Injectable<ReadClusterConfigSync, unknown, void>;
4
+ export default readClusterConfigSyncInjectable;
@@ -53,6 +53,14 @@ export interface ClusterModel {
53
53
  */
54
54
  labels?: Record<string, string>;
55
55
  }
56
+ /**
57
+ * This data is retreived from the kubeconfig file before calling the cluster constructor.
58
+ *
59
+ * That is done to remove the external dependency on the construction of Cluster instances.
60
+ */
61
+ export interface ClusterConfigData {
62
+ clusterServerUrl: string;
63
+ }
56
64
  /**
57
65
  * The complete set of cluster settings or preferences
58
66
  */
@@ -1,6 +1,6 @@
1
1
  import type { IComputedValue } from "mobx";
2
2
  import type { LensRendererExtension } from "../../extensions/lens-renderer-extension";
3
- export declare const routeInjectionToken: import("@ogre-tools/injectable").InjectionToken<Route<unknown>, void>;
3
+ export declare const frontEndRouteInjectionToken: import("@ogre-tools/injectable").InjectionToken<Route<unknown>, void>;
4
4
  export interface Route<TParameter = void> {
5
5
  path: string;
6
6
  clusterFrame: boolean;
@@ -1,4 +1,4 @@
1
- import type { Route } from "./route-injection-token";
1
+ import type { Route } from "./front-end-route-injection-token";
2
2
  declare type InferParametersFrom<TRoute> = TRoute extends Route<infer TParameters> ? TParameters : never;
3
3
  declare type RequiredKeys<T> = Exclude<{
4
4
  [K in keyof T]: T extends Record<K, T[K]> ? K : never;
@@ -1,4 +1,4 @@
1
- import type { Route } from "../../route-injection-token";
1
+ import type { Route } from "../../front-end-route-injection-token";
2
2
  export interface CatalogPathParameters {
3
3
  group?: string;
4
4
  kind?: string;
@@ -1,4 +1,4 @@
1
- import type { Route } from "../../../../route-injection-token";
1
+ import type { Route } from "../../../../front-end-route-injection-token";
2
2
  export interface CustomResourcesPathParameters {
3
3
  group?: string;
4
4
  name?: string;
@@ -2,5 +2,5 @@ declare const clusterViewRouteInjectable: import("@ogre-tools/injectable").Injec
2
2
  path: string;
3
3
  clusterFrame: boolean;
4
4
  isEnabled: import("mobx").IComputedValue<boolean>;
5
- }, import("../../route-injection-token").Route<unknown>, void>;
5
+ }, import("../../front-end-route-injection-token").Route<unknown>, void>;
6
6
  export default clusterViewRouteInjectable;
@@ -0,0 +1,3 @@
1
+ export declare type ReadFileSync = (filePath: string) => string;
2
+ declare const readFileSyncInjectable: import("@ogre-tools/injectable").Injectable<ReadFileSync, unknown, void>;
3
+ export default readFileSyncInjectable;
@@ -7,7 +7,13 @@ import { KubeObject } from "../kube-object";
7
7
  import type { DerivedKubeApiOptions, IgnoredKubeApiOptions } from "../kube-api";
8
8
  import { KubeApi } from "../kube-api";
9
9
  export declare class ClusterApi extends KubeApi<Cluster> {
10
+ /**
11
+ * @deprecated This field is legacy and never used.
12
+ */
10
13
  static kind: string;
14
+ /**
15
+ * @deprecated This field is legacy and never used.
16
+ */
11
17
  static namespaced: boolean;
12
18
  constructor(opts?: DerivedKubeApiOptions & IgnoredKubeApiOptions);
13
19
  }
@@ -68,5 +74,6 @@ export interface Cluster {
68
74
  export declare class Cluster extends KubeObject {
69
75
  static kind: string;
70
76
  static apiBase: string;
77
+ static namespaced: boolean;
71
78
  getStatus(): ClusterStatus;
72
79
  }
@@ -45,7 +45,7 @@ export interface IResourceMetrics<T extends MetricData> {
45
45
  networkTransmit: T;
46
46
  }
47
47
  export declare const metricsApi: {
48
- getMetrics<T = IMetricsQuery>(query: T, reqParams?: IMetricsReqParams): Promise<T extends object ? { [K in keyof T]: MetricData; } : MetricData>;
48
+ getMetrics<T = IMetricsQuery>(query: T, reqParams?: IMetricsReqParams): Promise<T extends object ? T extends infer T_1 ? { [K in keyof T_1]: MetricData; } : never : MetricData>;
49
49
  getMetricProviders(): Promise<MetricProviderInfo[]>;
50
50
  };
51
51
  export declare function normalizeMetrics(metrics: MetricData | undefined | null, frames?: number): MetricData;
@@ -59,7 +59,7 @@ export interface KubeObjectStoreOptions {
59
59
  }
60
60
  export declare type KubeApiDataFrom<K extends KubeObject, A> = A extends KubeApi<K, infer D> ? D extends KubeJsonApiDataFor<K> ? D : never : never;
61
61
  export declare abstract class KubeObjectStore<K extends KubeObject = KubeObject, A extends KubeApi<K, D> = KubeApi<K, KubeJsonApiDataFor<K>>, D extends KubeJsonApiDataFor<K> = KubeApiDataFrom<K, A>> extends ItemStore<K> {
62
- static readonly defaultContext: import("mobx").IObservableValue<ClusterContext>;
62
+ static readonly defaultContext: import("mobx").IObservableValue<ClusterContext | undefined>;
63
63
  readonly api: A;
64
64
  readonly limit: number | undefined;
65
65
  readonly bufferSize: number;
@@ -71,7 +71,7 @@ export declare abstract class KubeObjectStore<K extends KubeObject = KubeObject,
71
71
  cancel(): void;
72
72
  };
73
73
  constructor(api: A, opts?: KubeObjectStoreOptions);
74
- get context(): ClusterContext;
74
+ get context(): ClusterContext | undefined;
75
75
  get contextItems(): K[];
76
76
  getTotalCount(): number;
77
77
  get query(): KubeApiQueryParams;
@@ -23,7 +23,7 @@ export interface ConfigResult {
23
23
  export declare function loadConfigFromString(content: string): ConfigResult;
24
24
  export interface SplitConfigEntry {
25
25
  config: KubeConfig;
26
- error?: string;
26
+ validationResult: ValidateKubeConfigResult;
27
27
  }
28
28
  /**
29
29
  * Breaks kube config into several configs. Each context as it own KubeConfig object
@@ -35,10 +35,18 @@ export declare function splitConfig(kubeConfig: KubeConfig): SplitConfigEntry[];
35
35
  * @returns The yaml representation of the kubeconfig object
36
36
  */
37
37
  export declare function dumpConfigYaml(kubeConfig: PartialDeep<KubeConfig>): string;
38
+ export declare type ValidateKubeConfigResult = {
39
+ error: Error;
40
+ } | {
41
+ error?: undefined;
42
+ context: Context;
43
+ cluster: Cluster;
44
+ user: User;
45
+ };
38
46
  /**
39
47
  * Checks if `config` has valid `Context`, `User`, `Cluster`, and `exec` fields (if present when required)
40
48
  *
41
49
  * Note: This function returns an error instead of throwing it, returning `undefined` if the validation passes
42
50
  */
43
- export declare function validateKubeConfig(config: KubeConfig, contextName: string): Error | undefined;
51
+ export declare function validateKubeConfig(config: KubeConfig, contextName: string): ValidateKubeConfigResult;
44
52
  export {};
@@ -12,4 +12,4 @@ export interface URLParams<P extends object = {}, Q extends object = {}> {
12
12
  fragment?: string;
13
13
  }
14
14
  export declare function buildURL<P extends object = {}, Q extends object = {}>(path: string, { params, query, fragment }?: URLParams<P, Q>): string;
15
- export declare function buildURLPositional<P extends object = {}, Q extends object = {}>(path: string): (params?: P | undefined, query?: Q | undefined, fragment?: string | undefined) => string;
15
+ export declare function buildURLPositional<P extends object = {}, Q extends object = {}>(path: string): (params?: P, query?: Q, fragment?: string) => string;
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) OpenLens Authors. All rights reserved.
3
3
  * Licensed under MIT License. See LICENSE in root directory for more information.
4
4
  */
5
- import "abort-controller/polyfill";
5
+ import type { AbortSignal } from "abort-controller";
6
6
  /**
7
7
  * Creates a new promise that will be rejected when the signal rejects.
8
8
  *
9
9
  * Useful for `Promise.race()` applications.
10
10
  * @param signal The AbortController's signal to reject with
11
11
  */
12
- export declare function rejectPromiseBy(signal: AbortSignal): Promise<void>;
12
+ export declare function rejectPromiseBy(signal: AbortSignal): Promise<never>;
@@ -3,6 +3,9 @@
3
3
  * Licensed under MIT License. See LICENSE in root directory for more information.
4
4
  */
5
5
  /// <reference types="node" />
6
+ /// <reference types="node" />
7
+ /// <reference types="node" />
8
+ /// <reference types="node" />
6
9
  import type { ExecException, ExecFileException } from "child_process";
7
10
  import type { IncomingMessage } from "http";
8
11
  /**
@@ -96,6 +99,8 @@ export declare function bindPredicate<FnArgs extends any[], T>(fn: (arg1: unknow
96
99
  export declare function hasDefiniteField<Field extends keyof T, T>(field: Field): (val: T) => val is T & {
97
100
  [f in Field]-?: NonNullable<T[Field]>;
98
101
  };
102
+ export declare function isPromiseSettledRejected<T>(result: PromiseSettledResult<T>): result is PromiseRejectedResult;
103
+ export declare function isPromiseSettledFulfilled<T>(result: PromiseSettledResult<T>): result is PromiseFulfilledResult<T>;
99
104
  export declare function isErrnoException(error: unknown): error is NodeJS.ErrnoException;
100
105
  export declare function isExecException(error: unknown): error is ExecException;
101
106
  export declare function isExecFileException(error: unknown): error is ExecFileException;
@@ -1,2 +1,2 @@
1
- declare const baseBundeledBinariesDirectoryInjectable: import("@ogre-tools/injectable").Injectable<string, unknown, void>;
2
- export default baseBundeledBinariesDirectoryInjectable;
1
+ declare const baseBundledBinariesDirectoryInjectable: import("@ogre-tools/injectable").Injectable<string, unknown, void>;
2
+ export default baseBundledBinariesDirectoryInjectable;
@@ -0,0 +1,2 @@
1
+ declare const normalizedPlatformArchitectureInjectable: import("@ogre-tools/injectable").Injectable<"arm64" | "x64" | "ia32", unknown, void>;
2
+ export default normalizedPlatformArchitectureInjectable;
@@ -50,6 +50,7 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
50
50
  bundledKubectlVersion: string;
51
51
  bundledHelmVersion: string;
52
52
  sentryDsn: string;
53
+ contentSecurityPolicy: string;
53
54
  };
54
55
  engines: {
55
56
  node: string;
@@ -58,8 +59,10 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
58
59
  collectCoverage: boolean;
59
60
  verbose: boolean;
60
61
  transform: {
61
- "^.+\\.tsx?$": string;
62
+ "^.+\\.(t|j)sx?$": string[];
62
63
  };
64
+ testEnvironment: string;
65
+ resolver: string;
63
66
  moduleNameMapper: {
64
67
  "\\.(css|scss)$": string;
65
68
  "\\.(svg|png|jpg|eot|woff2?|ttf)$": string;
@@ -67,11 +70,7 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
67
70
  modulePathIgnorePatterns: string[];
68
71
  setupFiles: string[];
69
72
  setupFilesAfterEnv: string[];
70
- globals: {
71
- "ts-jest": {
72
- isolatedModules: boolean;
73
- };
74
- };
73
+ runtime: string;
75
74
  };
76
75
  build: {
77
76
  generateUpdatesFilesForAllChannels: boolean;
@@ -134,12 +133,14 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
134
133
  "@hapi/subtext": string;
135
134
  "@kubernetes/client-node": string;
136
135
  "@material-ui/styles": string;
137
- "@ogre-tools/injectable": string;
138
- "@ogre-tools/injectable-react": string;
139
136
  "@ogre-tools/fp": string;
137
+ "@ogre-tools/injectable": string;
140
138
  "@ogre-tools/injectable-extension-for-auto-registration": string;
139
+ "@ogre-tools/injectable-extension-for-mobx": string;
140
+ "@ogre-tools/injectable-react": string;
141
141
  "@sentry/electron": string;
142
142
  "@sentry/integrations": string;
143
+ "@side/jest-runtime": string;
143
144
  "@types/circular-dependency-plugin": string;
144
145
  "abort-controller": string;
145
146
  "auto-bind": string;
@@ -214,6 +215,8 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
214
215
  "@material-ui/lab": string;
215
216
  "@pmmmwh/react-refresh-webpack-plugin": string;
216
217
  "@sentry/types": string;
218
+ "@swc/core": string;
219
+ "@swc/jest": string;
217
220
  "@testing-library/dom": string;
218
221
  "@testing-library/jest-dom": string;
219
222
  "@testing-library/react": string;
@@ -230,6 +233,8 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
230
233
  "@types/fs-extra": string;
231
234
  "@types/glob-to-regexp": string;
232
235
  "@types/gunzip-maybe": string;
236
+ "@types/hapi__call": string;
237
+ "@types/hapi__subtext": string;
233
238
  "@types/html-webpack-plugin": string;
234
239
  "@types/http-proxy": string;
235
240
  "@types/jest": string;
@@ -302,6 +307,7 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
302
307
  "include-media": string;
303
308
  jest: string;
304
309
  "jest-canvas-mock": string;
310
+ "jest-environment-jsdom": string;
305
311
  "jest-fetch-mock": string;
306
312
  "jest-mock-extended": string;
307
313
  "make-plural": string;
@@ -328,7 +334,6 @@ declare const packageJsonInjectable: import("@ogre-tools/injectable").Injectable
328
334
  "style-loader": string;
329
335
  tailwindcss: string;
330
336
  "tar-stream": string;
331
- "ts-jest": string;
332
337
  "ts-loader": string;
333
338
  "ts-node": string;
334
339
  "type-fest": string;
@@ -81,3 +81,4 @@ export declare const kubernetesDocumentationWeblinkId = "kubernetes-documentatio
81
81
  export declare const appSemVer: SemVer;
82
82
  export declare const docsUrl: string;
83
83
  export declare const sentryDsn: string;
84
+ export declare const contentSecurityPolicy: string;
@@ -0,0 +1,7 @@
1
+ import type { LensExtension } from "../../lens-extension";
2
+ export interface Extension {
3
+ register: () => void;
4
+ deregister: () => void;
5
+ }
6
+ declare const extensionInjectable: import("@ogre-tools/injectable").Injectable<Extension, unknown, LensExtension<import("../../lens-extension-set-dependencies").LensExtensionDependencies>>;
7
+ export default extensionInjectable;
@@ -9,12 +9,12 @@ import type { InstalledExtension } from "../extension-discovery/extension-discov
9
9
  import type { LensExtension, LensExtensionConstructor, LensExtensionId } from "../lens-extension";
10
10
  import type { LensExtensionState } from "../extensions-store/extensions-store";
11
11
  import type { CreateExtensionInstance } from "./create-extension-instance.token";
12
+ import type { Extension } from "./extension/extension.injectable";
12
13
  interface Dependencies {
13
14
  updateExtensionsState: (extensionsState: Record<LensExtensionId, LensExtensionState>) => void;
14
15
  createExtensionInstance: CreateExtensionInstance;
15
- readonly extensionRegistrators: ((extension: LensExtension, extensionInstallationCount: number) => void)[];
16
- readonly extensionInstallationCounter: Map<string, number>;
17
16
  readonly extensionInstances: ObservableMap<LensExtensionId, LensExtension>;
17
+ getExtension: (instance: LensExtension) => Extension;
18
18
  }
19
19
  export interface ExtensionLoading {
20
20
  isBundled: boolean;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) OpenLens Authors. All rights reserved.
3
+ * Licensed under MIT License. See LICENSE in root directory for more information.
4
+ */
5
+ import type { Injectable } from "@ogre-tools/injectable";
6
+ import type { LensExtension } from "../lens-extension";
7
+ export declare const extensionRegistratorInjectionToken: import("@ogre-tools/injectable").InjectionToken<(extension: LensExtension) => Injectable<any, any, any>[], void>;
@@ -11,15 +11,16 @@ export interface LensExtensionState {
11
11
  enabled?: boolean;
12
12
  name: string;
13
13
  }
14
+ export interface IsEnabledExtensionDescriptor {
15
+ id: string;
16
+ isBundled: boolean;
17
+ }
14
18
  export declare class ExtensionsStore extends BaseStore<LensExtensionsStoreModel> {
15
19
  readonly displayName = "ExtensionsStore";
16
20
  constructor();
17
21
  get enabledExtensions(): string[];
18
22
  protected state: import("mobx").ObservableMap<string, LensExtensionState>;
19
- isEnabled({ id, isBundled }: {
20
- id: string;
21
- isBundled: boolean;
22
- }): boolean;
23
+ isEnabled({ id, isBundled }: IsEnabledExtensionDescriptor): boolean;
23
24
  mergeState: (extensionsState: Record<LensExtensionId, LensExtensionState> | [LensExtensionId, LensExtensionState][]) => void;
24
25
  protected fromStore({ extensions }: LensExtensionsStoreModel): void;
25
26
  toJSON(): LensExtensionsStoreModel;
@@ -5,7 +5,7 @@
5
5
  import type { IComputedValue } from "mobx";
6
6
  import type { CatalogCategoryRegistry } from "../common/catalog";
7
7
  import type { NavigateToRoute } from "../common/front-end-routing/navigate-to-route-injection-token";
8
- import type { Route } from "../common/front-end-routing/route-injection-token";
8
+ import type { Route } from "../common/front-end-routing/front-end-route-injection-token";
9
9
  import type { CatalogEntityRegistry as MainCatalogEntityRegistry } from "../main/catalog";
10
10
  import type { CatalogEntityRegistry as RendererCatalogEntityRegistry } from "../renderer/api/catalog/entity/registry";
11
11
  import type { GetExtensionPageParameters } from "../renderer/routes/get-extension-page-parameters.injectable";
@@ -26,5 +26,5 @@ export interface RegisteredEntitySetting extends EntitySettingRegistration {
26
26
  }
27
27
  export declare class EntitySettingRegistry extends BaseRegistry<EntitySettingRegistration, RegisteredEntitySetting> {
28
28
  getRegisteredItem(item: EntitySettingRegistration): RegisteredEntitySetting;
29
- getItemsForKind: (kind: string, apiVersion: string, source?: string | undefined) => RegisteredEntitySetting[];
29
+ getItemsForKind: (kind: string, apiVersion: string, source?: string) => RegisteredEntitySetting[];
30
30
  }
@@ -3,6 +3,7 @@
3
3
  * Licensed under MIT License. See LICENSE in root directory for more information.
4
4
  */
5
5
  /// <reference types="node" />
6
+ /// <reference types="node" />
6
7
  import type { ChildProcess } from "child_process";
7
8
  import type { Cluster } from "../../common/cluster/cluster";
8
9
  import type { SelfSignedCert } from "selfsigned";
@@ -1,7 +1,2 @@
1
- declare const applicationWindowInjectable: import("@ogre-tools/injectable").Injectable<{
2
- readonly visible: boolean;
3
- show: () => Promise<void>;
4
- close: () => void;
5
- send: (args: import("./lens-window-injection-token").SendToViewArgs) => void;
6
- }, import("./lens-window-injection-token").LensWindow, void>;
1
+ declare const applicationWindowInjectable: import("@ogre-tools/injectable").Injectable<import("./lens-window-injection-token").LensWindow, import("./lens-window-injection-token").LensWindow, void>;
7
2
  export default applicationWindowInjectable;
@@ -1,4 +1,4 @@
1
- import type { LensWindow } from "./create-lens-window.injectable";
1
+ import type { ElectronWindow } from "./create-lens-window.injectable";
2
2
  import type { RequireExactlyOne } from "type-fest";
3
3
  export declare type ElectronWindowTitleBarStyle = "hiddenInset" | "hidden" | "default" | "customButtonsOnHover";
4
4
  export interface FileSource {
@@ -24,7 +24,6 @@ export interface ElectronWindowConfiguration {
24
24
  onBlur?: () => void;
25
25
  onDomReady?: () => void;
26
26
  }
27
- export declare type CreateElectronWindow = () => Promise<LensWindow>;
28
- export declare type CreateElectronWindowFor = (config: ElectronWindowConfiguration) => CreateElectronWindow;
29
- declare const createElectronWindowFor: import("@ogre-tools/injectable").Injectable<CreateElectronWindowFor, unknown, void>;
30
- export default createElectronWindowFor;
27
+ export declare type CreateElectronWindow = (config: ElectronWindowConfiguration) => ElectronWindow;
28
+ declare const createElectronWindowInjectable: import("@ogre-tools/injectable").Injectable<CreateElectronWindow, unknown, void>;
29
+ export default createElectronWindowInjectable;
@@ -1,9 +1,11 @@
1
- import type { SendToViewArgs } from "./lens-window-injection-token";
2
- import type { ContentSource, ElectronWindowTitleBarStyle } from "./create-electron-window-for.injectable";
3
- export interface LensWindow {
1
+ import type { LensWindow, SendToViewArgs } from "./lens-window-injection-token";
2
+ import type { ContentSource, ElectronWindowTitleBarStyle } from "./create-electron-window.injectable";
3
+ export interface ElectronWindow {
4
4
  show: () => void;
5
5
  close: () => void;
6
6
  send: (args: SendToViewArgs) => void;
7
+ loadFile: (filePath: string) => Promise<void>;
8
+ loadUrl: (url: string) => Promise<void>;
7
9
  }
8
10
  export interface LensWindowConfiguration {
9
11
  id: string;
@@ -20,10 +22,5 @@ export interface LensWindowConfiguration {
20
22
  onBlur?: () => void;
21
23
  onDomReady?: () => void;
22
24
  }
23
- declare const createLensWindowInjectable: import("@ogre-tools/injectable").Injectable<(configuration: LensWindowConfiguration) => {
24
- readonly visible: boolean;
25
- show: () => Promise<void>;
26
- close: () => void;
27
- send: (args: SendToViewArgs) => void;
28
- }, unknown, void>;
25
+ declare const createLensWindowInjectable: import("@ogre-tools/injectable").Injectable<(configuration: LensWindowConfiguration) => LensWindow, unknown, void>;
29
26
  export default createLensWindowInjectable;
@@ -5,9 +5,12 @@ export interface SendToViewArgs {
5
5
  data?: unknown[];
6
6
  }
7
7
  export interface LensWindow {
8
- show: () => Promise<void>;
8
+ id: string;
9
+ start: () => Promise<void>;
9
10
  close: () => void;
11
+ show: () => void;
10
12
  send: (args: SendToViewArgs) => void;
11
- visible: boolean;
13
+ isVisible: boolean;
14
+ isStarting: boolean;
12
15
  }
13
16
  export declare const lensWindowInjectionToken: import("@ogre-tools/injectable").InjectionToken<LensWindow, void>;
@@ -0,0 +1,2 @@
1
+ declare const waitUntilBundledExtensionsAreLoadedInjectable: import("@ogre-tools/injectable").Injectable<() => Promise<void>, unknown, void>;
2
+ export default waitUntilBundledExtensionsAreLoadedInjectable;
@@ -1,2 +1,2 @@
1
- declare const navigateInjectable: import("@ogre-tools/injectable").Injectable<(url: string, frameId?: number | undefined) => Promise<void>, unknown, void>;
1
+ declare const navigateInjectable: import("@ogre-tools/injectable").Injectable<(url: string, frameId?: number) => Promise<void>, unknown, void>;
2
2
  export default navigateInjectable;
@@ -1,7 +1,2 @@
1
- declare const splashWindowInjectable: import("@ogre-tools/injectable").Injectable<{
2
- readonly visible: boolean;
3
- show: () => Promise<void>;
4
- close: () => void;
5
- send: (args: import("../application-window/lens-window-injection-token").SendToViewArgs) => void;
6
- }, import("../application-window/lens-window-injection-token").LensWindow, void>;
1
+ declare const splashWindowInjectable: import("@ogre-tools/injectable").Injectable<import("../application-window/lens-window-injection-token").LensWindow, import("../application-window/lens-window-injection-token").LensWindow, void>;
7
2
  export default splashWindowInjectable;
@@ -1,2 +1,2 @@
1
- declare const hostedClusterInjectable: import("@ogre-tools/injectable").Injectable<import("../cluster/cluster").Cluster | undefined, unknown, void>;
1
+ declare const hostedClusterInjectable: import("@ogre-tools/injectable").Injectable<import("../../common/cluster/cluster").Cluster | undefined, unknown, void>;
2
2
  export default hostedClusterInjectable;
@@ -1,3 +1,3 @@
1
1
  import type { DockTab, DockTabCreate } from "./store";
2
- declare const createDockTabInjectable: import("@ogre-tools/injectable").Injectable<(rawTabDesc: DockTabCreate, addNumber?: boolean | undefined) => DockTab, unknown, void>;
2
+ declare const createDockTabInjectable: import("@ogre-tools/injectable").Injectable<(rawTabDesc: DockTabCreate, addNumber?: boolean) => DockTab, unknown, void>;
3
3
  export default createDockTabInjectable;
@@ -5,7 +5,11 @@
5
5
  import React from "react";
6
6
  export interface DrawerTitleProps {
7
7
  className?: string;
8
- children: React.ReactNode;
8
+ children?: React.ReactNode;
9
+ /**
10
+ * @deprecated Prefer passing the value as `children`
11
+ */
12
+ title?: React.ReactNode;
9
13
  /**
10
14
  * Specifies how large this title is
11
15
  *
@@ -8,10 +8,9 @@ import type { DOMAttributes, InputHTMLAttributes, TextareaHTMLAttributes } from
8
8
  import React from "react";
9
9
  import type { TooltipProps } from "../tooltip";
10
10
  import * as Validators from "./input_validators";
11
- import type { InputValidator } from "./input_validators";
12
- declare const InputValidators: {
13
- inputValidator<IsAsync extends boolean = false>(validator: Validators.InputValidator<IsAsync>): Validators.InputValidator<IsAsync>;
14
- AsyncInputValidationError: typeof Validators.AsyncInputValidationError;
11
+ import type { InputValidator, InputValidation, InputValidationResult, SyncValidationMessage } from "./input_validators";
12
+ declare const asyncInputValidator: typeof Validators.asyncInputValidator, inputValidator: typeof Validators.inputValidator, isAsyncValidator: typeof Validators.isAsyncValidator, unionInputValidatorsAsync: typeof Validators.unionInputValidatorsAsync, InputValidators: {
13
+ unionInputValidators(baseValidator: Pick<Validators.InputValidator<false>, "message" | "condition">, ...validators: Validators.InputValidator<false>[]): Validators.InputValidator<false>;
15
14
  isRequired: Validators.InputValidator<false>;
16
15
  isEmail: Validators.InputValidator<false>;
17
16
  isNumber: Validators.InputValidator<false>;
@@ -30,8 +29,8 @@ declare const InputValidators: {
30
29
  systemName: Validators.InputValidator<false>;
31
30
  accountId: Validators.InputValidator<false>;
32
31
  };
33
- export { InputValidators };
34
- export type { InputValidator };
32
+ export { InputValidators, asyncInputValidator, inputValidator, isAsyncValidator, unionInputValidatorsAsync, };
33
+ export type { InputValidator, InputValidation, InputValidationResult, SyncValidationMessage, };
35
34
  declare type InputElement = HTMLInputElement | HTMLTextAreaElement;
36
35
  declare type InputElementProps = InputHTMLAttributes<HTMLInputElement> & TextareaHTMLAttributes<HTMLTextAreaElement> & DOMAttributes<InputElement>;
37
36
  export interface IconDataFnArg {
@@ -75,7 +74,7 @@ interface State {
75
74
  export declare class Input extends React.Component<InputProps, State> {
76
75
  static defaultProps: object;
77
76
  input: InputElement | null;
78
- validators: InputValidator<boolean>[];
77
+ validators: InputValidator[];
79
78
  state: State;
80
79
  constructor(props: InputProps);
81
80
  componentWillUnmount(): void;
@@ -3,29 +3,42 @@
3
3
  * Licensed under MIT License. See LICENSE in root directory for more information.
4
4
  */
5
5
  import type { InputProps } from "./input";
6
- import type { ReactNode } from "react";
7
- export declare class AsyncInputValidationError extends Error {
8
- }
9
- export declare type InputValidator<IsAsync extends boolean> = {
6
+ import type React from "react";
7
+ import type { SetRequired } from "type-fest";
8
+ export declare type InputValidationResult<IsAsync extends boolean> = IsAsync extends true ? Promise<void> : boolean;
9
+ export declare type InputValidation<IsAsync extends boolean> = (value: string, props?: InputProps) => InputValidationResult<IsAsync>;
10
+ export declare type SyncValidationMessage = React.ReactNode | ((value: string, props?: InputProps) => React.ReactNode);
11
+ export declare type InputValidator<IsAsync extends boolean = boolean> = {
10
12
  /**
11
13
  * Filters itself based on the input props
12
14
  */
13
15
  condition?: (props: InputProps) => any;
14
- } & (IsAsync extends false ? {
15
- validate: (value: string, props: InputProps) => boolean;
16
- message: ReactNode | ((value: string, props: InputProps) => ReactNode | string);
17
- debounce?: undefined;
18
- } : {
16
+ } & (IsAsync extends true ? {
19
17
  /**
20
- * If asyncronous then the rejection message is the error message
21
- *
22
- * This function MUST reject with an instance of {@link AsyncInputValidationError}
18
+ * The validation message maybe either specified from the `message` field (higher priority)
19
+ * or if that is not provided then the message will retrived from the rejected with value
23
20
  */
24
- validate: (value: string, props: InputProps) => Promise<void>;
25
- message?: undefined;
21
+ validate: InputValidation<true>;
22
+ message?: SyncValidationMessage;
26
23
  debounce: number;
24
+ } : {
25
+ validate: InputValidation<false>;
26
+ message: SyncValidationMessage;
27
+ debounce?: undefined;
27
28
  });
28
- export declare function inputValidator<IsAsync extends boolean = false>(validator: InputValidator<IsAsync>): InputValidator<IsAsync>;
29
+ export declare function isAsyncValidator(validator: InputValidator<boolean>): validator is InputValidator<true>;
30
+ export declare function asyncInputValidator(validator: InputValidator<true>): InputValidator<true>;
31
+ export declare function inputValidator(validator: InputValidator<false>): InputValidator<false>;
32
+ /**
33
+ * Create a new input validator from a list of syncronous input validators. Will match as valid if
34
+ * one of the input validators matches the input
35
+ */
36
+ export declare function unionInputValidators(baseValidator: Pick<InputValidator<false>, "condition" | "message">, ...validators: InputValidator<false>[]): InputValidator<false>;
37
+ /**
38
+ * Create a new input validator from a list of syncronous or async input validators. Will match as
39
+ * valid if one of the input validators matches the input
40
+ */
41
+ export declare function unionInputValidatorsAsync(baseValidator: SetRequired<Pick<InputValidator<boolean>, "condition" | "message">, "message">, ...validators: InputValidator<boolean>[]): InputValidator<true>;
29
42
  export declare const isRequired: InputValidator<false>;
30
43
  export declare const isEmail: InputValidator<false>;
31
44
  export declare const isNumber: InputValidator<false>;
@@ -1,6 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import type { IComputedValue } from "mobx";
3
- import type { LensRendererExtension } from "../../../extensions/lens-renderer-extension";
4
3
  export interface SidebarItemRegistration {
5
4
  id: string;
6
5
  parentId: string | null;
@@ -10,7 +9,6 @@ export interface SidebarItemRegistration {
10
9
  isActive?: IComputedValue<boolean>;
11
10
  isVisible?: IComputedValue<boolean>;
12
11
  orderNumber: number;
13
- extension?: LensRendererExtension;
14
12
  }
15
13
  export declare const sidebarItemsInjectionToken: import("@ogre-tools/injectable").InjectionToken<IComputedValue<SidebarItemRegistration[]>, void>;
16
14
  export interface HierarchicalSidebarItem {
@@ -7,8 +7,8 @@ import React from "react";
7
7
  import type { Notification, NotificationMessage } from "./notifications.store";
8
8
  export declare const Notifications: React.FC<{}> & {
9
9
  ok: (message: NotificationMessage) => () => void;
10
- checkedError: (message: unknown, fallback: string, customOpts?: Partial<Omit<Notification, "message">> | undefined) => () => void;
11
- error: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">> | undefined) => () => void;
12
- shortInfo: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">> | undefined) => () => void;
13
- info: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">> | undefined) => () => void;
10
+ checkedError: (message: unknown, fallback: string, customOpts?: Partial<Omit<Notification, "message">>) => () => void;
11
+ error: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">>) => () => void;
12
+ shortInfo: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">>) => () => void;
13
+ info: (message: NotificationMessage, customOpts?: Partial<Omit<Notification, "message">>) => () => void;
14
14
  };
@@ -64,6 +64,8 @@ export interface WizardStepProps<D> extends WizardCommonProps<D> {
64
64
  skip?: boolean;
65
65
  scrollable?: boolean;
66
66
  children?: React.ReactNode | React.ReactNode[];
67
+ testIdForNext?: string;
68
+ testIdForPrev?: string;
67
69
  }
68
70
  interface WizardStepState {
69
71
  waiting?: boolean;
@@ -1,3 +1,3 @@
1
- import type { Route } from "../../common/front-end-routing/route-injection-token";
1
+ import type { Route } from "../../common/front-end-routing/front-end-route-injection-token";
2
2
  declare const routePathParametersInjectable: import("@ogre-tools/injectable").Injectable<import("mobx").IComputedValue<Record<string, string>>, unknown, Route<unknown>>;
3
3
  export default routePathParametersInjectable;
package/package.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "name": "@k8slens/extensions",
3
3
  "productName": "OpenLens extensions",
4
4
  "description": "OpenLens - Open Source Kubernetes IDE: extensions",
5
- "version": "5.6.0-git.db65a89ee0.0",
6
- "copyright": "© 2021 OpenLens Authors",
5
+ "version": "5.6.0-git.de43df1cca.0",
6
+ "copyright": "© 2022 OpenLens Authors",
7
7
  "license": "MIT",
8
8
  "main": "dist/src/extensions/extension-api.js",
9
9
  "types": "dist/src/extensions/extension-api.d.ts",
@@ -1,2 +0,0 @@
1
- declare const allowedResourcesInjectable: import("@ogre-tools/injectable").Injectable<import("mobx").IComputedValue<Set<string>>, unknown, void>;
2
- export default allowedResourcesInjectable;
@@ -1,2 +0,0 @@
1
- declare const bundledBinariesNormalizedArchInjectable: import("@ogre-tools/injectable").Injectable<"arm64" | "x64" | "ia32", unknown, void>;
2
- export default bundledBinariesNormalizedArchInjectable;