@k8slens/extensions 5.3.0-git.7ba359be03.0 → 5.3.0-git.7c5a0a9a6d.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 (206) hide show
  1. package/__mocks__/electron.ts +2 -2
  2. package/dist/src/common/__tests__/system-ca.test.d.ts +1 -0
  3. package/dist/src/common/base-store.d.ts +1 -0
  4. package/dist/src/common/cluster-store.d.ts +2 -3
  5. package/dist/src/common/cluster-types.d.ts +7 -1
  6. package/dist/src/common/hotbar-store.d.ts +1 -0
  7. package/dist/src/common/k8s-api/endpoints/cluster-role-binding.api.d.ts +1 -1
  8. package/dist/src/common/k8s-api/endpoints/cluster-role.api.d.ts +1 -1
  9. package/dist/src/common/k8s-api/endpoints/cluster.api.d.ts +1 -1
  10. package/dist/src/common/k8s-api/endpoints/configmap.api.d.ts +1 -1
  11. package/dist/src/common/k8s-api/endpoints/crd.api.d.ts +1 -1
  12. package/dist/src/common/k8s-api/endpoints/cron-job.api.d.ts +1 -1
  13. package/dist/src/common/k8s-api/endpoints/daemon-set.api.d.ts +1 -1
  14. package/dist/src/common/k8s-api/endpoints/deployment.api.d.ts +1 -1
  15. package/dist/src/common/k8s-api/endpoints/endpoint.api.d.ts +1 -1
  16. package/dist/src/common/k8s-api/endpoints/events.api.d.ts +1 -1
  17. package/dist/src/common/k8s-api/endpoints/hpa.api.d.ts +1 -1
  18. package/dist/src/common/k8s-api/endpoints/ingress.api.d.ts +11 -8
  19. package/dist/src/common/k8s-api/endpoints/job.api.d.ts +1 -2
  20. package/dist/src/common/k8s-api/endpoints/limit-range.api.d.ts +1 -1
  21. package/dist/src/common/k8s-api/endpoints/namespaces.api.d.ts +1 -1
  22. package/dist/src/common/k8s-api/endpoints/network-policy.api.d.ts +1 -1
  23. package/dist/src/common/k8s-api/endpoints/nodes.api.d.ts +1 -1
  24. package/dist/src/common/k8s-api/endpoints/persistent-volume-claims.api.d.ts +1 -1
  25. package/dist/src/common/k8s-api/endpoints/persistent-volume.api.d.ts +1 -1
  26. package/dist/src/common/k8s-api/endpoints/pod-metrics.api.d.ts +1 -1
  27. package/dist/src/common/k8s-api/endpoints/poddisruptionbudget.api.d.ts +1 -1
  28. package/dist/src/common/k8s-api/endpoints/pods.api.d.ts +29 -33
  29. package/dist/src/common/k8s-api/endpoints/podsecuritypolicy.api.d.ts +1 -1
  30. package/dist/src/common/k8s-api/endpoints/replica-set.api.d.ts +1 -1
  31. package/dist/src/common/k8s-api/endpoints/resource-quota.api.d.ts +1 -1
  32. package/dist/src/common/k8s-api/endpoints/role-binding.api.d.ts +1 -1
  33. package/dist/src/common/k8s-api/endpoints/role.api.d.ts +1 -1
  34. package/dist/src/common/k8s-api/endpoints/secret.api.d.ts +1 -1
  35. package/dist/src/common/k8s-api/endpoints/selfsubjectrulesreviews.api.d.ts +1 -1
  36. package/dist/src/common/k8s-api/endpoints/service-accounts.api.d.ts +1 -1
  37. package/dist/src/common/k8s-api/endpoints/service.api.d.ts +1 -1
  38. package/dist/src/common/k8s-api/endpoints/stateful-set.api.d.ts +1 -1
  39. package/dist/src/common/k8s-api/endpoints/storage-class.api.d.ts +1 -1
  40. package/dist/src/common/k8s-api/index.d.ts +1 -1
  41. package/dist/src/common/k8s-api/kube-api.d.ts +12 -3
  42. package/dist/src/common/k8s-api/kube-json-api.d.ts +2 -0
  43. package/dist/src/common/k8s-api/kube-object.d.ts +9 -1
  44. package/dist/src/common/k8s-api/kube-object.store.d.ts +25 -7
  45. package/dist/src/common/k8s-api/kube-watch-api.d.ts +29 -8
  46. package/dist/src/common/system-ca.d.ts +20 -1
  47. package/dist/src/common/user-store/preferences-helpers.d.ts +2 -6
  48. package/dist/src/common/user-store/user-store.d.ts +2 -6
  49. package/dist/src/common/utils/base64.d.ts +12 -4
  50. package/dist/src/common/utils/index.d.ts +2 -2
  51. package/dist/src/common/utils/paths.d.ts +1 -0
  52. package/dist/src/{main → common/utils}/promise-exec.d.ts +0 -0
  53. package/dist/src/common/weblink-store.d.ts +1 -0
  54. package/dist/src/extensions/0.extension-api.js +15 -0
  55. package/dist/src/extensions/1.extension-api.js +15 -0
  56. package/dist/src/extensions/10.extension-api.js +15 -0
  57. package/dist/src/extensions/11.extension-api.js +15 -0
  58. package/dist/src/extensions/12.extension-api.js +15 -0
  59. package/dist/src/extensions/13.extension-api.js +15 -0
  60. package/dist/src/extensions/14.extension-api.js +15 -0
  61. package/dist/src/extensions/15.extension-api.js +15 -0
  62. package/dist/src/extensions/16.extension-api.js +15 -0
  63. package/dist/src/extensions/17.extension-api.js +15 -0
  64. package/dist/src/extensions/18.extension-api.js +15 -0
  65. package/dist/src/extensions/19.extension-api.js +15 -0
  66. package/dist/src/extensions/2.extension-api.js +543 -0
  67. package/dist/src/extensions/20.extension-api.js +15 -0
  68. package/dist/src/extensions/21.extension-api.js +15 -0
  69. package/dist/src/extensions/22.extension-api.js +15 -0
  70. package/dist/src/extensions/23.extension-api.js +15 -0
  71. package/dist/src/extensions/24.extension-api.js +15 -0
  72. package/dist/src/extensions/25.extension-api.js +15 -0
  73. package/dist/src/extensions/26.extension-api.js +15 -0
  74. package/dist/src/extensions/27.extension-api.js +15 -0
  75. package/dist/src/extensions/28.extension-api.js +15 -0
  76. package/dist/src/extensions/29.extension-api.js +15 -0
  77. package/dist/src/extensions/3.extension-api.js +423 -0
  78. package/dist/src/extensions/30.extension-api.js +15 -0
  79. package/dist/src/extensions/31.extension-api.js +15 -0
  80. package/dist/src/extensions/32.extension-api.js +15 -0
  81. package/dist/src/extensions/33.extension-api.js +15 -0
  82. package/dist/src/extensions/34.extension-api.js +15 -0
  83. package/dist/src/extensions/35.extension-api.js +15 -0
  84. package/dist/src/extensions/36.extension-api.js +15 -0
  85. package/dist/src/extensions/37.extension-api.js +15 -0
  86. package/dist/src/extensions/38.extension-api.js +15 -0
  87. package/dist/src/extensions/39.extension-api.js +15 -0
  88. package/dist/src/extensions/4.extension-api.js +363 -0
  89. package/dist/src/extensions/40.extension-api.js +15 -0
  90. package/dist/src/extensions/41.extension-api.js +15 -0
  91. package/dist/src/extensions/42.extension-api.js +15 -0
  92. package/dist/src/extensions/43.extension-api.js +15 -0
  93. package/dist/src/extensions/44.extension-api.js +15 -0
  94. package/dist/src/extensions/45.extension-api.js +15 -0
  95. package/dist/src/extensions/46.extension-api.js +15 -0
  96. package/dist/src/extensions/47.extension-api.js +15 -0
  97. package/dist/src/extensions/48.extension-api.js +15 -0
  98. package/dist/src/extensions/49.extension-api.js +15 -0
  99. package/dist/src/extensions/5.extension-api.js +51 -0
  100. package/dist/src/extensions/50.extension-api.js +15 -0
  101. package/dist/src/extensions/51.extension-api.js +15 -0
  102. package/dist/src/extensions/52.extension-api.js +15 -0
  103. package/dist/src/extensions/53.extension-api.js +15 -0
  104. package/dist/src/extensions/54.extension-api.js +15 -0
  105. package/dist/src/extensions/55.extension-api.js +15 -0
  106. package/dist/src/extensions/56.extension-api.js +15 -0
  107. package/dist/src/extensions/57.extension-api.js +15 -0
  108. package/dist/src/extensions/58.extension-api.js +15 -0
  109. package/dist/src/extensions/59.extension-api.js +15 -0
  110. package/dist/src/extensions/6.extension-api.js +27 -0
  111. package/dist/src/extensions/60.extension-api.js +15 -0
  112. package/dist/src/extensions/61.extension-api.js +15 -0
  113. package/dist/src/extensions/62.extension-api.js +15 -0
  114. package/dist/src/extensions/63.extension-api.js +15 -0
  115. package/dist/src/extensions/64.extension-api.js +15 -0
  116. package/dist/src/extensions/65.extension-api.js +15 -0
  117. package/dist/src/extensions/66.extension-api.js +15 -0
  118. package/dist/src/extensions/67.extension-api.js +15 -0
  119. package/dist/src/extensions/68.extension-api.js +15 -0
  120. package/dist/src/extensions/69.extension-api.js +15 -0
  121. package/dist/src/extensions/7.extension-api.js +15 -0
  122. package/dist/src/extensions/70.extension-api.js +15 -0
  123. package/dist/src/extensions/71.extension-api.js +15 -0
  124. package/dist/src/extensions/72.extension-api.js +15 -0
  125. package/dist/src/extensions/73.extension-api.js +15 -0
  126. package/dist/src/extensions/74.extension-api.js +15 -0
  127. package/dist/src/extensions/75.extension-api.js +15 -0
  128. package/dist/src/extensions/76.extension-api.js +15 -0
  129. package/dist/src/extensions/77.extension-api.js +15 -0
  130. package/dist/src/extensions/78.extension-api.js +15 -0
  131. package/dist/src/extensions/79.extension-api.js +15 -0
  132. package/dist/src/extensions/8.extension-api.js +15 -0
  133. package/dist/src/extensions/9.extension-api.js +15 -0
  134. package/dist/src/extensions/extension-api.js +5853 -1673
  135. package/dist/src/extensions/extension-store.d.ts +1 -0
  136. package/dist/src/extensions/extensions-store.d.ts +1 -0
  137. package/dist/src/extensions/main-api/k8s-api.d.ts +1 -1
  138. package/dist/src/extensions/registries/workloads-overview-detail-registry.d.ts +6 -3
  139. package/dist/src/extensions/renderer-api/k8s-api.d.ts +1 -1
  140. package/dist/src/main/catalog/catalog-entity-registry.d.ts +2 -2
  141. package/dist/src/main/cluster-manager.d.ts +2 -0
  142. package/dist/src/main/cluster.d.ts +5 -10
  143. package/dist/src/main/context-handler.d.ts +0 -1
  144. package/dist/src/main/extension-filesystem.d.ts +1 -0
  145. package/dist/src/main/index.d.ts +0 -1
  146. package/dist/src/main/kube-auth-proxy.d.ts +1 -8
  147. package/dist/src/main/kubectl.d.ts +1 -1
  148. package/dist/src/main/lens-proxy.d.ts +1 -1
  149. package/dist/src/main/proxy-functions/kube-api-request.d.ts +1 -1
  150. package/dist/src/main/proxy-functions/shell-api-request.d.ts +14 -0
  151. package/dist/src/main/proxy-functions/types.d.ts +2 -0
  152. package/dist/src/main/shell-session/node-shell-session.d.ts +4 -4
  153. package/dist/src/main/shell-session/shell-session.d.ts +95 -8
  154. package/dist/src/main/utils/shell-env.d.ts +1 -3
  155. package/dist/src/migrations/user-store/index.d.ts +1 -1
  156. package/dist/src/preload.d.ts +1 -1
  157. package/dist/src/renderer/api/terminal-api.d.ts +33 -20
  158. package/dist/src/renderer/api/websocket-api.d.ts +55 -32
  159. package/dist/src/renderer/bootstrap.d.ts +1 -1
  160. package/dist/src/renderer/{components/app.d.ts → cluster-frame.d.ts} +6 -4
  161. package/dist/src/renderer/components/+add-cluster/add-cluster.d.ts +0 -1
  162. package/dist/src/renderer/components/+apps-helm-charts/helm-chart-details.d.ts +3 -3
  163. package/dist/src/renderer/components/+catalog/catalog.d.ts +0 -1
  164. package/dist/src/{common/utils/makeCss.d.ts → renderer/components/+user-management/+cluster-role-bindings/__tests__/dialog.test.d.ts} +1 -9
  165. package/dist/src/renderer/components/+user-management/+cluster-role-bindings/dialog.d.ts +2 -3
  166. package/dist/src/renderer/components/+user-management/{select-options.d.ts → +role-bindings/__tests__/dialog.test.d.ts} +1 -7
  167. package/dist/src/renderer/components/+user-management/+role-bindings/dialog.d.ts +2 -3
  168. package/dist/src/renderer/components/+workloads-daemonsets/daemonsets.d.ts +0 -1
  169. package/dist/src/renderer/components/+workloads-overview/overview.d.ts +3 -0
  170. package/dist/src/renderer/components/+workloads-pods/pod-details-affinities.d.ts +1 -2
  171. package/dist/src/renderer/components/badge/badge.d.ts +1 -0
  172. package/dist/src/renderer/components/cluster-manager/cluster-status.d.ts +6 -7
  173. package/dist/src/renderer/components/cluster-manager/lens-views.d.ts +12 -8
  174. package/dist/src/renderer/components/cluster-settings/components/__tests__/cluster-local-terminal-settings.test.d.ts +21 -0
  175. package/dist/src/renderer/components/cluster-settings/components/{cluster-home-dir-setting.d.ts → cluster-local-terminal-settings.d.ts} +1 -12
  176. package/dist/src/renderer/components/cluster-settings/components/index.d.ts +1 -1
  177. package/dist/src/renderer/components/dialog/dialog.d.ts +1 -0
  178. package/dist/src/renderer/components/dock/create-resource.d.ts +2 -2
  179. package/dist/src/renderer/components/dock/dock.store.d.ts +20 -2
  180. package/dist/src/renderer/components/dock/edit-resource.d.ts +3 -3
  181. package/dist/src/renderer/components/dock/editor-panel.d.ts +11 -17
  182. package/dist/src/renderer/components/dock/install-chart.d.ts +6 -5
  183. package/dist/src/renderer/components/dock/terminal-window.d.ts +2 -3
  184. package/dist/src/renderer/components/dock/terminal.d.ts +7 -11
  185. package/dist/src/renderer/components/dock/upgrade-chart.d.ts +2 -1
  186. package/dist/src/renderer/components/drawer/drawer.d.ts +1 -0
  187. package/dist/src/renderer/components/item-object-list/item-list-layout.d.ts +6 -0
  188. package/dist/src/renderer/components/kube-object-list-layout/kube-object-list-layout.d.ts +4 -0
  189. package/dist/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.d.ts +0 -1
  190. package/dist/src/renderer/components/layout/__tests__/sidebar-cluster.test.d.ts +21 -0
  191. package/dist/src/renderer/components/layout/sidebar-cluster.d.ts +24 -0
  192. package/dist/src/renderer/components/layout/sidebar.d.ts +2 -5
  193. package/dist/src/renderer/components/list/list.d.ts +1 -1
  194. package/dist/src/renderer/components/monaco-editor/index.d.ts +23 -0
  195. package/dist/src/renderer/components/monaco-editor/monaco-editor.d.ts +93 -0
  196. package/dist/src/renderer/components/monaco-editor/monaco-themes.d.ts +29 -0
  197. package/dist/src/renderer/components/monaco-editor/monaco-validators.d.ts +9 -0
  198. package/dist/src/renderer/components/switch/switcher.d.ts +1 -1
  199. package/dist/src/renderer/components/table/table-cell.d.ts +1 -0
  200. package/dist/src/renderer/initializers/kube-object-detail-registry.d.ts +1 -1
  201. package/dist/src/renderer/port-forward/index.d.ts +1 -0
  202. package/dist/src/renderer/port-forward/port-forward-notify.d.ts +21 -0
  203. package/dist/src/renderer/{lens-app.d.ts → root-frame.d.ts} +4 -2
  204. package/dist/src/renderer/theme.store.d.ts +4 -15
  205. package/package.json +1 -1
  206. package/dist/src/renderer/components/dock/monaco-model-manager.d.ts +0 -42
