@k8slens/extensions 5.3.1-git.f404b953cd.0 → 5.3.1-git.f56f3be79b.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 (56) hide show
  1. package/dist/src/common/cluster-types.d.ts +5 -1
  2. package/dist/src/common/k8s-api/endpoints/daemon-set.api.d.ts +2 -5
  3. package/dist/src/common/k8s-api/endpoints/deployment.api.d.ts +2 -5
  4. package/dist/src/common/k8s-api/endpoints/job.api.d.ts +2 -5
  5. package/dist/src/common/k8s-api/endpoints/network-policy.api.d.ts +72 -32
  6. package/dist/src/common/k8s-api/endpoints/persistent-volume-claims.api.d.ts +3 -16
  7. package/dist/src/common/k8s-api/endpoints/poddisruptionbudget.api.d.ts +2 -6
  8. package/dist/src/common/k8s-api/endpoints/replica-set.api.d.ts +2 -5
  9. package/dist/src/common/k8s-api/endpoints/stateful-set.api.d.ts +2 -5
  10. package/dist/src/common/k8s-api/kube-api-parse.d.ts +2 -2
  11. package/dist/src/common/k8s-api/kube-api.d.ts +35 -8
  12. package/dist/src/common/k8s-api/kube-json-api.d.ts +1 -2
  13. package/dist/src/common/k8s-api/kube-object.d.ts +22 -0
  14. package/dist/src/common/protocol-handler/error.d.ts +3 -3
  15. package/dist/src/common/protocol-handler/router.d.ts +5 -5
  16. package/dist/src/extensions/extension-api.js +169 -51
  17. package/dist/src/extensions/extension-compatibility.d.ts +3 -1
  18. package/dist/src/extensions/registries/status-bar-registry.d.ts +6 -0
  19. package/dist/src/extensions/renderer-api/k8s-api.d.ts +1 -0
  20. package/dist/src/main/cluster-manager.d.ts +1 -1
  21. package/dist/src/main/lens-proxy.d.ts +8 -1
  22. package/dist/src/main/menu.d.ts +6 -1
  23. package/dist/src/main/protocol-handler/router.d.ts +3 -3
  24. package/dist/src/main/window-manager.d.ts +3 -0
  25. package/dist/src/renderer/api/terminal-api.d.ts +0 -2
  26. package/dist/src/renderer/{utils/copyToClipboard.d.ts → components/+network-policies/__tests__/network-policy-details.test.d.ts} +1 -7
  27. package/dist/src/renderer/components/+network-policies/network-policy-details.d.ts +8 -4
  28. package/dist/src/renderer/components/avatar/__tests__/avatar.test.d.ts +21 -0
  29. package/dist/src/renderer/components/avatar/avatar.d.ts +7 -8
  30. package/dist/src/renderer/components/{clipboard → avatar}/index.d.ts +1 -1
  31. package/dist/src/renderer/components/cluster-manager/active-hotbar-name.d.ts +21 -0
  32. package/dist/src/renderer/components/cluster-manager/bottom-bar.d.ts +0 -1
  33. package/dist/src/renderer/components/dialog/dialog.d.ts +1 -0
  34. package/dist/src/renderer/components/dock/install-chart.d.ts +0 -1
  35. package/dist/src/renderer/components/hotbar/hotbar-entity-icon.d.ts +3 -3
  36. package/dist/src/renderer/components/hotbar/hotbar-icon.d.ts +3 -10
  37. package/dist/src/renderer/components/kube-object-menu/dependencies/api-manager.injectable.d.ts +24 -0
  38. package/dist/src/renderer/components/kube-object-menu/dependencies/cluster-name.injectable.d.ts +27 -0
  39. package/dist/src/renderer/components/kube-object-menu/dependencies/cluster.injectable.d.ts +4 -0
  40. package/dist/src/renderer/components/kube-object-menu/dependencies/edit-resource-tab.injectable.d.ts +24 -0
  41. package/dist/src/renderer/components/kube-object-menu/dependencies/hide-details.injectable.d.ts +24 -0
  42. package/dist/src/renderer/components/kube-object-menu/dependencies/kube-object-menu-items/get-kube-object-menu-items.d.ts +29 -0
  43. package/dist/src/renderer/components/kube-object-menu/dependencies/kube-object-menu-items/kube-object-menu-items.injectable.d.ts +24 -0
  44. package/dist/src/renderer/components/kube-object-menu/dependencies/kube-object-menu-items/kube-object-menu-registry.injectable.d.ts +24 -0
  45. package/dist/src/renderer/components/kube-object-menu/index.d.ts +2 -1
  46. package/dist/src/renderer/components/kube-object-menu/kube-object-menu-container.d.ts +2 -0
  47. package/dist/src/renderer/components/kube-object-menu/kube-object-menu.d.ts +14 -4
  48. package/dist/src/renderer/components/kube-object-menu/kube-object-menu.injectable.d.ts +5 -0
  49. package/dist/src/renderer/components/kube-object-menu/kube-object-menu.test.d.ts +21 -0
  50. package/dist/src/renderer/components/kubeconfig-dialog/kubeconfig-dialog.d.ts +0 -1
  51. package/dist/src/renderer/components/layout/__tests__/topbar-win-linux.test.d.ts +21 -0
  52. package/dist/src/renderer/components/{clipboard/clipboard.d.ts → test-utils/renderFor.d.ts} +6 -16
  53. package/dist/src/renderer/initializers/index.d.ts +1 -0
  54. package/dist/src/renderer/initializers/status-bar-registry.d.ts +21 -0
  55. package/dist/src/renderer/utils/index.d.ts +0 -1
  56. package/package.json +1 -1
