@k8slens/extensions 5.3.0-git.18e1c76b8f.0 → 5.3.0-git.1ce2e727af.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 (169) 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/k8s-api/endpoints/cluster-role-binding.api.d.ts +1 -1
  4. package/dist/src/common/k8s-api/endpoints/cluster-role.api.d.ts +1 -1
  5. package/dist/src/common/k8s-api/endpoints/cluster.api.d.ts +1 -1
  6. package/dist/src/common/k8s-api/endpoints/configmap.api.d.ts +1 -1
  7. package/dist/src/common/k8s-api/endpoints/crd.api.d.ts +1 -1
  8. package/dist/src/common/k8s-api/endpoints/cron-job.api.d.ts +1 -1
  9. package/dist/src/common/k8s-api/endpoints/daemon-set.api.d.ts +1 -1
  10. package/dist/src/common/k8s-api/endpoints/deployment.api.d.ts +1 -1
  11. package/dist/src/common/k8s-api/endpoints/endpoint.api.d.ts +1 -1
  12. package/dist/src/common/k8s-api/endpoints/events.api.d.ts +1 -1
  13. package/dist/src/common/k8s-api/endpoints/hpa.api.d.ts +1 -1
  14. package/dist/src/common/k8s-api/endpoints/ingress.api.d.ts +11 -8
  15. package/dist/src/common/k8s-api/endpoints/job.api.d.ts +1 -1
  16. package/dist/src/common/k8s-api/endpoints/limit-range.api.d.ts +1 -1
  17. package/dist/src/common/k8s-api/endpoints/namespaces.api.d.ts +1 -1
  18. package/dist/src/common/k8s-api/endpoints/network-policy.api.d.ts +1 -1
  19. package/dist/src/common/k8s-api/endpoints/nodes.api.d.ts +1 -1
  20. package/dist/src/common/k8s-api/endpoints/persistent-volume-claims.api.d.ts +1 -1
  21. package/dist/src/common/k8s-api/endpoints/persistent-volume.api.d.ts +1 -1
  22. package/dist/src/common/k8s-api/endpoints/pod-metrics.api.d.ts +1 -1
  23. package/dist/src/common/k8s-api/endpoints/poddisruptionbudget.api.d.ts +1 -1
  24. package/dist/src/common/k8s-api/endpoints/pods.api.d.ts +29 -33
  25. package/dist/src/common/k8s-api/endpoints/podsecuritypolicy.api.d.ts +1 -1
  26. package/dist/src/common/k8s-api/endpoints/replica-set.api.d.ts +1 -1
  27. package/dist/src/common/k8s-api/endpoints/resource-quota.api.d.ts +1 -1
  28. package/dist/src/common/k8s-api/endpoints/role-binding.api.d.ts +1 -1
  29. package/dist/src/common/k8s-api/endpoints/role.api.d.ts +1 -1
  30. package/dist/src/common/k8s-api/endpoints/secret.api.d.ts +1 -1
  31. package/dist/src/common/k8s-api/endpoints/selfsubjectrulesreviews.api.d.ts +1 -1
  32. package/dist/src/common/k8s-api/endpoints/service-accounts.api.d.ts +1 -1
  33. package/dist/src/common/k8s-api/endpoints/service.api.d.ts +2 -2
  34. package/dist/src/common/k8s-api/endpoints/stateful-set.api.d.ts +1 -1
  35. package/dist/src/common/k8s-api/endpoints/storage-class.api.d.ts +1 -1
  36. package/dist/src/common/k8s-api/index.d.ts +1 -1
  37. package/dist/src/common/k8s-api/kube-json-api.d.ts +2 -0
  38. package/dist/src/common/system-ca.d.ts +20 -1
  39. package/dist/src/common/user-store/preferences-helpers.d.ts +2 -6
  40. package/dist/src/common/user-store/user-store.d.ts +2 -7
  41. package/dist/src/common/utils/base64.d.ts +12 -4
  42. package/dist/src/common/utils/index.d.ts +2 -2
  43. package/dist/src/{main → common/utils}/promise-exec.d.ts +0 -0
  44. package/dist/src/extensions/0.extension-api.js +15 -0
  45. package/dist/src/extensions/1.extension-api.js +15 -0
  46. package/dist/src/extensions/10.extension-api.js +15 -0
  47. package/dist/src/extensions/11.extension-api.js +15 -0
  48. package/dist/src/extensions/12.extension-api.js +15 -0
  49. package/dist/src/extensions/13.extension-api.js +15 -0
  50. package/dist/src/extensions/14.extension-api.js +15 -0
  51. package/dist/src/extensions/15.extension-api.js +15 -0
  52. package/dist/src/extensions/16.extension-api.js +15 -0
  53. package/dist/src/extensions/17.extension-api.js +15 -0
  54. package/dist/src/extensions/18.extension-api.js +15 -0
  55. package/dist/src/extensions/19.extension-api.js +15 -0
  56. package/dist/src/extensions/2.extension-api.js +543 -0
  57. package/dist/src/extensions/20.extension-api.js +15 -0
  58. package/dist/src/extensions/21.extension-api.js +15 -0
  59. package/dist/src/extensions/22.extension-api.js +15 -0
  60. package/dist/src/extensions/23.extension-api.js +15 -0
  61. package/dist/src/extensions/24.extension-api.js +15 -0
  62. package/dist/src/extensions/25.extension-api.js +15 -0
  63. package/dist/src/extensions/26.extension-api.js +15 -0
  64. package/dist/src/extensions/27.extension-api.js +15 -0
  65. package/dist/src/extensions/28.extension-api.js +15 -0
  66. package/dist/src/extensions/29.extension-api.js +15 -0
  67. package/dist/src/extensions/3.extension-api.js +423 -0
  68. package/dist/src/extensions/30.extension-api.js +15 -0
  69. package/dist/src/extensions/31.extension-api.js +15 -0
  70. package/dist/src/extensions/32.extension-api.js +15 -0
  71. package/dist/src/extensions/33.extension-api.js +15 -0
  72. package/dist/src/extensions/34.extension-api.js +15 -0
  73. package/dist/src/extensions/35.extension-api.js +15 -0
  74. package/dist/src/extensions/36.extension-api.js +15 -0
  75. package/dist/src/extensions/37.extension-api.js +15 -0
  76. package/dist/src/extensions/38.extension-api.js +15 -0
  77. package/dist/src/extensions/39.extension-api.js +15 -0
  78. package/dist/src/extensions/4.extension-api.js +363 -0
  79. package/dist/src/extensions/40.extension-api.js +15 -0
  80. package/dist/src/extensions/41.extension-api.js +15 -0
  81. package/dist/src/extensions/42.extension-api.js +15 -0
  82. package/dist/src/extensions/43.extension-api.js +15 -0
  83. package/dist/src/extensions/44.extension-api.js +15 -0
  84. package/dist/src/extensions/45.extension-api.js +15 -0
  85. package/dist/src/extensions/46.extension-api.js +15 -0
  86. package/dist/src/extensions/47.extension-api.js +15 -0
  87. package/dist/src/extensions/48.extension-api.js +15 -0
  88. package/dist/src/extensions/49.extension-api.js +15 -0
  89. package/dist/src/extensions/5.extension-api.js +51 -0
  90. package/dist/src/extensions/50.extension-api.js +15 -0
  91. package/dist/src/extensions/51.extension-api.js +15 -0
  92. package/dist/src/extensions/52.extension-api.js +15 -0
  93. package/dist/src/extensions/53.extension-api.js +15 -0
  94. package/dist/src/extensions/54.extension-api.js +15 -0
  95. package/dist/src/extensions/55.extension-api.js +15 -0
  96. package/dist/src/extensions/56.extension-api.js +15 -0
  97. package/dist/src/extensions/57.extension-api.js +15 -0
  98. package/dist/src/extensions/58.extension-api.js +15 -0
  99. package/dist/src/extensions/59.extension-api.js +15 -0
  100. package/dist/src/extensions/6.extension-api.js +27 -0
  101. package/dist/src/extensions/60.extension-api.js +15 -0
  102. package/dist/src/extensions/61.extension-api.js +15 -0
  103. package/dist/src/extensions/62.extension-api.js +15 -0
  104. package/dist/src/extensions/63.extension-api.js +15 -0
  105. package/dist/src/extensions/64.extension-api.js +15 -0
  106. package/dist/src/extensions/65.extension-api.js +15 -0
  107. package/dist/src/extensions/66.extension-api.js +15 -0
  108. package/dist/src/extensions/67.extension-api.js +15 -0
  109. package/dist/src/extensions/68.extension-api.js +15 -0
  110. package/dist/src/extensions/69.extension-api.js +15 -0
  111. package/dist/src/extensions/7.extension-api.js +15 -0
  112. package/dist/src/extensions/70.extension-api.js +15 -0
  113. package/dist/src/extensions/71.extension-api.js +15 -0
  114. package/dist/src/extensions/72.extension-api.js +15 -0
  115. package/dist/src/extensions/73.extension-api.js +15 -0
  116. package/dist/src/extensions/74.extension-api.js +15 -0
  117. package/dist/src/extensions/75.extension-api.js +15 -0
  118. package/dist/src/extensions/76.extension-api.js +15 -0
  119. package/dist/src/extensions/77.extension-api.js +15 -0
  120. package/dist/src/extensions/78.extension-api.js +15 -0
  121. package/dist/src/extensions/79.extension-api.js +15 -0
  122. package/dist/src/extensions/8.extension-api.js +15 -0
  123. package/dist/src/extensions/9.extension-api.js +15 -0
  124. package/dist/src/extensions/common-api/app.d.ts +2 -0
  125. package/dist/src/extensions/common-api/index.d.ts +1 -1
  126. package/dist/src/extensions/common-api/user-preferences.d.ts +24 -0
  127. package/dist/src/extensions/extension-api.js +5720 -1563
  128. package/dist/src/main/index.d.ts +0 -1
  129. package/dist/src/main/kubectl.d.ts +1 -1
  130. package/dist/src/main/proxy-functions/shell-api-request.d.ts +14 -0
  131. package/dist/src/main/shell-session/node-shell-session.d.ts +2 -2
  132. package/dist/src/main/shell-session/shell-session.d.ts +89 -7
  133. package/dist/src/migrations/user-store/index.d.ts +1 -1
  134. package/dist/src/preload.d.ts +1 -1
  135. package/dist/src/renderer/api/terminal-api.d.ts +5 -6
  136. package/dist/src/renderer/components/+add-cluster/add-cluster.d.ts +0 -1
  137. package/dist/src/renderer/components/+apps-helm-charts/helm-chart-details.d.ts +3 -3
  138. package/dist/src/renderer/components/+apps-releases/release-menu.d.ts +3 -3
  139. package/dist/src/renderer/components/+catalog/catalog-add-button.d.ts +7 -1
  140. package/dist/src/renderer/components/+namespaces/namespace-select-filter.d.ts +3 -0
  141. package/dist/src/renderer/components/+namespaces/namespace.store.d.ts +55 -2
  142. package/dist/src/renderer/components/+workloads-deployments/deployment-scale-dialog.d.ts +1 -0
  143. package/dist/src/renderer/components/+workloads-pods/pod-details-affinities.d.ts +1 -2
  144. package/dist/src/renderer/components/+workloads-replicasets/replicaset-scale-dialog.d.ts +1 -0
  145. package/dist/src/renderer/components/+workloads-statefulsets/statefulset-scale-dialog.d.ts +1 -0
  146. package/dist/src/renderer/components/dock/create-resource.d.ts +2 -2
  147. package/dist/src/renderer/components/dock/dock.store.d.ts +20 -2
  148. package/dist/src/renderer/components/dock/edit-resource.d.ts +2 -2
  149. package/dist/src/renderer/components/dock/editor-panel.d.ts +11 -17
  150. package/dist/src/renderer/components/dock/install-chart.d.ts +6 -5
  151. package/dist/src/renderer/components/dock/terminal-window.d.ts +2 -3
  152. package/dist/src/renderer/components/dock/upgrade-chart.d.ts +2 -1
  153. package/dist/src/renderer/components/drawer/drawer.d.ts +1 -0
  154. package/dist/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.d.ts +0 -1
  155. package/dist/src/renderer/components/layout/__tests__/sidebar-cluster.test.d.ts +21 -0
  156. package/dist/src/renderer/components/layout/sidebar-cluster.d.ts +24 -0
  157. package/dist/src/renderer/components/layout/sidebar.d.ts +1 -4
  158. package/dist/src/renderer/components/list/list.d.ts +1 -1
  159. package/dist/src/renderer/components/menu/menu.d.ts +1 -0
  160. package/dist/src/renderer/components/monaco-editor/index.d.ts +23 -0
  161. package/dist/src/renderer/components/monaco-editor/monaco-editor.d.ts +93 -0
  162. package/dist/src/renderer/components/{dock/monaco-model-manager.d.ts → monaco-editor/monaco-themes.d.ts} +8 -21
  163. package/dist/src/renderer/components/monaco-editor/monaco-validators.d.ts +9 -0
  164. package/dist/src/renderer/components/switch/switcher.d.ts +1 -1
  165. package/dist/src/renderer/lens-app.d.ts +0 -1
  166. package/dist/src/renderer/port-forward/index.d.ts +1 -0
  167. package/dist/src/renderer/port-forward/port-forward-notify.d.ts +21 -0
  168. package/dist/src/renderer/theme.store.d.ts +4 -15
  169. package/package.json +1 -1