@@ -21,6 +21,7 @@
21
21
  import { BaseStore } from "../common/base-store";
22
22
  import type { LensExtension } from "./lens-extension";
23
23
  export declare abstract class ExtensionStore<T> extends BaseStore<T> {
24
+ readonly displayName = "ExtensionStore<T>";
24
25
  protected extension: LensExtension;
25
26
  loadExtension(extension: LensExtension): void;
26
27
  load(): void;
@@ -28,6 +28,7 @@ export interface LensExtensionState {
28
28
  name: string;
29
29
  }
30
30
  export declare class ExtensionsStore extends BaseStore<LensExtensionsStoreModel> {
31
+ readonly displayName = "ExtensionsStore";
31
32
  constructor();
32
33
  get enabledExtensions(): string[];
33
34
  protected state: import("mobx").ObservableMap<string, LensExtensionState>;
@@ -22,7 +22,7 @@ export { isAllowedResource } from "../../common/utils/allowed-resource";
22
22
  export { ResourceStack } from "../../common/k8s/resource-stack";
23
23
  export { apiManager } from "../../common/k8s-api/api-manager";
24
24
  export { KubeApi, forCluster, forRemoteCluster } from "../../common/k8s-api/kube-api";
25
- export { KubeObject } from "../../common/k8s-api/kube-object";
25
+ export { KubeObject, KubeStatus } from "../../common/k8s-api/kube-object";
26
26
  export { KubeObjectStore } from "../../common/k8s-api/kube-object.store";
27
27
  export { Pod, podsApi, PodsApi } from "../../common/k8s-api/endpoints/pods.api";
28
28
  export { Node, nodesApi, NodesApi } from "../../common/k8s-api/endpoints/nodes.api";
@@ -21,12 +21,15 @@
21
21
  import type React from "react";
22
22
  import { BaseRegistry } from "./base-registry";
23
23
  export interface WorkloadsOverviewDetailComponents {
24
- Details: React.ComponentType<any>;
24
+ Details: React.ComponentType<{}>;
25
25
  }
26
26
  export interface WorkloadsOverviewDetailRegistration {
27
27
  components: WorkloadsOverviewDetailComponents;
28
28
  priority?: number;
29
29
  }
30
- export declare class WorkloadsOverviewDetailRegistry extends BaseRegistry<WorkloadsOverviewDetailRegistration> {
31
- getItems(): WorkloadsOverviewDetailRegistration[];
30
+ declare type RegisteredWorkloadsOverviewDetail = Required<WorkloadsOverviewDetailRegistration>;
31
+ export declare class WorkloadsOverviewDetailRegistry extends BaseRegistry<WorkloadsOverviewDetailRegistration, RegisteredWorkloadsOverviewDetail> {
32
+ getItems(): Required<WorkloadsOverviewDetailRegistration>[];
33
+ protected getRegisteredItem(item: WorkloadsOverviewDetailRegistration): RegisteredWorkloadsOverviewDetail;
32
34
  }
35
+ export {};
@@ -23,7 +23,7 @@ export { ResourceStack } from "../../common/k8s/resource-stack";
23
23
  export { apiManager } from "../../common/k8s-api/api-manager";
24
24
  export { KubeObjectStore } from "../../common/k8s-api/kube-object.store";
25
25
  export { KubeApi, forCluster, forRemoteCluster } from "../../common/k8s-api/kube-api";
26
- export { KubeObject } from "../../common/k8s-api/kube-object";
26
+ export { KubeObject, KubeStatus } from "../../common/k8s-api/kube-object";
27
27
  export { Pod, podsApi, PodsApi } from "../../common/k8s-api/endpoints";
28
28
  export { Node, nodesApi, NodesApi } from "../../common/k8s-api/endpoints";
29
29
  export { Deployment, deploymentApi, DeploymentApi } from "../../common/k8s-api/endpoints";
@@ -19,7 +19,7 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import { IComputedValue, IObservableArray } from "mobx";
22
- import { CatalogCategoryRegistry, CatalogEntity, CatalogEntityKindData } from "../../common/catalog";
22
+ import { CatalogCategoryRegistry, CatalogEntity, CatalogEntityConstructor, CatalogEntityKindData } from "../../common/catalog";
23
23
  export declare class CatalogEntityRegistry {
24
24
  private categoryRegistry;
25
25
  protected sources: import("mobx").ObservableMap<string, IComputedValue<CatalogEntity<import("../../common/catalog").CatalogEntityMetadata, import("../../common/catalog").CatalogEntityStatus, import("../../common/catalog").CatalogEntitySpec>[]>>;
@@ -30,6 +30,6 @@ export declare class CatalogEntityRegistry {
30
30
  get items(): CatalogEntity[];
31
31
  getById<T extends CatalogEntity>(id: string): T | undefined;
32
32
  getItemsForApiKind<T extends CatalogEntity>(apiVersion: string, kind: string): T[];
33
- getItemsByEntityClass<T extends CatalogEntity>({ apiVersion, kind }: CatalogEntityKindData): T[];
33
+ getItemsByEntityClass<T extends CatalogEntity>({ apiVersion, kind }: CatalogEntityKindData & CatalogEntityConstructor<T>): T[];
34
34
  }
35
35
  export declare const catalogEntityRegistry: CatalogEntityRegistry;
@@ -24,9 +24,11 @@ import type http from "http";
24
24
  import { Cluster } from "./cluster";
25
25
  import { Singleton } from "../common/utils";
26
26
  import { KubernetesCluster } from "../common/catalog-entities/kubernetes-cluster";
27
+ import type { ClusterId } from "../common/cluster-types";
27
28
  export declare class ClusterManager extends Singleton {
28
29
  private store;
29
30
  deleting: import("mobx").ObservableSet<string>;
31
+ visibleCluster: ClusterId | undefined;
30
32
  constructor();
31
33
  init: () => void;
32
34
  protected updateCatalog(clusters: Cluster[]): void;
@@ -103,12 +103,6 @@ export declare class Cluster implements ClusterModel, ClusterState {
103
103
  * @observable
104
104
  */
105
105
  disconnected: boolean;
106
- /**
107
- * Connection failure reason
108
- *
109
- * @observable
110
- */
111
- failureReason: string;
112
106
  /**
113
107
  * Does user have admin like access
114
108
  *
@@ -243,10 +237,6 @@ export declare class Cluster implements ClusterModel, ClusterState {
243
237
  * @internal
244
238
  */
245
239
  refreshConnectionStatus(): Promise<void>;
246
- /**
247
- * @internal
248
- */
249
- refreshAllowedResources(): Promise<void>;
250
240
  getKubeconfig(): Promise<KubeConfig>;
251
241
  /**
252
242
  * @internal
@@ -293,6 +283,11 @@ export declare class Cluster implements ClusterModel, ClusterState {
293
283
  accessible: boolean;
294
284
  disconnected: boolean;
295
285
  };
286
+ /**
287
+ * broadcast an authentication update concerning this cluster
288
+ * @internal
289
+ */
290
+ broadcastConnectUpdate(message: string, isError?: boolean): void;
296
291
  protected getAllowedNamespaces(): Promise<string[]>;
297
292
  protected getAllowedResources(): Promise<KubeResource[]>;
298
293
  isAllowedResource(kind: string): boolean;
@@ -44,5 +44,4 @@ export declare class ContextHandler {
44
44
  protected newApiTarget(timeout: number): Promise<httpProxy.ServerOptions>;
45
45
  ensureServer(): Promise<void>;
46
46
  stopServer(): void;
47
- get proxyLastError(): string;
48
47
  }
@@ -23,6 +23,7 @@ interface FSProvisionModel {
23
23
  extensions: Record<string, string>;
24
24
  }
25
25
  export declare class FilesystemProvisionerStore extends BaseStore<FSProvisionModel> {
26
+ readonly displayName = "FilesystemProvisionerStore";
26
27
  registeredExtensions: import("mobx").ObservableMap<string, string>;
27
28
  constructor();
28
29
  /**
@@ -18,7 +18,6 @@
18
18
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
- import "../common/system-ca";
22
21
  import * as Mobx from "mobx";
23
22
  import * as LensExtensionsCommonApi from "../extensions/common-api";
24
23
  import * as LensExtensionsMainApi from "../extensions/main-api";
@@ -22,15 +22,10 @@
22
22
  import { ChildProcess } from "child_process";
23
23
  import type { Cluster } from "./cluster";
24
24
  import { Kubectl } from "./kubectl";
25
- export interface KubeAuthProxyLog {
26
- data: string;
27
- error?: boolean;
28
- }
29
25
  export declare class KubeAuthProxy {
30
- lastError: string;
31
26
  readonly apiPrefix: string;
32
27
  get port(): number;
33
- protected _port: number;
28
+ protected _port?: number;
34
29
  protected cluster: Cluster;
35
30
  protected env: NodeJS.ProcessEnv;
36
31
  protected proxyProcess: ChildProcess;
@@ -42,7 +37,5 @@ export declare class KubeAuthProxy {
42
37
  cancel(): void;
43
38
  };
44
39
  run(): Promise<void>;
45
- protected parseError(data: string): string;
46
- protected sendIpcLogMessage(res: KubeAuthProxyLog): void;
47
40
  exit(): void;
48
41
  }
@@ -41,5 +41,5 @@ export declare class Kubectl {
41
41
  ensureKubectl(): Promise<boolean>;
42
42
  downloadKubectl(): Promise<void>;
43
43
  protected writeInitScripts(): Promise<void>;
44
- protected getDownloadMirror(): import("../common/user-store/preferences-helpers").DownloadMirror;
44
+ protected getDownloadMirror(): string;
45
45
  }
@@ -42,7 +42,7 @@ export declare class LensProxy extends Singleton {
42
42
  protected proxy: httpProxy;
43
43
  protected getClusterForRequest: GetClusterForRequest;
44
44
  port: number;
45
- constructor(router: Router, functions: LensProxyFunctions);
45
+ constructor(router: Router, { shellApiRequest, kubeApiRequest, getClusterForRequest }: LensProxyFunctions);
46
46
  /**
47
47
  * Starts the lens proxy.
48
48
  * @resolves After the server is listening
@@ -19,4 +19,4 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import type { ProxyApiRequestArgs } from "./types";
22
- export declare function kubeApiRequest({ req, socket, head }: ProxyApiRequestArgs): Promise<void>;
22
+ export declare function kubeApiRequest({ req, socket, head, cluster }: ProxyApiRequestArgs): Promise<void>;
@@ -19,4 +19,18 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import type { ProxyApiRequestArgs } from "./types";
22
+ import { Singleton } from "../../common/utils";
23
+ import type { ClusterId } from "../../common/cluster-types";
24
+ export declare class ShellRequestAuthenticator extends Singleton {
25
+ private tokens;
26
+ init(): void;
27
+ /**
28
+ * Authenticates a single use token for creating a new shell
29
+ * @param clusterId The `ClusterId` for the shell
30
+ * @param tabId The ID for the shell
31
+ * @param token The value that is being presented as a one time authentication token
32
+ * @returns `true` if `token` was valid, false otherwise
33
+ */
34
+ authenticate(clusterId: ClusterId, tabId: string, token: string): boolean;
35
+ }
22
36
  export declare function shellApiRequest({ req, socket, head }: ProxyApiRequestArgs): void;
@@ -21,8 +21,10 @@
21
21
  /// <reference types="node" />
22
22
  import type http from "http";
23
23
  import type net from "net";
24
+ import type { Cluster } from "../cluster";
24
25
  export interface ProxyApiRequestArgs {
25
26
  req: http.IncomingMessage;
26
27
  socket: net.Socket;
27
28
  head: Buffer;
29
+ cluster: Cluster;
28
30
  }
@@ -21,7 +21,7 @@
21
21
  /// <reference types="node" />
22
22
  /// <reference types="node/http" />
23
23
  /// <reference types="got/dist/source/core/utils/timed-out" />
24
- import type * as WebSocket from "ws";
24
+ import type WebSocket from "ws";
25
25
  import * as k8s from "@kubernetes/client-node";
26
26
  import type { KubeConfig } from "@kubernetes/client-node";
27
27
  import type { Cluster } from "../cluster";
@@ -29,10 +29,10 @@ import { ShellSession } from "./shell-session";
29
29
  export declare class NodeShellSession extends ShellSession {
30
30
  protected nodeName: string;
31
31
  ShellType: string;
32
- protected podId: string;
32
+ protected readonly podName: string;
33
33
  protected kc: KubeConfig;
34
- protected get cwd(): string | undefined;
35
- constructor(socket: WebSocket, cluster: Cluster, nodeName: string);
34
+ protected readonly cwd: string | undefined;
35
+ constructor(socket: WebSocket, cluster: Cluster, nodeName: string, terminalId: string);
36
36
  open(): Promise<void>;
37
37
  protected createNodeShellPod(): Promise<{
38
38
  response: import("http").IncomingMessage;
@@ -20,28 +20,115 @@
20
20
  */
21
21
  import type { Cluster } from "../cluster";
22
22
  import { Kubectl } from "../kubectl";
23
- import type * as WebSocket from "ws";
23
+ import type WebSocket from "ws";
24
24
  import * as pty from "node-pty";
25
+ import { TerminalMessage } from "../../renderer/api/terminal-api";
25
26
  export declare class ShellOpenError extends Error {
26
27
  cause: Error;
27
28
  constructor(message: string, cause: Error);
28
29
  }
30
+ export declare enum WebSocketCloseEvent {
31
+ /**
32
+ * The connection successfully completed the purpose for which it was created.
33
+ */
34
+ NormalClosure = 1000,
35
+ /**
36
+ * The endpoint is going away, either because of a server failure or because
37
+ * the browser is navigating away from the page that opened the connection.
38
+ */
39
+ GoingAway = 1001,
40
+ /**
41
+ * The endpoint is terminating the connection due to a protocol error.
42
+ */
43
+ ProtocolError = 1002,
44
+ /**
45
+ * The connection is being terminated because the endpoint received data of a
46
+ * type it cannot accept. (For example, a text-only endpoint received binary
47
+ * data.)
48
+ */
49
+ UnsupportedData = 1003,
50
+ /**
51
+ * Indicates that no status code was provided even though one was expected.
52
+ */
53
+ NoStatusReceived = 1005,
54
+ /**
55
+ * Indicates that a connection was closed abnormally (that is, with no close
56
+ * frame being sent) when a status code is expected.
57
+ */
58
+ AbnormalClosure = 1006,
59
+ /**
60
+ * The endpoint is terminating the connection because a message was received
61
+ * that contained inconsistent data (e.g., non-UTF-8 data within a text message).
62
+ */
63
+ InvalidFramePayloadData = 1007,
64
+ /**
65
+ * The endpoint is terminating the connection because it received a message
66
+ * that violates its policy. This is a generic status code, used when codes
67
+ * 1003 and 1009 are not suitable.
68
+ */
69
+ PolicyViolation = 1008,
70
+ /**
71
+ * The endpoint is terminating the connection because a data frame was
72
+ * received that is too large.
73
+ */
74
+ MessageTooBig = 1009,
75
+ /**
76
+ * The client is terminating the connection because it expected the server to
77
+ * negotiate one or more extension, but the server didn't.
78
+ */
79
+ MissingExtension = 1010,
80
+ /**
81
+ * The server is terminating the connection because it encountered an
82
+ * unexpected condition that prevented it from fulfilling the request.
83
+ */
84
+ InternalError = 1011,
85
+ /**
86
+ * The server is terminating the connection because it is restarting.
87
+ */
88
+ ServiceRestart = 1012,
89
+ /**
90
+ * The server is terminating the connection due to a temporary condition,
91
+ * e.g. it is overloaded and is casting off some of its clients.
92
+ */
93
+ TryAgainLater = 1013,
94
+ /**
95
+ * The server was acting as a gateway or proxy and received an invalid
96
+ * response from the upstream server. This is similar to 502 HTTP Status Code.
97
+ */
98
+ BadGateway = 1014,
99
+ /**
100
+ * Indicates that the connection was closed due to a failure to perform a TLS
101
+ * handshake (e.g., the server certificate can't be verified).
102
+ */
103
+ TlsHandshake = 1015
104
+ }
29
105
  export declare abstract class ShellSession {
30
106
  protected websocket: WebSocket;
31
107
  protected cluster: Cluster;
32
108
  abstract ShellType: string;
33
- static shellEnvs: Map<string, Record<string, any>>;
109
+ private static shellEnvs;
110
+ private static processes;
111
+ /**
112
+ * Kill all remaining shell backing processes. Should be called when about to
113
+ * quit
114
+ */
115
+ static cleanup(): void;
34
116
  protected kubectl: Kubectl;
35
117
  protected running: boolean;
36
- protected shellProcess: pty.IPty;
37
118
  protected kubectlBinDirP: Promise<string>;
38
119
  protected kubeconfigPathP: Promise<string>;
120
+ protected readonly terminalId: string;
39
121
  protected abstract get cwd(): string | undefined;
40
- constructor(websocket: WebSocket, cluster: Cluster);
41
- protected open(shell: string, args: string[], env: Record<string, any>): Promise<void>;
122
+ protected ensureShellProcess(shell: string, args: string[], env: Record<string, string>, cwd: string): {
123
+ shellProcess: pty.IPty;
124
+ resume: boolean;
125
+ };
126
+ constructor(websocket: WebSocket, cluster: Cluster, terminalId: string);
127
+ protected send(message: TerminalMessage): void;
128
+ protected getCwd(env: Record<string, string>): Promise<string>;
129
+ protected openShellProcess(shell: string, args: string[], env: Record<string, string>): Promise<void>;
42
130
  protected getPathEntries(): string[];
43
- protected getCachedShellEnv(): Promise<Record<string, any>>;
131
+ protected getCachedShellEnv(): Promise<Record<string, string>>;
44
132
  protected getShellEnv(): Promise<Record<string, any>>;
45
- protected exit(code?: number): void;
46
- protected sendResponse(msg: string): void;
133
+ protected exit(code?: WebSocketCloseEvent): void;
47
134
  }
@@ -18,9 +18,7 @@
18
18
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
- export interface EnvironmentVariables {
22
- readonly [key: string]: string;
23
- }
21
+ export declare type EnvironmentVariables = Record<string, string>;
24
22
  /**
25
23
  * Attempts to get the shell environment per the user's existing startup scripts.
26
24
  * If the environment can't be retrieved after 5 seconds an error message is logged.
@@ -19,6 +19,6 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import { fileNameMigration } from "./file-name-migration";
22
- export { fileNameMigration };
22
+ export { fileNameMigration, };
23
23
  declare const _default: import("conf/dist/source/types").Migrations<any>;
24
24
  export default _default;
@@ -19,4 +19,4 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import fetch from "node-fetch";
22
- export { fetch };
22
+ export { fetch, };
@@ -18,15 +18,28 @@
18
18
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
- import { EventEmitter } from "../utils";
22
- import { WebSocketApi } from "./websocket-api";
21
+ import { WebSocketApi, WebSocketEvents } from "./websocket-api";
23
22
  export declare enum TerminalChannels {
24
- STDIN = 0,
25
- STDOUT = 1,
26
- STDERR = 2,
27
- TERMINAL_SIZE = 4,
28
- TOKEN = 9
23
+ STDIN = "stdin",
24
+ STDOUT = "stdout",
25
+ CONNECTED = "connected",
26
+ RESIZE = "resize"
29
27
  }
28
+ export declare type TerminalMessage = {
29
+ type: TerminalChannels.STDIN;
30
+ data: string;
31
+ } | {
32
+ type: TerminalChannels.STDOUT;
33
+ data: string;
34
+ } | {
35
+ type: TerminalChannels.CONNECTED;
36
+ } | {
37
+ type: TerminalChannels.RESIZE;
38
+ data: {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ };
30
43
  declare enum TerminalColor {
31
44
  RED = "\u001B[31m",
32
45
  GREEN = "\u001B[32m",
@@ -41,26 +54,26 @@ declare enum TerminalColor {
41
54
  export declare type TerminalApiQuery = Record<string, string> & {
42
55
  id: string;
43
56
  node?: string;
44
- type?: string | "node";
57
+ type?: string;
45
58
  };
46
- export declare class TerminalApi extends WebSocketApi {
47
- protected options: TerminalApiQuery;
59
+ export interface TerminalEvents extends WebSocketEvents {
60
+ ready: () => void;
61
+ connected: () => void;
62
+ }
63
+ export declare class TerminalApi extends WebSocketApi<TerminalEvents> {
64
+ protected query: TerminalApiQuery;
48
65
  protected size: {
49
- Width: number;
50
- Height: number;
66
+ width: number;
67
+ height: number;
51
68
  };
52
- onReady: EventEmitter<[]>;
53
69
  isReady: boolean;
54
- readonly url: string;
55
- constructor(options: TerminalApiQuery);
56
- connect(): void;
70
+ constructor(query: TerminalApiQuery);
71
+ connect(): Promise<void>;
57
72
  destroy(): void;
58
- removeAllListeners(): void;
59
- protected _onReady(data: string): boolean;
60
73
  reconnect(): void;
61
- sendCommand(key: string, channel?: TerminalChannels): void;
74
+ sendMessage(message: TerminalMessage): void;
62
75
  sendTerminalSize(cols: number, rows: number): void;
63
- protected parseMessage(data: string): any;
76
+ protected _onMessage({ data, ...evt }: MessageEvent<ArrayBuffer>): void;
64
77
  protected _onOpen(evt: Event): void;
65
78
  protected _onClose(evt: CloseEvent): void;
66
79
  protected emitStatus(data: string, options?: {
@@ -18,52 +18,75 @@
18
18
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
- import { EventEmitter } from "../../common/event-emitter";
22
- interface IParams {
23
- url?: string;
24
- autoConnect?: boolean;
21
+ import type TypedEventEmitter from "typed-emitter";
22
+ interface WebsocketApiParams {
23
+ /**
24
+ * Flush pending commands on open socket
25
+ *
26
+ * @default true
27
+ */
25
28
  flushOnOpen?: boolean;
26
- reconnectDelaySeconds?: number;
27
- pingIntervalSeconds?: number;
29
+ /**
30
+ * In case of an error, wait this many seconds before reconnecting.
31
+ *
32
+ * If falsy, don't reconnect
33
+ *
34
+ * @default 10
35
+ */
36
+ reconnectDelay?: number;
37
+ /**
38
+ * The message for pinging the websocket
39
+ *
40
+ * @default "PING"
41
+ */
42
+ pingMessage?: string | ArrayBufferLike | Blob | ArrayBufferView;
43
+ /**
44
+ * If set to a number > 0, then the API will ping the socket on that interval.
45
+ *
46
+ * @unit seconds
47
+ */
48
+ pingInterval?: number;
49
+ /**
50
+ * Whether to show logs in the console
51
+ *
52
+ * @default isDevelopment
53
+ */
28
54
  logging?: boolean;
29
55
  }
30
- interface IMessage {
31
- id: string;
32
- data: string;
33
- }
34
56
  export declare enum WebSocketApiState {
35
- PENDING = -1,
36
- OPEN = 0,
37
- CONNECTING = 1,
38
- RECONNECTING = 2,
39
- CLOSED = 3
57
+ PENDING = "pending",
58
+ OPEN = "open",
59
+ CONNECTING = "connecting",
60
+ RECONNECTING = "reconnecting",
61
+ CLOSED = "closed"
62
+ }
63
+ export interface WebSocketEvents {
64
+ open: () => void;
65
+ data: (message: string) => void;
66
+ close: () => void;
40
67
  }
41
- export declare class WebSocketApi {
42
- protected params: IParams;
68
+ declare type Defaulted<Params, DefaultParams extends keyof Params> = Required<Pick<Params, DefaultParams>> & Omit<Params, DefaultParams>;
69
+ declare const WebSocketApi_base: new <T>() => TypedEventEmitter<T>;
70
+ export declare class WebSocketApi<Events extends WebSocketEvents> extends WebSocketApi_base<Events> {
43
71
  protected socket: WebSocket;
44
- protected pendingCommands: IMessage[];
45
- protected reconnectTimer: any;
46
- protected pingTimer: any;
47
- protected pingMessage: string;
72
+ protected pendingCommands: (string | ArrayBufferLike | Blob | ArrayBufferView)[];
73
+ protected reconnectTimer?: any;
74
+ protected pingTimer?: any;
75
+ protected params: Defaulted<WebsocketApiParams, keyof typeof WebSocketApi["defaultParams"]>;
48
76
  readyState: WebSocketApiState;
49
- onOpen: EventEmitter<[]>;
50
- onData: EventEmitter<[string]>;
51
- onClose: EventEmitter<[]>;
52
- static defaultParams: Partial<IParams>;
53
- constructor(params: IParams);
77
+ private static defaultParams;
78
+ constructor(params: WebsocketApiParams);
54
79
  get isConnected(): boolean;
55
80
  get isOnline(): boolean;
56
- setParams(params: Partial<IParams>): void;
57
- connect(url?: string): void;
81
+ connect(url: string): void;
58
82
  ping(): void;
59
83
  reconnect(): void;
60
84
  destroy(): void;
61
- removeAllListeners(): void;
62
- send(command: string): void;
85
+ clearAllListeners(): void;
86
+ send(command: string | ArrayBufferLike | Blob | ArrayBufferView): void;
63
87
  protected flush(): void;
64
- protected parseMessage(data: string): string;
65
88
  protected _onOpen(evt: Event): void;
66
- protected _onMessage(evt: MessageEvent): void;
89
+ protected _onMessage({ data }: MessageEvent): void;
67
90
  protected _onError(evt: Event): void;
68
91
  protected _onClose(evt: CloseEvent): void;
69
92
  protected writeLog(...data: any[]): void;
@@ -27,7 +27,7 @@ import * as ReactRouterDom from "react-router-dom";
27
27
  import * as LensExtensionsCommonApi from "../extensions/common-api";
28
28
  import * as LensExtensionsRendererApi from "../extensions/renderer-api";
29
29
  declare type AppComponent = React.ComponentType & {
30
- init?(rootElem: HTMLElement): Promise<void>;
30
+ init(rootElem: HTMLElement): Promise<void>;
31
31
  };
32
32
  export declare function bootstrap(comp: () => Promise<AppComponent>): Promise<void>;
33
33
  /**
@@ -19,11 +19,13 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  import React from "react";
22
- import { ClusterPageMenuRegistration } from "../../extensions/registries";
23
- import { TabLayoutRoute } from "./layout/tab-layout";
24
- import type { ClusterId } from "../../common/cluster-types";
25
- export declare class App extends React.Component {
22
+ import { ClusterPageMenuRegistration } from "../extensions/registries";
23
+ import { TabLayoutRoute } from "./components/layout/tab-layout";
24
+ import type { ClusterId } from "../common/cluster-types";
25
+ export declare class ClusterFrame extends React.Component {
26
26
  static clusterId: ClusterId;
27
+ static readonly logPrefix = "[CLUSTER-FRAME]:";
28
+ static displayName: string;
27
29
  constructor(props: {});
28
30
  static init(rootElem: HTMLElement): Promise<void>;
29
31
  componentDidMount(): void;
@@ -19,7 +19,6 @@
19
19
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  */
21
21
  /// <reference types="lodash" />
22
- import "./add-cluster.scss";
23
22
  import type { KubeConfig } from "@kubernetes/client-node";
24
23
  import React from "react";
25
24
  interface Option {
@@ -28,9 +28,9 @@ interface Props {
28
28
  }
29
29
  export declare class HelmChartDetails extends Component<Props> {
30
30
  chartVersions: HelmChart[];
31
- selectedChart: HelmChart;
32
- readme: string;
33
- error: string;
31
+ selectedChart?: HelmChart;
32
+ readme?: string;
33
+ error?: string;
34
34
  private abortController?;
35
35
  constructor(props: Props);
36
36
  componentWillUnmount(): void;