@@ -76,7 +76,11 @@ export interface ClusterPreferences extends ClusterPrometheusPreferences {
76
76
  terminalCWD?: string;
77
77
  clusterName?: string;
78
78
  iconOrder?: number;
79
- icon?: string;
79
+ /**
80
+ * The <img> src for the cluster. If set to `null` that means that it was
81
+ * cleared by preferences.
82
+ */
83
+ icon?: string | null;
80
84
  httpsProxy?: string;
81
85
  hiddenMetrics?: string[];
82
86
  nodeShellImage?: string;
@@ -22,17 +22,14 @@ import { IAffinity, WorkloadKubeObject } from "../workload-kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { KubeJsonApiData } from "../kube-json-api";
24
24
  import type { IPodContainer, IPodMetrics } from "./pods.api";
25
+ import type { LabelSelector } from "../kube-object";
25
26
  export declare class DaemonSet extends WorkloadKubeObject {
26
27
  static kind: string;
27
28
  static namespaced: boolean;
28
29
  static apiBase: string;
29
30
  constructor(data: KubeJsonApiData);
30
31
  spec: {
31
- selector: {
32
- matchLabels: {
33
- [name: string]: string;
34
- };
35
- };
32
+ selector: LabelSelector;
36
33
  template: {
37
34
  metadata: {
38
35
  creationTimestamp?: string;
@@ -22,6 +22,7 @@ import { IAffinity, WorkloadKubeObject } from "../workload-kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { IPodMetrics } from "./pods.api";
24
24
  import type { KubeJsonApiData } from "../kube-json-api";
25
+ import type { LabelSelector } from "../kube-object";
25
26
  export declare class DeploymentApi extends KubeApi<Deployment> {
26
27
  protected getScaleApiUrl(params: {
27
28
  namespace: string;
@@ -67,11 +68,7 @@ export declare class Deployment extends WorkloadKubeObject {
67
68
  constructor(data: KubeJsonApiData);
68
69
  spec: {
69
70
  replicas: number;
70
- selector: {
71
- matchLabels: {
72
- [app: string]: string;
73
- };
74
- };
71
+ selector: LabelSelector;
75
72
  template: {
76
73
  metadata: {
77
74
  creationTimestamp?: string;
@@ -22,6 +22,7 @@ import { IAffinity, WorkloadKubeObject } from "../workload-kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { KubeJsonApiData } from "../kube-json-api";
24
24
  import type { IPodContainer, IPodMetrics } from "./pods.api";
25
+ import type { LabelSelector } from "../kube-object";
25
26
  export declare class Job extends WorkloadKubeObject {
26
27
  static kind: string;
27
28
  static namespaced: boolean;
@@ -31,11 +32,7 @@ export declare class Job extends WorkloadKubeObject {
31
32
  parallelism?: number;
32
33
  completions?: number;
33
34
  backoffLimit?: number;
34
- selector?: {
35
- matchLabels: {
36
- [name: string]: string;
37
- };
38
- };
35
+ selector?: LabelSelector;
39
36
  template: {
40
37
  metadata: {
41
38
  creationTimestamp?: string;
@@ -18,50 +18,90 @@
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 { KubeObject } from "../kube-object";
21
+ import { KubeObject, LabelSelector } from "../kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { KubeJsonApiData } from "../kube-json-api";
24
24
  export interface IPolicyIpBlock {
25
25
  cidr: string;
26
26
  except?: string[];
27
27
  }
28
- export interface IPolicySelector {
29
- matchLabels: {
30
- [label: string]: string;
31
- };
28
+ /**
29
+ * @deprecated Use `LabelSelector` instead
30
+ */
31
+ export declare type IPolicySelector = LabelSelector;
32
+ export interface NetworkPolicyPort {
33
+ /**
34
+ * The protocol which network traffic must match.
35
+ *
36
+ * One of:
37
+ * - `"TCP"`
38
+ * - `"UDP"`
39
+ * - `"SCTP"`
40
+ *
41
+ * @default "TCP"
42
+ */
43
+ protocol?: string;
44
+ /**
45
+ * The port on the given protocol. This can either be a numerical or named
46
+ * port on a pod. If this field is not provided, this matches all port names and
47
+ * numbers.
48
+ *
49
+ * If present, only traffic on the specified protocol AND port will be matched.
50
+ */
51
+ port?: number | string;
52
+ /**
53
+ * If set, indicates that the range of ports from port to endPort, inclusive,
54
+ * should be allowed by the policy. This field cannot be defined if the port field
55
+ * is not defined or if the port field is defined as a named (string) port.
56
+ *
57
+ * The endPort must be equal or greater than port.
58
+ */
59
+ endPort?: number;
60
+ }
61
+ export interface NetworkPolicyPeer {
62
+ /**
63
+ * IPBlock defines policy on a particular IPBlock. If this field is set then
64
+ * neither of the other fields can be.
65
+ */
66
+ ipBlock?: IPolicyIpBlock;
67
+ /**
68
+ * Selects Namespaces using cluster-scoped labels. This field follows standard label
69
+ * selector semantics; if present but empty, it selects all namespaces.
70
+ *
71
+ * If PodSelector is also set, then the NetworkPolicyPeer as a whole selects
72
+ * the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.
73
+ *
74
+ * Otherwise it selects all Pods in the Namespaces selected by NamespaceSelector.
75
+ */
76
+ namespaceSelector?: LabelSelector;
77
+ /**
78
+ * This is a label selector which selects Pods. This field follows standard label
79
+ * selector semantics; if present but empty, it selects all pods.
80
+ *
81
+ * If NamespaceSelector is also set, then the NetworkPolicyPeer as a whole selects
82
+ * the Pods matching PodSelector in the Namespaces selected by NamespaceSelector.
83
+ *
84
+ * Otherwise it selects the Pods matching PodSelector in the policy's own Namespace.
85
+ */
86
+ podSelector?: LabelSelector;
32
87
  }
33
88
  export interface IPolicyIngress {
34
- from: {
35
- ipBlock?: IPolicyIpBlock;
36
- namespaceSelector?: IPolicySelector;
37
- podSelector?: IPolicySelector;
38
- }[];
39
- ports: {
40
- protocol: string;
41
- port: number;
42
- }[];
89
+ from?: NetworkPolicyPeer[];
90
+ ports?: NetworkPolicyPort[];
43
91
  }
44
92
  export interface IPolicyEgress {
45
- to: {
46
- ipBlock: IPolicyIpBlock;
47
- }[];
48
- ports: {
49
- protocol: string;
50
- port: number;
51
- }[];
93
+ to?: NetworkPolicyPeer[];
94
+ ports?: NetworkPolicyPort[];
95
+ }
96
+ export declare type PolicyType = "Ingress" | "Egress";
97
+ export interface NetworkPolicySpec {
98
+ podSelector: LabelSelector;
99
+ policyTypes?: PolicyType[];
100
+ ingress?: IPolicyIngress[];
101
+ egress?: IPolicyEgress[];
52
102
  }
53
103
  export interface NetworkPolicy {
54
- spec: {
55
- podSelector: {
56
- matchLabels: {
57
- [label: string]: string;
58
- role: string;
59
- };
60
- };
61
- policyTypes: string[];
62
- ingress: IPolicyIngress[];
63
- egress: IPolicyEgress[];
64
- };
104
+ spec: NetworkPolicySpec;
65
105
  }
66
106
  export declare class NetworkPolicy extends KubeObject {
67
107
  static kind: string;
@@ -18,7 +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
- import { KubeObject } from "../kube-object";
21
+ import { KubeObject, LabelSelector } from "../kube-object";
22
22
  import { IMetrics } from "./metrics.api";
23
23
  import type { Pod } from "./pods.api";
24
24
  import { KubeApi } from "../kube-api";
@@ -35,16 +35,7 @@ export interface PersistentVolumeClaim {
35
35
  spec: {
36
36
  accessModes: string[];
37
37
  storageClassName: string;
38
- selector: {
39
- matchLabels: {
40
- release: string;
41
- };
42
- matchExpressions: {
43
- key: string;
44
- operator: string;
45
- values: string[];
46
- }[];
47
- };
38
+ selector: LabelSelector;
48
39
  resources: {
49
40
  requests: {
50
41
  storage: string;
@@ -63,11 +54,7 @@ export declare class PersistentVolumeClaim extends KubeObject {
63
54
  getPods(allPods: Pod[]): Pod[];
64
55
  getStorage(): string;
65
56
  getMatchLabels(): string[];
66
- getMatchExpressions(): {
67
- key: string;
68
- operator: string;
69
- values: string[];
70
- }[];
57
+ getMatchExpressions(): import("../kube-object").LabelMatchExpression[];
71
58
  getStatus(): string;
72
59
  }
73
60
  declare let pvcApi: PersistentVolumeClaimsApi;
@@ -18,18 +18,14 @@
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 { KubeObject } from "../kube-object";
21
+ import { KubeObject, LabelSelector } from "../kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { KubeJsonApiData } from "../kube-json-api";
24
24
  export interface PodDisruptionBudget {
25
25
  spec: {
26
26
  minAvailable: string;
27
27
  maxUnavailable: string;
28
- selector: {
29
- matchLabels: {
30
- [app: string]: string;
31
- };
32
- };
28
+ selector: LabelSelector;
33
29
  };
34
30
  status: {
35
31
  currentHealthy: number;
@@ -22,6 +22,7 @@ import { WorkloadKubeObject } from "../workload-kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { IPodMetrics, Pod } from "./pods.api";
24
24
  import type { KubeJsonApiData } from "../kube-json-api";
25
+ import type { LabelSelector } from "../kube-object";
25
26
  export declare class ReplicaSetApi extends KubeApi<ReplicaSet> {
26
27
  protected getScaleApiUrl(params: {
27
28
  namespace: string;
@@ -44,11 +45,7 @@ export declare class ReplicaSet extends WorkloadKubeObject {
44
45
  constructor(data: KubeJsonApiData);
45
46
  spec: {
46
47
  replicas?: number;
47
- selector: {
48
- matchLabels: {
49
- [app: string]: string;
50
- };
51
- };
48
+ selector: LabelSelector;
52
49
  template?: {
53
50
  metadata: {
54
51
  labels: {
@@ -22,6 +22,7 @@ import { IAffinity, WorkloadKubeObject } from "../workload-kube-object";
22
22
  import { KubeApi } from "../kube-api";
23
23
  import type { IPodMetrics } from "./pods.api";
24
24
  import type { KubeJsonApiData } from "../kube-json-api";
25
+ import type { LabelSelector } from "../kube-object";
25
26
  export declare class StatefulSetApi extends KubeApi<StatefulSet> {
26
27
  protected getScaleApiUrl(params: {
27
28
  namespace: string;
@@ -45,11 +46,7 @@ export declare class StatefulSet extends WorkloadKubeObject {
45
46
  spec: {
46
47
  serviceName: string;
47
48
  replicas: number;
48
- selector: {
49
- matchLabels: {
50
- [key: string]: string;
51
- };
52
- };
49
+ selector: LabelSelector;
53
50
  template: {
54
51
  metadata: {
55
52
  labels: {
@@ -28,7 +28,7 @@ export interface IKubeApiLinkRef {
28
28
  apiPrefix?: string;
29
29
  apiVersion: string;
30
30
  resource: string;
31
- name: string;
31
+ name?: string;
32
32
  namespace?: string;
33
33
  }
34
34
  export interface IKubeApiParsed extends IKubeApiLinkRef {
@@ -37,4 +37,4 @@ export interface IKubeApiParsed extends IKubeApiLinkRef {
37
37
  apiVersionWithGroup: string;
38
38
  }
39
39
  export declare function parseKubeApi(path: string): IKubeApiParsed;
40
- export declare function createKubeApiURL(ref: IKubeApiLinkRef): string;
40
+ export declare function createKubeApiURL({ apiPrefix, resource, apiVersion, name, namespace }: IKubeApiLinkRef): string;
@@ -24,9 +24,14 @@ import { KubeJsonApi, KubeJsonApiData } from "./kube-json-api";
24
24
  import type { RequestInit } from "node-fetch";
25
25
  import AbortController from "abort-controller";
26
26
  import type { Patch } from "rfc6902";
27
+ /**
28
+ * The options used for creating a `KubeApi`
29
+ */
27
30
  export interface IKubeApiOptions<T extends KubeObject> {
28
31
  /**
29
32
  * base api-path for listing all resources, e.g. "/api/v1/pods"
33
+ *
34
+ * If not specified then will be the one on the `objectConstructor`
30
35
  */
31
36
  apiBase?: string;
32
37
  /**
@@ -36,11 +41,29 @@ export interface IKubeApiOptions<T extends KubeObject> {
36
41
  * This option only has effect if checkPreferredVersion is true.
37
42
  */
38
43
  fallbackApiBases?: string[];
44
+ /**
45
+ * If `true` then will check all declared apiBases against the kube api server
46
+ * for the first accepted one.
47
+ */
48
+ checkPreferredVersion?: boolean;
49
+ /**
50
+ * The constructor for the kube objects returned from the API
51
+ */
39
52
  objectConstructor: KubeObjectConstructor<T>;
53
+ /**
54
+ * The api instance to use for making requests
55
+ *
56
+ * @default apiKube
57
+ */
40
58
  request?: KubeJsonApi;
59
+ /**
60
+ * @deprecated should be specified by `objectConstructor`
61
+ */
41
62
  isNamespaced?: boolean;
63
+ /**
64
+ * @deprecated should be specified by `objectConstructor`
65
+ */
42
66
  kind?: string;
43
- checkPreferredVersion?: boolean;
44
67
  }
45
68
  export interface IKubeApiQueryParams {
46
69
  watch?: boolean | number;
@@ -81,6 +104,9 @@ export declare type PropagationPolicy = undefined | "Orphan" | "Foreground" | "B
81
104
  */
82
105
  export interface IKubeApiCluster extends ILocalKubeApiConfig {
83
106
  }
107
+ export declare type PartialKubeObject<T extends KubeObject> = Partial<Omit<T, "metadata">> & {
108
+ metadata?: Partial<T["metadata"]>;
109
+ };
84
110
  export interface IRemoteKubeApiConfig {
85
111
  cluster: {
86
112
  server: string;
@@ -129,11 +155,11 @@ export interface DeleteResourceDescriptor extends ResourceDescriptor {
129
155
  export declare class KubeApi<T extends KubeObject> {
130
156
  protected options: IKubeApiOptions<T>;
131
157
  readonly kind: string;
132
- readonly apiBase: string;
133
- readonly apiPrefix: string;
134
- readonly apiGroup: string;
135
158
  readonly apiVersion: string;
136
- readonly apiVersionPreferred?: string;
159
+ apiBase: string;
160
+ apiPrefix: string;
161
+ apiGroup: string;
162
+ apiVersionPreferred?: string;
137
163
  readonly apiResource: string;
138
164
  readonly isNamespaced: boolean;
139
165
  objectConstructor: KubeObjectConstructor<T>;
@@ -156,14 +182,15 @@ export declare class KubeApi<T extends KubeObject> {
156
182
  setResourceVersion(namespace: string, newVersion: string): void;
157
183
  getResourceVersion(namespace?: string): string;
158
184
  refreshResourceVersion(params?: KubeApiListOptions): Promise<T[]>;
185
+ private computeApiBase;
159
186
  getUrl({ name, namespace }?: Partial<ResourceDescriptor>, query?: Partial<IKubeApiQueryParams>): string;
160
187
  protected normalizeQuery(query?: Partial<IKubeApiQueryParams>): Partial<IKubeApiQueryParams>;
161
188
  protected parseResponse(data: unknown, namespace?: string): T | T[] | null;
162
189
  list({ namespace, reqInit }?: KubeApiListOptions, query?: IKubeApiQueryParams): Promise<T[] | null>;
163
190
  get(desc: ResourceDescriptor, query?: IKubeApiQueryParams): Promise<T | null>;
164
- create({ name, namespace }: Partial<ResourceDescriptor>, data?: Partial<T>): Promise<T | null>;
165
- update({ name, namespace }: ResourceDescriptor, data: Partial<T>): Promise<T | null>;
166
- patch(desc: ResourceDescriptor, data?: Partial<T> | Patch, strategy?: KubeApiPatchType): Promise<T | null>;
191
+ create({ name, namespace }: Partial<ResourceDescriptor>, data?: PartialKubeObject<T>): Promise<T | null>;
192
+ update({ name, namespace }: ResourceDescriptor, data: PartialKubeObject<T>): Promise<T | null>;
193
+ patch(desc: ResourceDescriptor, data?: PartialKubeObject<T> | Patch, strategy?: KubeApiPatchType): Promise<T>;
167
194
  delete({ propagationPolicy, ...desc }: DeleteResourceDescriptor): Promise<KubeJsonApiData>;
168
195
  getWatchUrl(namespace?: string, query?: IKubeApiQueryParams): string;
169
196
  watch(opts?: KubeApiWatchOptions): () => void;
@@ -20,7 +20,6 @@
20
20
  */
21
21
  import { JsonApi, JsonApiData, JsonApiError } from "./json-api";
22
22
  import type { Response } from "node-fetch";
23
- import type { Cluster } from "../../main/cluster";
24
23
  export interface KubeJsonApiListMetadata {
25
24
  resourceVersion: string;
26
25
  selfLink?: string;
@@ -64,6 +63,6 @@ export interface KubeJsonApiError extends JsonApiError {
64
63
  };
65
64
  }
66
65
  export declare class KubeJsonApi extends JsonApi<KubeJsonApiData> {
67
- static forCluster(cluster: Cluster): KubeJsonApi;
66
+ static forCluster(clusterId: string): KubeJsonApi;
68
67
  protected parseError(error: KubeJsonApiError | any, res: Response): string[];
69
68
  }
@@ -81,6 +81,28 @@ export declare class KubeCreationError extends Error {
81
81
  data: any;
82
82
  constructor(message: string, data: any);
83
83
  }
84
+ export declare type LabelMatchExpression = {
85
+ /**
86
+ * The label key that the selector applies to.
87
+ */
88
+ key: string;
89
+ } & ({
90
+ /**
91
+ * This represents the key's relationship to a set of values.
92
+ */
93
+ operator: "Exists" | "DoesNotExist";
94
+ values?: undefined;
95
+ } | {
96
+ operator: "In" | "NotIn";
97
+ /**
98
+ * The set of values for to match according to the operator for the label.
99
+ */
100
+ values: string[];
101
+ });
102
+ export interface LabelSelector {
103
+ matchLabels?: Record<string, string | undefined>;
104
+ matchExpressions?: LabelMatchExpression[];
105
+ }
84
106
  export declare class KubeObject<Metadata extends KubeObjectMetadata = KubeObjectMetadata, Status = any, Spec = any> implements ItemObject {
85
107
  static readonly kind?: string;
86
108
  static readonly namespaced?: boolean;
@@ -27,13 +27,13 @@ export declare enum RoutingErrorType {
27
27
  NO_EXTENSION_ID = "no-ext-id",
28
28
  MISSING_EXTENSION = "missing-ext"
29
29
  }
30
- export declare class RoutingError extends Error {
30
+ export declare class RoutingError<Query> extends Error {
31
31
  type: RoutingErrorType;
32
- url: Url;
32
+ url: Url<Query>;
33
33
  /**
34
34
  * Will be set if the routing error originated in an extension route table
35
35
  */
36
36
  extensionName?: string;
37
- constructor(type: RoutingErrorType, url: Url);
37
+ constructor(type: RoutingErrorType, url: Url<Query>);
38
38
  toString(): string;
39
39
  }
@@ -63,20 +63,20 @@ export declare abstract class LensProtocolRouter extends Singleton {
63
63
  * @param url the parsed URL that initiated the `lens://` protocol
64
64
  * @returns true if a route has been found
65
65
  */
66
- protected _routeToInternal(url: Url): RouteAttempt;
66
+ protected _routeToInternal(url: Url<Record<string, string>>): RouteAttempt;
67
67
  /**
68
68
  * match against all matched URIs, returning either the first exact match or
69
69
  * the most specific match if none are exact.
70
70
  * @param routes the array of path schemas, handler pairs to match against
71
71
  * @param url the url (in its current state)
72
72
  */
73
- protected _findMatchingRoute(routes: Iterable<[string, RouteHandler]>, url: Url): null | [match<Record<string, string>>, RouteHandler];
73
+ protected _findMatchingRoute(routes: Iterable<[string, RouteHandler]>, url: Url<Record<string, string>>): null | [match<Record<string, string>>, RouteHandler];
74
74
  /**
75
75
  * find the most specific matching handler and call it
76
76
  * @param routes the array of (path schemas, handler) pairs to match against
77
77
  * @param url the url (in its current state)
78
78
  */
79
- protected _route(routes: Iterable<[string, RouteHandler]>, url: Url, extensionName?: string): RouteAttempt;
79
+ protected _route(routes: Iterable<[string, RouteHandler]>, url: Url<Record<string, string>>, extensionName?: string): RouteAttempt;
80
80
  /**
81
81
  * Tries to find the matching LensExtension instance
82
82
  *
@@ -84,7 +84,7 @@ export declare abstract class LensProtocolRouter extends Singleton {
84
84
  * @param url the protocol request URI that was "open"-ed
85
85
  * @returns either the found name or the instance of `LensExtension`
86
86
  */
87
- protected _findMatchingExtensionByName(url: Url): Promise<LensExtension | string>;
87
+ protected _findMatchingExtensionByName(url: Url<Record<string, string>>): Promise<LensExtension | string>;
88
88
  /**
89
89
  * Find a matching extension by the first one or two path segments of `url` and then try to `_route`
90
90
  * its correspondingly registered handlers.
@@ -95,7 +95,7 @@ export declare abstract class LensProtocolRouter extends Singleton {
95
95
  * Note: this function modifies its argument, do not reuse
96
96
  * @param url the protocol request URI that was "open"-ed
97
97
  */
98
- protected _routeToExtension(url: Url): Promise<RouteAttempt>;
98
+ protected _routeToExtension(url: Url<Record<string, string>>): Promise<RouteAttempt>;
99
99
  /**
100
100
  * Add a handler under the `lens://app` tree of routing.
101
101
  * @param pathSchema the URI path schema to match against for this handler