kubernetes-fluent-client 3.6.4-nightly.0 → 3.7.0-nightly.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fluent/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAS,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAuC,MAAM,mBAAmB,CAAC;AAKjF;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,EACtF,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAgSf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fluent/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAS,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAuC,MAAM,mBAAmB,CAAC;AAKjF;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,EACtF,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAmTf"}
@@ -16,7 +16,7 @@ import { Pod } from "../upstream.js";
16
16
  * @returns a fluent API for the model
17
17
  */
18
18
  export function K8s(model, filters = {}) {
19
- const withFilters = { WithField, WithLabel, Get, Delete, Evict, Watch, Logs };
19
+ const withFilters = { WithField, WithLabel, Get, Delete, Evict, Watch, Logs, Proxy };
20
20
  const matchedKind = filters.kindOverride || modelToGroupVersionKind(model.name);
21
21
  /**
22
22
  * @inheritdoc
@@ -256,5 +256,22 @@ export function K8s(model, filters = {}) {
256
256
  }
257
257
  throw resp;
258
258
  }
259
+ /**
260
+ * @inheritdoc
261
+ * @see {@link K8sInit.Proxy}
262
+ */
263
+ async function Proxy(name, port) {
264
+ if (name) {
265
+ if (filters.name) {
266
+ throw new Error(`Name already specified: ${filters.name}`);
267
+ }
268
+ filters.name = name;
269
+ }
270
+ const object = await k8sExec(model, filters, {
271
+ method: FetchMethods.GET,
272
+ subResourceConfig: { ProxyConfig: { port: port || "" } },
273
+ });
274
+ return `${object}`;
275
+ }
259
276
  return { InNamespace, Apply, Create, Patch, PatchStatus, Raw, ...withFilters };
260
277
  }
@@ -32,6 +32,15 @@ export type GetFunction<K extends KubernetesObject> = {
32
32
  (name: string): Promise<K>;
33
33
  };