@@ -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";
@@ -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
  }
@@ -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,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";
@@ -32,7 +32,7 @@ export declare class NodeShellSession extends ShellSession {
32
32
  protected podId: string;
33
33
  protected kc: KubeConfig;
34
34
  protected get cwd(): string | undefined;
35
- constructor(socket: WebSocket, cluster: Cluster, nodeName: string);
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,110 @@
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
25
  export declare class ShellOpenError extends Error {
26
26
  cause: Error;
27
27
  constructor(message: string, cause: Error);
28
28
  }
29
+ export declare enum WebSocketCloseEvent {
30
+ /**
31
+ * The connection successfully completed the purpose for which it was created.
32
+ */
33
+ NormalClosure = 1000,
34
+ /**
35
+ * The endpoint is going away, either because of a server failure or because
36
+ * the browser is navigating away from the page that opened the connection.
37
+ */
38
+ GoingAway = 1001,
39
+ /**
40
+ * The endpoint is terminating the connection due to a protocol error.
41
+ */
42
+ ProtocolError = 1002,
43
+ /**
44
+ * The connection is being terminated because the endpoint received data of a
45
+ * type it cannot accept. (For example, a text-only endpoint received binary
46
+ * data.)
47
+ */
48
+ UnsupportedData = 1003,
49
+ /**
50
+ * Indicates that no status code was provided even though one was expected.
51
+ */
52
+ NoStatusReceived = 1005,
53
+ /**
54
+ * Indicates that a connection was closed abnormally (that is, with no close
55
+ * frame being sent) when a status code is expected.
56
+ */
57
+ AbnormalClosure = 1006,
58
+ /**
59
+ * The endpoint is terminating the connection because a message was received
60
+ * that contained inconsistent data (e.g., non-UTF-8 data within a text message).
61
+ */
62
+ InvalidFramePayloadData = 1007,
63
+ /**
64
+ * The endpoint is terminating the connection because it received a message
65
+ * that violates its policy. This is a generic status code, used when codes
66
+ * 1003 and 1009 are not suitable.
67
+ */
68
+ PolicyViolation = 1008,
69
+ /**
70
+ * The endpoint is terminating the connection because a data frame was
71
+ * received that is too large.
72
+ */
73
+ MessageTooBig = 1009,
74
+ /**
75
+ * The client is terminating the connection because it expected the server to
76
+ * negotiate one or more extension, but the server didn't.
77
+ */
78
+ MissingExtension = 1010,
79
+ /**
80
+ * The server is terminating the connection because it encountered an
81
+ * unexpected condition that prevented it from fulfilling the request.
82
+ */
83
+ InternalError = 1011,
84
+ /**
85
+ * The server is terminating the connection because it is restarting.
86
+ */
87
+ ServiceRestart = 1012,
88
+ /**
89
+ * The server is terminating the connection due to a temporary condition,
90
+ * e.g. it is overloaded and is casting off some of its clients.
91
+ */
92
+ TryAgainLater = 1013,
93
+ /**
94
+ * The server was acting as a gateway or proxy and received an invalid
95
+ * response from the upstream server. This is similar to 502 HTTP Status Code.
96
+ */
97
+ BadGateway = 1014,
98
+ /**
99
+ * Indicates that the connection was closed due to a failure to perform a TLS
100
+ * handshake (e.g., the server certificate can't be verified).
101
+ */
102
+ TlsHandshake = 1015
103
+ }
29
104
  export declare abstract class ShellSession {
30
105
  protected websocket: WebSocket;
31
106
  protected cluster: Cluster;
32
107
  abstract ShellType: string;
33
- static shellEnvs: Map<string, Record<string, any>>;
108
+ private static shellEnvs;
109
+ private static processes;
110
+ /**
111
+ * Kill all remaining shell backing processes. Should be called when about to
112
+ * quit
113
+ */
114
+ static cleanup(): void;
34
115
  protected kubectl: Kubectl;
35
116
  protected running: boolean;
36
- protected shellProcess: pty.IPty;
37
117
  protected kubectlBinDirP: Promise<string>;
38
118
  protected kubeconfigPathP: Promise<string>;
119
+ protected readonly terminalId: string;
39
120
  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>;
121
+ protected ensureShellProcess(shell: string, args: string[], env: Record<string, string>, cwd: string): pty.IPty;
122
+ constructor(websocket: WebSocket, cluster: Cluster, terminalId: string);
123
+ protected openShellProcess(shell: string, args: string[], env: Record<string, any>): Promise<void>;
42
124
  protected getPathEntries(): string[];
43
- protected getCachedShellEnv(): Promise<Record<string, any>>;
125
+ protected getCachedShellEnv(): Promise<Record<string, string>>;
44
126
  protected getShellEnv(): Promise<Record<string, any>>;
45
- protected exit(code?: number): void;
127
+ protected exit(code?: WebSocketCloseEvent): void;
46
128
  protected sendResponse(msg: string): void;
47
129
  }
@@ -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, };
@@ -41,26 +41,25 @@ declare enum TerminalColor {
41
41
  export declare type TerminalApiQuery = Record<string, string> & {
42
42
  id: string;
43
43
  node?: string;
44
- type?: string | "node";
44
+ type?: string;
45
45
  };
46
46
  export declare class TerminalApi extends WebSocketApi {
47
- protected options: TerminalApiQuery;
47
+ protected query: TerminalApiQuery;
48
48
  protected size: {
49
49
  Width: number;
50
50
  Height: number;
51
51
  };
52
52
  onReady: EventEmitter<[]>;
53
53
  isReady: boolean;
54
- readonly url: string;
55
- constructor(options: TerminalApiQuery);
56
- connect(): void;
54
+ constructor(query: TerminalApiQuery);
55
+ connect(): Promise<void>;
57
56
  destroy(): void;
58
57
  removeAllListeners(): void;
59
58
  protected _onReady(data: string): boolean;
60
59
  reconnect(): void;
61
60
  sendCommand(key: string, channel?: TerminalChannels): void;
62
61
  sendTerminalSize(cols: number, rows: number): void;
63
- protected parseMessage(data: string): any;
62
+ protected parseMessage(data: string): string;
64
63
  protected _onOpen(evt: Event): void;
65
64
  protected _onClose(evt: CloseEvent): void;
66
65
  protected emitStatus(data: string, options?: {
@@ -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;
@@ -26,9 +26,9 @@ interface Props extends MenuActionsProps {
26
26
  hideDetails?(): void;
27
27
  }
28
28
  export declare class HelmReleaseMenu extends React.Component<Props> {
29
- remove(): Promise<void>;
30
- upgrade(): void;
31
- rollback(): void;
29
+ remove: () => Promise<void>;
30
+ upgrade: () => void;
31
+ rollback: () => void;
32
32
  renderContent(): JSX.Element;
33
33
  render(): JSX.Element;
34
34
  }
@@ -26,11 +26,17 @@ export declare type CatalogAddButtonProps = {
26
26
  };
27
27
  export declare class CatalogAddButton extends React.Component<CatalogAddButtonProps> {
28
28
  protected isOpen: boolean;
29
- protected menuItems: import("mobx").IObservableArray<CatalogEntityAddMenu>;
29
+ menuItems: Map<string, CatalogEntityAddMenu[]>;
30
30
  constructor(props: CatalogAddButtonProps);
31
31
  componentDidMount(): void;
32
+ componentDidUpdate(prevProps: CatalogAddButtonProps): void;
33
+ get categories(): CatalogCategory[];
34
+ updateMenuItems(): void;
35
+ updateCategoryItems: (category: CatalogCategory) => void;
36
+ getCategoryFilteredItems: (category: CatalogCategory) => CatalogEntityAddMenu[];
32
37
  onOpen(): void;
33
38
  onClose(): void;
34
39
  onButtonClick(): void;
40
+ get items(): CatalogEntityAddMenu[];
35
41
  render(): JSX.Element;
36
42
  }
@@ -24,6 +24,9 @@ import type { SelectOption, SelectProps } from "../select";
24
24
  export declare class NamespaceSelectFilter extends React.Component<SelectProps> {
25
25
  static isMultiSelection: import("mobx").IObservableValue<boolean>;
26
26
  static isMenuOpen: import("mobx").IObservableValue<boolean>;
27
+ /**
28
+ * Only updated on every open
29
+ */
27
30
  private selected;
28
31
  private didToggle;
29
32
  constructor(props: SelectProps);
@@ -30,18 +30,71 @@ export declare class NamespaceStore extends KubeObjectStore<Namespace> {
30
30
  onContextChange(callback: (namespaces: string[]) => void, opts?: IReactionOptions): IReactionDisposer;
31
31
  private autoLoadAllowedNamespaces;
32
32
  private get initialNamespaces();
33
- get selectedNamespaces(): string[];
33
+ /**
34
+ * @private
35
+ * The current value (list of namespaces names) in the storage layer
36
+ */
37
+ private get selectedNamespaces();
34
38
  get allowedNamespaces(): string[];
39
+ /**
40
+ * The list of selected namespace names (for filtering)
41
+ */
35
42
  get contextNamespaces(): string[];
43
+ /**
44
+ * The set of select namespace names (for filtering)
45
+ */
46
+ get selectedNames(): Set<string>;
47
+ /**
48
+ * Is true when the the set of namespace names selected is implicitly all
49
+ *
50
+ * Namely, this will be true if the user has deselected all namespaces from
51
+ * the filter or if the user has clicked the "All Namespaces" option
52
+ */
53
+ get areAllSelectedImplicitly(): boolean;
36
54
  subscribe(): typeof noop;
37
55
  protected loadItems(params: KubeObjectStoreLoadingParams<Namespace>): Promise<Namespace[]>;
38
56
  selectNamespaces(namespace: string | string[]): void;
39
57
  clearSelected(namespaces?: string | string[]): void;
58
+ /**
59
+ * Checks if namespace names are selected for filtering
60
+ * @param namespaces One or several names of namespaces to check if they are selected
61
+ * @returns `true` if all the provided names are selected
62
+ */
40
63
  hasContext(namespaces: string | string[]): boolean;
64
+ /**
65
+ * Is `true` if all available namespaces are selected, otherwise `false`
66
+ */
41
67
  get hasAllContexts(): boolean;
68
+ /**
69
+ * Acts like `toggleSingle` but can work on several at a time
70
+ * @param namespaces One or many names of namespaces to select
71
+ */
42
72
  toggleContext(namespaces: string | string[]): void;
73
+ /**
74
+ * Toggles the selection state of `namespace`. Namely, if it was previously
75
+ * specifically or implicitly selected then after this call it will be
76
+ * explicitly deselected.
77
+ * @param namespace The name of a namespace
78
+ */
43
79
  toggleSingle(namespace: string): void;
44
- toggleAll(showAll?: boolean): void;
80
+ /**
81
+ * Makes the given namespace the sole selected namespace
82
+ */
83
+ selectSingle(namespace: string): void;
84
+ /**
85
+ * Selects all available namespaces.
86
+ *
87
+ * Note: If new namespaces appear in the future those will be selected too
88
+ */
89
+ selectAll(): void;
90
+ /**
91
+ * This function selects all namespaces implicitly.
92
+ *
93
+ * NOTE: does not toggle any namespaces
94
+ * @param selectAll NOT USED
95
+ * @deprecated Use `NamespaceStore.selectAll` instead.
96
+ */
97
+ toggleAll(selectAll?: boolean): void;
45
98
  remove(item: Namespace): Promise<void>;
46
99
  }
47
100
  export declare const namespaceStore: NamespaceStore;
@@ -42,6 +42,7 @@ export declare class DeploymentScaleDialog extends Component<Props> {
42
42
  onClose: () => void;
43
43
  onChange: (evt: React.ChangeEvent, value: number) => void;
44
44
  scale: () => Promise<void>;
45
+ private readonly scaleMin;
45
46
  desiredReplicasUp: () => void;
46
47
  desiredReplicasDown: () => void;
47
48
  renderContents(): JSX.Element;
@@ -18,9 +18,8 @@
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 "./pod-details-affinities.scss";
22
21
  import React from "react";
23
- import type { Pod, Deployment, DaemonSet, StatefulSet, ReplicaSet, Job } from "../../../common/k8s-api/endpoints";
22
+ import type { DaemonSet, Deployment, Job, Pod, ReplicaSet, StatefulSet } from "../../../common/k8s-api/endpoints";
24
23
  interface Props {
25
24
  workload: Pod | Deployment | DaemonSet | StatefulSet | ReplicaSet | Job;
26
25
  }
@@ -42,6 +42,7 @@ export declare class ReplicaSetScaleDialog extends Component<Props> {
42
42
  onChange: (evt: React.ChangeEvent, value: number) => void;
43
43
  get scaleMax(): number;
44
44
  scale: () => Promise<void>;
45
+ private readonly scaleMin;
45
46
  desiredReplicasUp: () => void;
46
47
  desiredReplicasDown: () => void;
47
48
  renderContents(): JSX.Element;
@@ -42,6 +42,7 @@ export declare class StatefulSetScaleDialog extends Component<Props> {
42
42
  onChange: (evt: React.ChangeEvent, value: number) => void;
43
43
  get scaleMax(): number;
44
44
  scale: () => Promise<void>;
45
+ private readonly scaleMin;
45
46
  desiredReplicasUp: () => void;
46
47
  desiredReplicasDown: () => void;
47
48
  renderContents(): JSX.Element;
@@ -23,7 +23,6 @@ import React from "react";
23
23
  import { GroupSelectOption, SelectOption } from "../select";
24
24
  import type { DockTab } from "./dock.store";
25
25
  interface Props {
26
- className?: string;
27
26
  tab: DockTab;
28
27
  }
29
28
  export declare class CreateResource extends React.Component<Props> {
@@ -37,7 +36,8 @@ export declare class CreateResource extends React.Component<Props> {
37
36
  get tabId(): string;
38
37
  get data(): string;
39
38
  get currentTemplate(): SelectOption<any>;
40
- onChange: (value: string, error?: string) => void;
39
+ onChange: (value: string) => void;
40
+ onError: (error: Error | string) => void;
41
41
  onSelectTemplate: (item: SelectOption) => void;
42
42
  create: () => Promise<undefined>;
43
43
  renderControls(): JSX.Element;
@@ -73,6 +73,24 @@ export interface DockStorageState {
73
73
  selectedTabId?: TabId;
74
74
  isOpen?: boolean;
75
75
  }
76
+ export interface DockTabChangeEvent {
77
+ tab: DockTab;
78
+ tabId: TabId;
79
+ prevTab?: DockTab;
80
+ }
81
+ export interface DockTabChangeEventOptions extends IReactionOptions {
82
+ /**
83
+ * filter: by dockStore.selectedTab.kind == tabKind
84
+ */
85
+ tabKind?: TabKind;
86
+ /**
87
+ * filter: dock and selected tab should be visible (default: true)
88
+ */
89
+ dockIsVisible?: boolean;
90
+ }
91
+ export interface DockTabCloseEvent {
92
+ tabId: TabId;
93
+ }
76
94
  export declare class DockStore implements DockStorageState {
77
95
  constructor();
78
96
  readonly minHeight = 100;
@@ -94,9 +112,9 @@ export declare class DockStore implements DockStorageState {
94
112
  get maxHeight(): number;
95
113
  protected adjustHeight(): void;
96
114
  onResize(callback: () => void, options?: IReactionOptions): import("mobx").IReactionDisposer;
97
- onTabChange(callback: (tabId: TabId) => void, options?: IReactionOptions): import("mobx").IReactionDisposer;
115
+ onTabClose(callback: (evt: DockTabCloseEvent) => void, options?: IReactionOptions): import("mobx").IReactionDisposer;
116
+ onTabChange(callback: (evt: DockTabChangeEvent) => void, options?: DockTabChangeEventOptions): import("mobx").IReactionDisposer;
98
117
  hasTabs(): boolean;
99
- usesMonacoEditor(tab: DockTab): boolean;
100
118
  open(fullSize?: boolean): void;
101
119
  close(): void;
102
120
  toggle(): void;
@@ -23,7 +23,6 @@ import React from "react";
23
23
  import type { DockTab } from "./dock.store";
24
24
  import type { KubeObject } from "../../../common/k8s-api/kube-object";
25
25
  interface Props {
26
- className?: string;
27
26
  tab: DockTab;
28
27
  }
29
28
  export declare class EditResource extends React.Component<Props> {
@@ -34,7 +33,8 @@ export declare class EditResource extends React.Component<Props> {
34
33
  get resource(): KubeObject | undefined;
35
34
  get draft(): string;
36
35
  saveDraft(draft: string | object): void;
37
- onChange: (draft: string, error?: string) => void;
36
+ onChange: (draft: string) => void;
37
+ onError: (error?: Error | string) => void;
38
38
  save: () => Promise<JSX.Element>;
39
39
  render(): JSX.Element;
40
40
  }
@@ -18,27 +18,21 @@
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 { monaco } from "react-monaco-editor";
22
21
  import React from "react";
23
22
  import { TabId } from "./dock.store";
24
- import "monaco-editor";
25
- interface Props {
26
- className?: string;
23
+ import { MonacoEditor, MonacoEditorProps } from "../monaco-editor";
24
+ export interface EditorPanelProps {
27
25
  tabId: TabId;
28
- value?: string;
29
- onChange(value: string, error?: string): void;
26
+ value: string;
27
+ className?: string;
28
+ autoFocus?: boolean;
29
+ onChange: MonacoEditorProps["onChange"];
30
+ onError?: MonacoEditorProps["onError"];
30
31
  }
31
- export declare class EditorPanel extends React.Component<Props> {
32
- model: monaco.editor.ITextModel;
33
- editor: monaco.editor.IStandaloneCodeEditor;
34
- yamlError: string;
35
- constructor(props: Props);
32
+ export declare class EditorPanel extends React.Component<EditorPanelProps> {
33
+ static defaultProps: object;
34
+ editor?: MonacoEditor;
35
+ constructor(props: EditorPanelProps);
36
36
  componentDidMount(): void;
37
- editorDidMount: (editor: monaco.editor.IStandaloneCodeEditor) => void;
38
- validate(value: string): void;
39
- onTabChange: () => void;
40
- onResize: () => void;
41
- onChange: (value: string) => void;
42
37
  render(): JSX.Element;
43
38
  }
44
- export {};
@@ -35,12 +35,13 @@ export declare class InstallChart extends Component<Props> {
35
35
  get tabId(): string;
36
36
  get versions(): string[];
37
37
  get releaseDetails(): import("../../../common/k8s-api/endpoints/helm-releases.api").IReleaseUpdateDetails;
38
- viewRelease(): void;
38
+ viewRelease: () => void;
39
39
  save(data: Partial<IChartInstallData>): void;
40
- onVersionChange(option: SelectOption): void;
41
- onValuesChange(values: string, error?: string): void;
42
- onNamespaceChange(opt: SelectOption): void;
43
- onReleaseNameChange(name: string): void;
40
+ onVersionChange: (option: SelectOption) => void;
41
+ onChange: (values: string) => void;
42
+ onError: (error: Error | string) => void;
43
+ onNamespaceChange: (opt: SelectOption) => void;
44
+ onReleaseNameChange: (name: string) => void;
44
45
  install: () => Promise<JSX.Element>;
45
46
  render(): JSX.Element;
46
47
  }
@@ -20,17 +20,16 @@
20
20
  */
21
21
  import "./terminal-window.scss";
22
22
  import React from "react";
23
- import type { DockTab } from "./dock.store";
24
23
  import type { Terminal } from "./terminal";
24
+ import { DockTab, TabId } from "./dock.store";
25
25
  interface Props {
26
- className?: string;
27
26
  tab: DockTab;
28
27
  }
29
28
  export declare class TerminalWindow extends React.Component<Props> {
30
29
  elem: HTMLElement;
31
30
  terminal: Terminal;
32
31
  componentDidMount(): void;
33
- activate(tabId?: string): void;
32
+ activate(tabId: TabId): void;
34
33
  render(): JSX.Element;
35
34
  }
36
35
  export {};
@@ -38,7 +38,8 @@ export declare class UpgradeChart extends React.Component<Props> {
38
38
  get release(): HelmRelease;
39
39
  get value(): string;
40
40
  loadVersions(): Promise<void>;
41
- onChange: (value: string, error?: string) => void;
41
+ onChange: (value: string) => void;
42
+ onError: (error: Error | string) => void;
42
43
  upgrade: () => Promise<JSX.Element>;
43
44
  formatVersionLabel: ({ value }: SelectOption<IChartVersion>) => string;
44
45
  render(): JSX.Element;
@@ -46,6 +46,7 @@ export declare class Drawer extends React.Component<DrawerProps> {
46
46
  state: State;
47
47
  componentDidMount(): void;
48
48
  componentWillUnmount(): void;
49
+ fixUpTripleClick: (ev: MouseEvent) => void;
49
50
  saveScrollPos: () => void;
50
51
  restoreScrollPos: () => void;
51
52
  onEscapeKey: (evt: KeyboardEvent) => void;
@@ -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 "./kubeconfig-dialog.scss";
22
21
  import React from "react";
23
22
  import type { ServiceAccount } from "../../../common/k8s-api/endpoints";
24
23
  import { DialogProps } from "../dialog";
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright (c) 2021 OpenLens Authors
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ * this software and associated documentation files (the "Software"), to deal in
6
+ * the Software without restriction, including without limitation the rights to
7
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ * the Software, and to permit persons to whom the Software is furnished to do so,
9
+ * subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ */
21
+ import "@testing-library/jest-dom/extend-expect";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) 2021 OpenLens Authors
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ * this software and associated documentation files (the "Software"), to deal in
6
+ * the Software without restriction, including without limitation the rights to
7
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ * the Software, and to permit persons to whom the Software is furnished to do so,
9
+ * subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in all
12
+ * copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ */
21
+ import type { CatalogEntity } from "../../api/catalog-entity";
22
+ export declare function SidebarCluster({ clusterEntity }: {
23
+ clusterEntity: CatalogEntity;
24
+ }): JSX.Element;