34
34
  export type K8sFilteredActions<T extends GenericClass, K extends KubernetesObject> = {
35
+ /**
36
+ * Proxy request to the Kubernetes API for the given resource.
37
+ * This uses the `/proxy` subresource, usually for pods or services.
38
+ *
39
+ * @param name - (optional) the name of the resource to proxy
40
+ * @param port - (optional) the port to proxy to, defaults to the first port of the resource
41
+ * @returns the proxied response body as a string
42
+ */
43
+ Proxy: (name?: string, port?: string) => Promise<string>;
35
44
  /**
36
45
  * Gets the logs.
37
46
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fluent/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fluent/types.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,12 @@ export declare function prepareRequestOptions<K>(methodPayload: MethodPayload<K>
72
72
  export type MethodPayload<K> = {
73
73
  method: FetchMethods;
74
74
  payload?: K | unknown;
75
+ subResourceConfig?: SubResourceConfig;
76
+ };
77
+ export type SubResourceConfig = {
78
+ ProxyConfig?: {
79
+ port: string;
80
+ };
75
81
  };
76
82
  /**
77
83
  * Execute a request against the Kubernetes API server.
@@ -84,4 +90,14 @@ export type MethodPayload<K> = {
84
90
  * @returns the parsed JSON response
85
91
  */
86
92
  export declare function k8sExec<T extends GenericClass, K>(model: T, filters: Filters, methodPayload: MethodPayload<K>, applyCfg?: ApplyCfg): Promise<K>;
93
+ /**
94
+ * Handles subresource configuration for specific Kubernetes resources.
95
+ *
96
+ * @param kind - The kind of the Kubernetes resource (e.g., "Pod", "Service", "Node").
97
+ * @param urlPath - The base URL path to append the subresource to.
98
+ * @param subResourceConfig - The subresource configuration object.
99
+ * @returns The modified URL path with the subresource appended, or the urlPath if no subresource is configured.
100
+ * @throws Error if the kind is not supported for proxy configuration.
101
+ */
102
+ export declare function handleSubResourceConfig(kind: string, urlPath: string, subResourceConfig?: SubResourceConfig): string;
87
103
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fluent/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAS,UAAU,EAAE,MAAM,QAAQ,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtF;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkBvF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAqBvE;AACD;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMvD;AACD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,WAAW,UAAQ,OAwDpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CA+BnE;AASD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC3D,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAsBN;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EACrD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,QAAQ,GAAE,QAA2B,cAkDtC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fluent/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAS,UAAU,EAAE,MAAM,QAAQ,CAAC;AAI3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMtF;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkBvF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAqBvE;AACD;;;;GAIG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAMvD;AACD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,WAAW,UAAQ,OAwDpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CA+BnE;AASD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC3D,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAsBN;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EACrD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAC/B,QAAQ,GAAE,QAA2B,cAwDtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,MAAM,CAYR"}
@@ -230,6 +230,7 @@ export async function k8sExec(model, filters, methodPayload, applyCfg = { force:
230
230
  else if (method === FetchMethods.LOG) {
231
231
  baseUrl.pathname = `${baseUrl.pathname}/log`;
232
232
  }
233
+ baseUrl.pathname = handleSubResourceConfig(model.name, baseUrl.pathname, methodPayload.subResourceConfig);
233
234
  return {
234
235
  serverUrl: baseUrl,
235
236
  opts,
@@ -251,3 +252,26 @@ export async function k8sExec(model, filters, methodPayload, applyCfg = { force:
251
252
  }
252
253
  throw resp;
253
254
  }
255
+ /**
256
+ * Handles subresource configuration for specific Kubernetes resources.
257
+ *
258
+ * @param kind - The kind of the Kubernetes resource (e.g., "Pod", "Service", "Node").
259
+ * @param urlPath - The base URL path to append the subresource to.
260
+ * @param subResourceConfig - The subresource configuration object.
261
+ * @returns The modified URL path with the subresource appended, or the urlPath if no subresource is configured.
262
+ * @throws Error if the kind is not supported for proxy configuration.
263
+ */
264
+ export function handleSubResourceConfig(kind, urlPath, subResourceConfig) {
265
+ if (subResourceConfig && subResourceConfig.ProxyConfig) {
266
+ if (kind !== "V1Pod" && kind !== "V1Service" && kind !== "V1Node") {
267
+ throw new Error("Proxy is only supported for Pod, Service, and Node resources");
268
+ }
269
+ if (!subResourceConfig.ProxyConfig.port) {
270
+ return `${urlPath}/proxy`;
271
+ }
272
+ else {
273
+ return `${urlPath}:${subResourceConfig.ProxyConfig.port}/proxy`;
274
+ }
275
+ }
276
+ return urlPath;
277
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kubernetes-fluent-client",
3
- "version": "3.6.4-nightly.0",
3
+ "version": "3.7.0-nightly.0",
4
4
  "description": "A @kubernetes/client-node fluent API wrapper that leverages K8s Server Side Apply.",
5
5
  "bin": "./dist/cli.js",
6
6
  "main": "dist/index.js",
@@ -70,11 +70,11 @@
70
70
  "@types/urijs": "^1.19.25",
71
71
  "@types/ws": "^8.18.1",
72
72
  "@types/yargs": "17.0.33",
73
- "@typescript-eslint/eslint-plugin": "8.34.1",
74
- "@typescript-eslint/parser": "8.34.1",
73
+ "@typescript-eslint/eslint-plugin": "8.35.0",
74
+ "@typescript-eslint/parser": "8.35.0",
75
75
  "@vitest/coverage-v8": "^3.2.1",
76
76
  "command-line-args": "^6.0.1",
77
- "eslint-plugin-jsdoc": "51.2.1",
77
+ "eslint-plugin-jsdoc": "51.2.3",
78
78
  "globals": "^16.0.0",
79
79
  "husky": "^9.1.6",
80
80
  "lint-staged": "^16.0.0",
@@ -26,7 +26,7 @@ export function K8s<T extends GenericClass, K extends KubernetesObject = Instanc
26
26
  model: T,
27
27
  filters: Filters = {},
28
28
  ): K8sInit<T, K> {
29
- const withFilters = { WithField, WithLabel, Get, Delete, Evict, Watch, Logs };
29
+ const withFilters = { WithField, WithLabel, Get, Delete, Evict, Watch, Logs, Proxy };
30
30
  const matchedKind = filters.kindOverride || modelToGroupVersionKind(model.name);
31
31
 
32
32
  /**
@@ -312,5 +312,24 @@ export function K8s<T extends GenericClass, K extends KubernetesObject = Instanc
312
312
  throw resp;
313
313
  }
314
314
 
315
+ async function Proxy(name?: string, port?: string): Promise<string>;
316
+ /**
317
+ * @inheritdoc
318
+ * @see {@link K8sInit.Proxy}
319
+ */
320
+ async function Proxy(name?: string, port?: string): Promise<string> {
321
+ if (name) {
322
+ if (filters.name) {
323
+ throw new Error(`Name already specified: ${filters.name}`);
324
+ }
325
+ filters.name = name;
326
+ }
327
+ const object = await k8sExec<T, K>(model, filters, {
328
+ method: FetchMethods.GET,
329
+ subResourceConfig: { ProxyConfig: { port: port || "" } },
330
+ });
331
+ return `${object}`;
332
+ }
333
+
315
334
  return { InNamespace, Apply, Create, Patch, PatchStatus, Raw, ...withFilters };
316
335
  }
@@ -43,6 +43,15 @@ export type GetFunction<K extends KubernetesObject> = {
43
43
  };
44
44
 
45
45
  export type K8sFilteredActions<T extends GenericClass, K extends KubernetesObject> = {
46
+ /**
47
+ * Proxy request to the Kubernetes API for the given resource.
48
+ * This uses the `/proxy` subresource, usually for pods or services.
49
+ *
50
+ * @param name - (optional) the name of the resource to proxy
51
+ * @param port - (optional) the port to proxy to, defaults to the first port of the resource
52
+ * @returns the proxied response body as a string
53
+ */
54
+ Proxy: (name?: string, port?: string) => Promise<string>;
46
55
  /**
47
56
  * Gets the logs.
48
57
  *
@@ -255,6 +255,13 @@ export function prepareRequestOptions<K>(
255
255
  export type MethodPayload<K> = {
256
256
  method: FetchMethods;
257
257
  payload?: K | unknown;
258
+ subResourceConfig?: SubResourceConfig;
259
+ };
260
+
261
+ export type SubResourceConfig = {
262
+ ProxyConfig?: {
263
+ port: string;
264
+ };
258
265
  };
259
266
 
260
267
  /**
@@ -290,6 +297,12 @@ export async function k8sExec<T extends GenericClass, K>(
290
297
  baseUrl.pathname = `${baseUrl.pathname}/log`;
291
298
  }
292
299
 
300
+ baseUrl.pathname = handleSubResourceConfig(
301
+ model.name,
302
+ baseUrl.pathname,
303
+ methodPayload.subResourceConfig,
304
+ );
305
+
293
306
  return {
294
307
  serverUrl: baseUrl,
295
308
  opts,
@@ -322,3 +335,30 @@ export async function k8sExec<T extends GenericClass, K>(
322
335
 
323
336
  throw resp;
324
337
  }
338
+
339
+ /**
340
+ * Handles subresource configuration for specific Kubernetes resources.
341
+ *
342
+ * @param kind - The kind of the Kubernetes resource (e.g., "Pod", "Service", "Node").
343
+ * @param urlPath - The base URL path to append the subresource to.
344
+ * @param subResourceConfig - The subresource configuration object.
345
+ * @returns The modified URL path with the subresource appended, or the urlPath if no subresource is configured.
346
+ * @throws Error if the kind is not supported for proxy configuration.
347
+ */
348
+ export function handleSubResourceConfig(
349
+ kind: string,
350
+ urlPath: string,
351
+ subResourceConfig?: SubResourceConfig,
352
+ ): string {
353
+ if (subResourceConfig && subResourceConfig.ProxyConfig) {
354
+ if (kind !== "V1Pod" && kind !== "V1Service" && kind !== "V1Node") {
355
+ throw new Error("Proxy is only supported for Pod, Service, and Node resources");
356
+ }
357
+ if (!subResourceConfig.ProxyConfig.port) {
358
+ return `${urlPath}/proxy`;
359
+ } else {
360
+ return `${urlPath}:${subResourceConfig.ProxyConfig.port}/proxy`;
361
+ }
362
+ }
363
+ return urlPath;
364
+ }