kubernetes-fluent-client 1.0.0 → 1.1.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.
package/README.md CHANGED
@@ -6,10 +6,10 @@
6
6
  [![Npm package total downloads](https://badgen.net/npm/dt/kubernetes-fluent-client)](https://npmjs.com/package/kubernetes-fluent-client)
7
7
 
8
8
  ```typescript
9
- import { Kube } from "kubernetes-fluent-client";
9
+ import { K8s, kind } from "kubernetes-fluent-client";
10
10
 
11
11
  async function main() {
12
- const pods = await Kube(kind.Pod).Get();
12
+ const pods = await K8s(kind.Pod).Get();
13
13
  console.log(pods);
14
14
  }
15
15
  ```
@@ -1,11 +1,11 @@
1
1
  import { KubernetesObject } from "@kubernetes/client-node";
2
2
  import { GenericClass } from "../types";
3
- import { Filters, KubeInit } from "./types";
3
+ import { Filters, K8sInit } from "./types";
4
4
  /**
5
5
  * Kubernetes fluent API inspired by Kubectl. Pass in a model, then call filters and actions on it.
6
6
  *
7
7
  * @param model - the model to use for the API
8
8
  * @param filters - (optional) filter overrides, can also be chained
9
9
  */
10
- export declare function Kube<T extends GenericClass, K extends KubernetesObject = InstanceType<T>>(model: T, filters?: Filters): KubeInit<K>;
11
- //# sourceMappingURL=kube.d.ts.map
10
+ export declare function K8s<T extends GenericClass, K extends KubernetesObject = InstanceType<T>>(model: T, filters?: Filters): K8sInit<K>;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fluent/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKjF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAsB,MAAM,SAAS,CAAC;AAI/D;;;;;GAKG;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,CAAC,CAuGZ"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // SPDX-FileCopyrightText: 2023-Present The Pepr Authors
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.Kube = void 0;
5
+ exports.K8s = void 0;
6
6
  const http_status_codes_1 = require("http-status-codes");
7
7
  const kinds_1 = require("../kinds");
8
8
  const utils_1 = require("./utils");
@@ -13,7 +13,7 @@ const watch_1 = require("./watch");
13
13
  * @param model - the model to use for the API
14
14
  * @param filters - (optional) filter overrides, can also be chained
15
15
  */
16
- function Kube(model, filters = {}) {
16
+ function K8s(model, filters = {}) {
17
17
  const withFilters = { WithField, WithLabel, Get, Delete, Watch };
18
18
  const matchedKind = filters.kindOverride || (0, kinds_1.modelToGroupVersionKind)(model.name);
19
19
  function InNamespace(namespaces) {
@@ -56,7 +56,7 @@ function Kube(model, filters = {}) {
56
56
  }
57
57
  filters.name = name;
58
58
  }
59
- return (0, utils_1.kubeExec)(model, filters, "GET");
59
+ return (0, utils_1.k8sExec)(model, filters, "GET");
60
60
  }
61
61
  async function Delete(filter) {
62
62
  if (typeof filter === "string") {
@@ -67,7 +67,7 @@ function Kube(model, filters = {}) {
67
67
  }
68
68
  try {
69
69
  // Try to delete the resource
70
- await (0, utils_1.kubeExec)(model, filters, "DELETE");
70
+ await (0, utils_1.k8sExec)(model, filters, "DELETE");
71
71
  }
72
72
  catch (e) {
73
73
  // If the resource doesn't exist, ignore the error
@@ -79,22 +79,22 @@ function Kube(model, filters = {}) {
79
79
  }
80
80
  async function Apply(resource) {
81
81
  syncFilters(resource);
82
- return (0, utils_1.kubeExec)(model, filters, "APPLY", resource);
82
+ return (0, utils_1.k8sExec)(model, filters, "APPLY", resource);
83
83
  }
84
84
  async function Create(resource) {
85
85
  syncFilters(resource);
86
- return (0, utils_1.kubeExec)(model, filters, "POST", resource);
86
+ return (0, utils_1.k8sExec)(model, filters, "POST", resource);
87
87
  }
88
88
  async function Patch(payload) {
89
89
  // If there are no operations, throw an error
90
90
  if (payload.length < 1) {
91
91
  throw new Error("No operations specified");
92
92
  }
93
- return (0, utils_1.kubeExec)(model, filters, "PATCH", payload);
93
+ return (0, utils_1.k8sExec)(model, filters, "PATCH", payload);
94
94
  }
95
95
  async function Watch(callback) {
96
96
  await (0, watch_1.ExecWatch)(model, filters, callback);
97
97
  }
98
98
  return { InNamespace, Apply, Create, Patch, ...withFilters };
99
99
  }
100
- exports.Kube = Kube;
100
+ exports.K8s = K8s;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/fluent/index.test.ts"],"names":[],"mappings":""}
@@ -2,19 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const globals_1 = require("@jest/globals");
4
4
  const upstream_1 = require("../upstream");
5
- const kube_1 = require("./kube");
5
+ const _1 = require(".");
6
6
  const utils_1 = require("./utils");
7
7
  // Setup mocks
8
8
  globals_1.jest.mock("./utils");
9
9
  (0, globals_1.describe)("Kube", () => {
10
10
  const fakeResource = { metadata: { name: "fake", namespace: "default" } };
11
- const mockedKubeExec = globals_1.jest.mocked(utils_1.kubeExec).mockResolvedValue(fakeResource);
11
+ const mockedKubeExec = globals_1.jest.mocked(utils_1.k8sExec).mockResolvedValue(fakeResource);
12
12
  (0, globals_1.beforeEach)(() => {
13
13
  // Clear all instances and calls to constructor and all methods:
14
14
  mockedKubeExec.mockClear();
15
15
  });
16
16
  (0, globals_1.it)("should create a resource", async () => {
17
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
17
+ const kube = (0, _1.K8s)(upstream_1.Pod);
18
18
  const result = await kube.Create(fakeResource);
19
19
  (0, globals_1.expect)(result).toEqual(fakeResource);
20
20
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
@@ -23,7 +23,7 @@ globals_1.jest.mock("./utils");
23
23
  }), "POST", fakeResource);
24
24
  });
25
25
  (0, globals_1.it)("should delete a resource", async () => {
26
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
26
+ const kube = (0, _1.K8s)(upstream_1.Pod);
27
27
  await kube.Delete(fakeResource);
28
28
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
29
29
  name: "fake",
@@ -34,13 +34,13 @@ globals_1.jest.mock("./utils");
34
34
  const patchOperations = [
35
35
  { op: "replace", path: "/metadata/name", value: "new-fake" },
36
36
  ];
37
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
37
+ const kube = (0, _1.K8s)(upstream_1.Pod);
38
38
  const result = await kube.Patch(patchOperations);
39
39
  (0, globals_1.expect)(result).toEqual(fakeResource);
40
40
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, {}, "PATCH", patchOperations);
41
41
  });
42
42
  (0, globals_1.it)("should filter with WithField", async () => {
43
- const kube = (0, kube_1.Kube)(upstream_1.Pod).WithField("metadata.name", "fake");
43
+ const kube = (0, _1.K8s)(upstream_1.Pod).WithField("metadata.name", "fake");
44
44
  await kube.Get();
45
45
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
46
46
  fields: {
@@ -49,7 +49,7 @@ globals_1.jest.mock("./utils");
49
49
  }), "GET");
50
50
  });
51
51
  (0, globals_1.it)("should filter with WithLabel", async () => {
52
- const kube = (0, kube_1.Kube)(upstream_1.Pod).WithLabel("app", "fakeApp");
52
+ const kube = (0, _1.K8s)(upstream_1.Pod).WithLabel("app", "fakeApp");
53
53
  await kube.Get();
54
54
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
55
55
  labels: {
@@ -58,23 +58,23 @@ globals_1.jest.mock("./utils");
58
58
  }), "GET");
59
59
  });
60
60
  (0, globals_1.it)("should use InNamespace", async () => {
61
- const kube = (0, kube_1.Kube)(upstream_1.Pod).InNamespace("fakeNamespace");
61
+ const kube = (0, _1.K8s)(upstream_1.Pod).InNamespace("fakeNamespace");
62
62
  await kube.Get();
63
63
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
64
64
  namespace: "fakeNamespace",
65
65
  }), "GET");
66
66
  });
67
67
  (0, globals_1.it)("should throw an error if namespace is already specified", async () => {
68
- const kube = (0, kube_1.Kube)(upstream_1.Pod, { namespace: "default" });
68
+ const kube = (0, _1.K8s)(upstream_1.Pod, { namespace: "default" });
69
69
  (0, globals_1.expect)(() => kube.InNamespace("fakeNamespace")).toThrow("Namespace already specified: default");
70
70
  });
71
71
  (0, globals_1.it)("should handle Delete when the resource doesn't exist", async () => {
72
72
  mockedKubeExec.mockRejectedValueOnce({ status: 404 }); // Not Found on first call
73
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
73
+ const kube = (0, _1.K8s)(upstream_1.Pod);
74
74
  await (0, globals_1.expect)(kube.Delete("fakeResource")).resolves.toBeUndefined();
75
75
  });
76
76
  (0, globals_1.it)("should handle Get", async () => {
77
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
77
+ const kube = (0, _1.K8s)(upstream_1.Pod);
78
78
  const result = await kube.Get("fakeResource");
79
79
  (0, globals_1.expect)(result).toEqual(fakeResource);
80
80
  (0, globals_1.expect)(mockedKubeExec).toHaveBeenCalledWith(upstream_1.Pod, globals_1.expect.objectContaining({
@@ -82,11 +82,11 @@ globals_1.jest.mock("./utils");
82
82
  }), "GET");
83
83
  });
84
84
  (0, globals_1.it)("should thrown an error if Get is called with a name and filters are already specified a name", async () => {
85
- const kube = (0, kube_1.Kube)(upstream_1.Pod, { name: "fake" });
85
+ const kube = (0, _1.K8s)(upstream_1.Pod, { name: "fake" });
86
86
  await (0, globals_1.expect)(kube.Get("fakeResource")).rejects.toThrow("Name already specified: fake");
87
87
  });
88
88
  (0, globals_1.it)("should throw an error if no patch operations provided", async () => {
89
- const kube = (0, kube_1.Kube)(upstream_1.Pod);
89
+ const kube = (0, _1.K8s)(upstream_1.Pod);
90
90
  await (0, globals_1.expect)(kube.Patch([])).rejects.toThrow("No operations specified");
91
91
  });
92
92
  });
@@ -21,7 +21,7 @@ export type GetFunction<K extends KubernetesObject> = {
21
21
  (): Promise<KubernetesListObject<K>>;
22
22
  (name: string): Promise<K>;
23
23
  };
24
- export type KubeFilteredActions<K extends KubernetesObject> = {
24
+ export type K8sFilteredActions<K extends KubernetesObject> = {
25
25
  /**
26
26
  * Get the resource or resources matching the filters.
27
27
  * If no filters are specified, all resources will be returned.
@@ -41,7 +41,7 @@ export type KubeFilteredActions<K extends KubernetesObject> = {
41
41
  */
42
42
  Watch: (callback: (payload: K, phase: WatchPhase) => void) => Promise<void>;
43
43
  };
44
- export type KubeUnfilteredActions<K extends KubernetesObject> = {
44
+ export type K8sUnfilteredActions<K extends KubernetesObject> = {
45
45
  /**
46
46
  * Perform a server-side apply of the provided K8s resource.
47
47
  *
@@ -66,7 +66,7 @@ export type KubeUnfilteredActions<K extends KubernetesObject> = {
66
66
  */
67
67
  Patch: (payload: Operation[]) => Promise<K>;
68
68
  };
69
- export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K> & {
69
+ export type K8sWithFilters<K extends KubernetesObject> = K8sFilteredActions<K> & {
70
70
  /**
71
71
  * Filter the query by the given field.
72
72
  * Note multiple calls to this method will result in an AND condition. e.g.
@@ -84,7 +84,7 @@ export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K>
84
84
  * @param value The field value
85
85
  * @returns
86
86
  */
87
- WithField: <P extends Paths<K>>(key: P, value?: string) => KubeWithFilters<K>;
87
+ WithField: <P extends Paths<K>>(key: P, value?: string) => K8sWithFilters<K>;
88
88
  /**
89
89
  * Filter the query by the given label. If no value is specified, the label simply must exist.
90
90
  * Note multiple calls to this method will result in an AND condition. e.g.
@@ -101,16 +101,16 @@ export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K>
101
101
  * @param key The label key
102
102
  * @param value (optional) The label value
103
103
  */
104
- WithLabel: (key: string, value?: string) => KubeWithFilters<K>;
104
+ WithLabel: (key: string, value?: string) => K8sWithFilters<K>;
105
105
  };
106
- export type KubeInit<K extends KubernetesObject> = KubeWithFilters<K> & KubeUnfilteredActions<K> & {
106
+ export type K8sInit<K extends KubernetesObject> = K8sWithFilters<K> & K8sUnfilteredActions<K> & {
107
107
  /**
108
108
  * Filter the query by the given namespace.
109
109
  *
110
110
  * @param namespace
111
111
  * @returns
112
112
  */
113
- InNamespace: (namespace: string) => KubeWithFilters<K>;
113
+ InNamespace: (namespace: string) => K8sWithFilters<K>;
114
114
  };
115
115
  export type WatchAction<T extends GenericClass, K extends KubernetesObject = InstanceType<T>> = (update: K, phase: WatchPhase) => Promise<void> | void;
116
116
  type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${"" extends P ? "" : "."}${P}` : never : never;
@@ -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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"}
@@ -23,9 +23,9 @@ export declare function pathBuilder<T extends GenericClass>(serverUrl: string, m
23
23
  * @param method
24
24
  * @returns
25
25
  */
26
- export declare function kubeCfg(method: FetchMethods): Promise<{
26
+ export declare function k8sCfg(method: FetchMethods): Promise<{
27
27
  opts: import("node-fetch").RequestInit;
28
28
  serverUrl: string;
29
29
  }>;
30
- export declare function kubeExec<T extends GenericClass, K>(model: T, filters: Filters, method: FetchMethods, payload?: K | unknown): Promise<K>;
30
+ export declare function k8sExec<T extends GenericClass, K>(model: T, filters: Filters, method: FetchMethods, payload?: K | unknown): Promise<K>;
31
31
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fluent/utils.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIhD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,WAAW,UAAQ,OAsDpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,YAAY;;;GAqBjD;AAED,wBAAsB,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EACtD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,cA8BtB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fluent/utils.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIhD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,WAAW,UAAQ,OAsDpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY;;;GAqBhD;AAED,wBAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,EACrD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,cA8BtB"}
@@ -2,7 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  // SPDX-FileCopyrightText: 2023-Present The Pepr Authors
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.kubeExec = exports.kubeCfg = exports.pathBuilder = void 0;
5
+ exports.k8sExec = exports.k8sCfg = exports.pathBuilder = void 0;
6
6
  const client_node_1 = require("@kubernetes/client-node");
7
7
  const url_1 = require("url");
8
8
  const fetch_1 = require("../fetch");
@@ -69,7 +69,7 @@ exports.pathBuilder = pathBuilder;
69
69
  * @param method
70
70
  * @returns
71
71
  */
72
- async function kubeCfg(method) {
72
+ async function k8sCfg(method) {
73
73
  const kubeConfig = new client_node_1.KubeConfig();
74
74
  kubeConfig.loadFromDefault();
75
75
  const cluster = kubeConfig.getCurrentCluster();
@@ -88,9 +88,9 @@ async function kubeCfg(method) {
88
88
  });
89
89
  return { opts, serverUrl: cluster.server };
90
90
  }
91
- exports.kubeCfg = kubeCfg;
92
- async function kubeExec(model, filters, method, payload) {
93
- const { opts, serverUrl } = await kubeCfg(method);
91
+ exports.k8sCfg = k8sCfg;
92
+ async function k8sExec(model, filters, method, payload) {
93
+ const { opts, serverUrl } = await k8sCfg(method);
94
94
  const url = pathBuilder(serverUrl, model, filters, method === "POST");
95
95
  switch (opts.method) {
96
96
  case "PATCH":
@@ -113,4 +113,4 @@ async function kubeExec(model, filters, method, payload) {
113
113
  }
114
114
  throw resp;
115
115
  }
116
- exports.kubeExec = kubeExec;
116
+ exports.k8sExec = k8sExec;
@@ -67,7 +67,7 @@ globals_1.jest.mock("../fetch");
67
67
  status: 200,
68
68
  statusText: "OK",
69
69
  });
70
- const result = await (0, utils_1.kubeExec)(upstream_1.Pod, fakeFilters, fakeMethod, fakePayload);
70
+ const result = await (0, utils_1.k8sExec)(upstream_1.Pod, fakeFilters, fakeMethod, fakePayload);
71
71
  (0, globals_1.expect)(result).toEqual(fakePayload);
72
72
  (0, globals_1.expect)(mockedFetch).toHaveBeenCalledWith(fakeUrl, globals_1.expect.objectContaining(fakeOpts));
73
73
  });
@@ -80,7 +80,7 @@ globals_1.jest.mock("../fetch");
80
80
  status: fakeStatus,
81
81
  statusText: fakeStatusText,
82
82
  });
83
- await (0, globals_1.expect)((0, utils_1.kubeExec)(upstream_1.Pod, fakeFilters, fakeMethod, fakePayload)).rejects.toEqual(globals_1.expect.objectContaining({
83
+ await (0, globals_1.expect)((0, utils_1.k8sExec)(upstream_1.Pod, fakeFilters, fakeMethod, fakePayload)).rejects.toEqual(globals_1.expect.objectContaining({
84
84
  status: fakeStatus,
85
85
  statusText: fakeStatusText,
86
86
  }));
@@ -14,7 +14,7 @@ const utils_1 = require("./utils");
14
14
  */
15
15
  async function ExecWatch(model, filters, callback) {
16
16
  // Build the path and query params for the resource, excluding the name
17
- const { opts, serverUrl } = await (0, utils_1.kubeCfg)("GET");
17
+ const { opts, serverUrl } = await (0, utils_1.k8sCfg)("GET");
18
18
  const url = (0, utils_1.pathBuilder)(serverUrl, model, filters, true);
19
19
  // Enable the watch query param
20
20
  url.searchParams.set("watch", "true");
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as kind from "./upstream";
2
- /** given is a collection of K8s types to be used within a Kube call: `Kube(kind.Secret).Apply({})`. `a` may also be used in it's place */
2
+ /** kind is a collection of K8s types to be used within a K8s call: `K8s(kind.Secret).Apply({})`. */
3
3
  export { kind };
4
4
  export { fetch } from "./fetch";
5
- export { Kube } from "./fluent/kube";
6
- export { modelToGroupVersionKind, RegisterKind } from "./kinds";
5
+ export { K8s } from "./fluent";
6
+ export { RegisterKind, modelToGroupVersionKind } from "./kinds";
7
7
  export * from "./types";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,0IAA0I;AAC1I,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEhE,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,oGAAoG;AACpG,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEhE,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
28
28
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
29
29
  };
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.RegisterKind = exports.modelToGroupVersionKind = exports.Kube = exports.fetch = exports.kind = void 0;
31
+ exports.modelToGroupVersionKind = exports.RegisterKind = exports.K8s = exports.fetch = exports.kind = void 0;
32
32
  // Export kinds as a single object
33
33
  const kind = __importStar(require("./upstream"));
34
34
  exports.kind = kind;
@@ -36,10 +36,10 @@ exports.kind = kind;
36
36
  var fetch_1 = require("./fetch");
37
37
  Object.defineProperty(exports, "fetch", { enumerable: true, get: function () { return fetch_1.fetch; } });
38
38
  // Export the fluent API entrypoint
39
- var kube_1 = require("./fluent/kube");
40
- Object.defineProperty(exports, "Kube", { enumerable: true, get: function () { return kube_1.Kube; } });
39
+ var fluent_1 = require("./fluent");
40
+ Object.defineProperty(exports, "K8s", { enumerable: true, get: function () { return fluent_1.K8s; } });
41
41
  // Export helpers for working with K8s types
42
42
  var kinds_1 = require("./kinds");
43
- Object.defineProperty(exports, "modelToGroupVersionKind", { enumerable: true, get: function () { return kinds_1.modelToGroupVersionKind; } });
44
43
  Object.defineProperty(exports, "RegisterKind", { enumerable: true, get: function () { return kinds_1.RegisterKind; } });
44
+ Object.defineProperty(exports, "modelToGroupVersionKind", { enumerable: true, get: function () { return kinds_1.modelToGroupVersionKind; } });
45
45
  __exportStar(require("./types"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kubernetes-fluent-client",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "A @kubernetes/client-node fluent API wrapper that leverages K8s Server Side Apply",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -2,15 +2,15 @@ import { beforeEach, describe, expect, it, jest } from "@jest/globals";
2
2
  import { Operation } from "fast-json-patch";
3
3
 
4
4
  import { Pod } from "../upstream";
5
- import { Kube } from "./kube";
6
- import { kubeExec } from "./utils";
5
+ import { K8s } from ".";
6
+ import { k8sExec } from "./utils";
7
7
 
8
8
  // Setup mocks
9
9
  jest.mock("./utils");
10
10
 
11
11
  describe("Kube", () => {
12
12
  const fakeResource = { metadata: { name: "fake", namespace: "default" } };
13
- const mockedKubeExec = jest.mocked(kubeExec).mockResolvedValue(fakeResource);
13
+ const mockedKubeExec = jest.mocked(k8sExec).mockResolvedValue(fakeResource);
14
14
 
15
15
  beforeEach(() => {
16
16
  // Clear all instances and calls to constructor and all methods:
@@ -18,7 +18,7 @@ describe("Kube", () => {
18
18
  });
19
19
 
20
20
  it("should create a resource", async () => {
21
- const kube = Kube(Pod);
21
+ const kube = K8s(Pod);
22
22
  const result = await kube.Create(fakeResource);
23
23
 
24
24
  expect(result).toEqual(fakeResource);
@@ -34,7 +34,7 @@ describe("Kube", () => {
34
34
  });
35
35
 
36
36
  it("should delete a resource", async () => {
37
- const kube = Kube(Pod);
37
+ const kube = K8s(Pod);
38
38
  await kube.Delete(fakeResource);
39
39
 
40
40
  expect(mockedKubeExec).toHaveBeenCalledWith(
@@ -52,7 +52,7 @@ describe("Kube", () => {
52
52
  { op: "replace", path: "/metadata/name", value: "new-fake" },
53
53
  ];
54
54
 
55
- const kube = Kube(Pod);
55
+ const kube = K8s(Pod);
56
56
  const result = await kube.Patch(patchOperations);
57
57
 
58
58
  expect(result).toEqual(fakeResource);
@@ -60,7 +60,7 @@ describe("Kube", () => {
60
60
  });
61
61
 
62
62
  it("should filter with WithField", async () => {
63
- const kube = Kube(Pod).WithField("metadata.name", "fake");
63
+ const kube = K8s(Pod).WithField("metadata.name", "fake");
64
64
  await kube.Get();
65
65
  expect(mockedKubeExec).toHaveBeenCalledWith(
66
66
  Pod,
@@ -74,7 +74,7 @@ describe("Kube", () => {
74
74
  });
75
75
 
76
76
  it("should filter with WithLabel", async () => {
77
- const kube = Kube(Pod).WithLabel("app", "fakeApp");
77
+ const kube = K8s(Pod).WithLabel("app", "fakeApp");
78
78
  await kube.Get();
79
79
  expect(mockedKubeExec).toHaveBeenCalledWith(
80
80
  Pod,
@@ -88,7 +88,7 @@ describe("Kube", () => {
88
88
  });
89
89
 
90
90
  it("should use InNamespace", async () => {
91
- const kube = Kube(Pod).InNamespace("fakeNamespace");
91
+ const kube = K8s(Pod).InNamespace("fakeNamespace");
92
92
  await kube.Get();
93
93
  expect(mockedKubeExec).toHaveBeenCalledWith(
94
94
  Pod,
@@ -100,18 +100,18 @@ describe("Kube", () => {
100
100
  });
101
101
 
102
102
  it("should throw an error if namespace is already specified", async () => {
103
- const kube = Kube(Pod, { namespace: "default" });
103
+ const kube = K8s(Pod, { namespace: "default" });
104
104
  expect(() => kube.InNamespace("fakeNamespace")).toThrow("Namespace already specified: default");
105
105
  });
106
106
 
107
107
  it("should handle Delete when the resource doesn't exist", async () => {
108
108
  mockedKubeExec.mockRejectedValueOnce({ status: 404 }); // Not Found on first call
109
- const kube = Kube(Pod);
109
+ const kube = K8s(Pod);
110
110
  await expect(kube.Delete("fakeResource")).resolves.toBeUndefined();
111
111
  });
112
112
 
113
113
  it("should handle Get", async () => {
114
- const kube = Kube(Pod);
114
+ const kube = K8s(Pod);
115
115
  const result = await kube.Get("fakeResource");
116
116
 
117
117
  expect(result).toEqual(fakeResource);
@@ -125,12 +125,12 @@ describe("Kube", () => {
125
125
  });
126
126
 
127
127
  it("should thrown an error if Get is called with a name and filters are already specified a name", async () => {
128
- const kube = Kube(Pod, { name: "fake" });
128
+ const kube = K8s(Pod, { name: "fake" });
129
129
  await expect(kube.Get("fakeResource")).rejects.toThrow("Name already specified: fake");
130
130
  });
131
131
 
132
132
  it("should throw an error if no patch operations provided", async () => {
133
- const kube = Kube(Pod);
133
+ const kube = K8s(Pod);
134
134
  await expect(kube.Patch([])).rejects.toThrow("No operations specified");
135
135
  });
136
136
  });
@@ -7,8 +7,8 @@ import { StatusCodes } from "http-status-codes";
7
7
 
8
8
  import { modelToGroupVersionKind } from "../kinds";
9
9
  import { GenericClass } from "../types";
10
- import { Filters, KubeInit, Paths, WatchAction } from "./types";
11
- import { kubeExec } from "./utils";
10
+ import { Filters, K8sInit, Paths, WatchAction } from "./types";
11
+ import { k8sExec } from "./utils";
12
12
  import { ExecWatch } from "./watch";
13
13
 
14
14
  /**
@@ -17,10 +17,10 @@ import { ExecWatch } from "./watch";
17
17
  * @param model - the model to use for the API
18
18
  * @param filters - (optional) filter overrides, can also be chained
19
19
  */
20
- export function Kube<T extends GenericClass, K extends KubernetesObject = InstanceType<T>>(
20
+ export function K8s<T extends GenericClass, K extends KubernetesObject = InstanceType<T>>(
21
21
  model: T,
22
22
  filters: Filters = {},
23
- ): KubeInit<K> {
23
+ ): K8sInit<K> {
24
24
  const withFilters = { WithField, WithLabel, Get, Delete, Watch };
25
25
  const matchedKind = filters.kindOverride || modelToGroupVersionKind(model.name);
26
26
 
@@ -76,7 +76,7 @@ export function Kube<T extends GenericClass, K extends KubernetesObject = Instan
76
76
  filters.name = name;
77
77
  }
78
78
 
79
- return kubeExec<T, K | KubernetesListObject<K>>(model, filters, "GET");
79
+ return k8sExec<T, K | KubernetesListObject<K>>(model, filters, "GET");
80
80
  }
81
81
 
82
82
  async function Delete(filter?: K | string): Promise<void> {
@@ -88,7 +88,7 @@ export function Kube<T extends GenericClass, K extends KubernetesObject = Instan
88
88
 
89
89
  try {
90
90
  // Try to delete the resource
91
- await kubeExec<T, void>(model, filters, "DELETE");
91
+ await k8sExec<T, void>(model, filters, "DELETE");
92
92
  } catch (e) {
93
93
  // If the resource doesn't exist, ignore the error
94
94
  if (e.status === StatusCodes.NOT_FOUND) {
@@ -101,12 +101,12 @@ export function Kube<T extends GenericClass, K extends KubernetesObject = Instan
101
101
 
102
102
  async function Apply(resource: K): Promise<K> {
103
103
  syncFilters(resource);
104
- return kubeExec(model, filters, "APPLY", resource);
104
+ return k8sExec(model, filters, "APPLY", resource);
105
105
  }
106
106
 
107
107
  async function Create(resource: K): Promise<K> {
108
108
  syncFilters(resource);
109
- return kubeExec(model, filters, "POST", resource);
109
+ return k8sExec(model, filters, "POST", resource);
110
110
  }
111
111
 
112
112
  async function Patch(payload: Operation[]): Promise<K> {
@@ -115,7 +115,7 @@ export function Kube<T extends GenericClass, K extends KubernetesObject = Instan
115
115
  throw new Error("No operations specified");
116
116
  }
117
117
 
118
- return kubeExec<T, K>(model, filters, "PATCH", payload);
118
+ return k8sExec<T, K>(model, filters, "PATCH", payload);
119
119
  }
120
120
 
121
121
  async function Watch(callback: WatchAction<T>): Promise<void> {
@@ -31,7 +31,7 @@ export type GetFunction<K extends KubernetesObject> = {
31
31
  (name: string): Promise<K>;
32
32
  };
33
33
 
34
- export type KubeFilteredActions<K extends KubernetesObject> = {
34
+ export type K8sFilteredActions<K extends KubernetesObject> = {
35
35
  /**
36
36
  * Get the resource or resources matching the filters.
37
37
  * If no filters are specified, all resources will be returned.
@@ -54,7 +54,7 @@ export type KubeFilteredActions<K extends KubernetesObject> = {
54
54
  Watch: (callback: (payload: K, phase: WatchPhase) => void) => Promise<void>;
55
55
  };
56
56
 
57
- export type KubeUnfilteredActions<K extends KubernetesObject> = {
57
+ export type K8sUnfilteredActions<K extends KubernetesObject> = {
58
58
  /**
59
59
  * Perform a server-side apply of the provided K8s resource.
60
60
  *
@@ -82,7 +82,7 @@ export type KubeUnfilteredActions<K extends KubernetesObject> = {
82
82
  Patch: (payload: Operation[]) => Promise<K>;
83
83
  };
84
84
 
85
- export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K> & {
85
+ export type K8sWithFilters<K extends KubernetesObject> = K8sFilteredActions<K> & {
86
86
  /**
87
87
  * Filter the query by the given field.
88
88
  * Note multiple calls to this method will result in an AND condition. e.g.
@@ -100,7 +100,7 @@ export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K>
100
100
  * @param value The field value
101
101
  * @returns
102
102
  */
103
- WithField: <P extends Paths<K>>(key: P, value?: string) => KubeWithFilters<K>;
103
+ WithField: <P extends Paths<K>>(key: P, value?: string) => K8sWithFilters<K>;
104
104
 
105
105
  /**
106
106
  * Filter the query by the given label. If no value is specified, the label simply must exist.
@@ -118,18 +118,18 @@ export type KubeWithFilters<K extends KubernetesObject> = KubeFilteredActions<K>
118
118
  * @param key The label key
119
119
  * @param value (optional) The label value
120
120
  */
121
- WithLabel: (key: string, value?: string) => KubeWithFilters<K>;
121
+ WithLabel: (key: string, value?: string) => K8sWithFilters<K>;
122
122
  };
123
123
 
124
- export type KubeInit<K extends KubernetesObject> = KubeWithFilters<K> &
125
- KubeUnfilteredActions<K> & {
124
+ export type K8sInit<K extends KubernetesObject> = K8sWithFilters<K> &
125
+ K8sUnfilteredActions<K> & {
126
126
  /**
127
127
  * Filter the query by the given namespace.
128
128
  *
129
129
  * @param namespace
130
130
  * @returns
131
131
  */
132
- InNamespace: (namespace: string) => KubeWithFilters<K>;
132
+ InNamespace: (namespace: string) => K8sWithFilters<K>;
133
133
  };
134
134
 
135
135
  export type WatchAction<T extends GenericClass, K extends KubernetesObject = InstanceType<T>> = (
@@ -7,7 +7,7 @@ import { fetch } from "../fetch";
7
7
  import { GenericClass } from "../types";
8
8
  import { ClusterRole, Ingress, Pod } from "../upstream";
9
9
  import { Filters } from "./types";
10
- import { kubeExec, pathBuilder } from "./utils";
10
+ import { k8sExec, pathBuilder } from "./utils";
11
11
 
12
12
  jest.mock("https");
13
13
  jest.mock("../fetch");
@@ -83,7 +83,7 @@ describe("kubeExec Function", () => {
83
83
  statusText: "OK",
84
84
  });
85
85
 
86
- const result = await kubeExec(Pod, fakeFilters, fakeMethod, fakePayload);
86
+ const result = await k8sExec(Pod, fakeFilters, fakeMethod, fakePayload);
87
87
 
88
88
  expect(result).toEqual(fakePayload);
89
89
  expect(mockedFetch).toHaveBeenCalledWith(fakeUrl, expect.objectContaining(fakeOpts));
@@ -100,7 +100,7 @@ describe("kubeExec Function", () => {
100
100
  statusText: fakeStatusText,
101
101
  });
102
102
 
103
- await expect(kubeExec(Pod, fakeFilters, fakeMethod, fakePayload)).rejects.toEqual(
103
+ await expect(k8sExec(Pod, fakeFilters, fakeMethod, fakePayload)).rejects.toEqual(
104
104
  expect.objectContaining({
105
105
  status: fakeStatus,
106
106
  statusText: fakeStatusText,
@@ -92,7 +92,7 @@ export function pathBuilder<T extends GenericClass>(
92
92
  * @param method
93
93
  * @returns
94
94
  */
95
- export async function kubeCfg(method: FetchMethods) {
95
+ export async function k8sCfg(method: FetchMethods) {
96
96
  const kubeConfig = new KubeConfig();
97
97
  kubeConfig.loadFromDefault();
98
98
 
@@ -115,13 +115,13 @@ export async function kubeCfg(method: FetchMethods) {
115
115
  return { opts, serverUrl: cluster.server };
116
116
  }
117
117
 
118
- export async function kubeExec<T extends GenericClass, K>(
118
+ export async function k8sExec<T extends GenericClass, K>(
119
119
  model: T,
120
120
  filters: Filters,
121
121
  method: FetchMethods,
122
122
  payload?: K | unknown,
123
123
  ) {
124
- const { opts, serverUrl } = await kubeCfg(method);
124
+ const { opts, serverUrl } = await k8sCfg(method);
125
125
  const url = pathBuilder(serverUrl, model, filters, method === "POST");
126
126
 
127
127
  switch (opts.method) {
@@ -6,7 +6,7 @@ import readline from "readline";
6
6
  import fetch from "node-fetch";
7
7
  import { GenericClass } from "../types";
8
8
  import { Filters, WatchAction, WatchPhase } from "./types";
9
- import { kubeCfg, pathBuilder } from "./utils";
9
+ import { k8sCfg, pathBuilder } from "./utils";
10
10
 
11
11
  /**
12
12
  * Execute a watch on the specified resource.
@@ -17,7 +17,7 @@ export async function ExecWatch<T extends GenericClass>(
17
17
  callback: WatchAction<T>,
18
18
  ) {
19
19
  // Build the path and query params for the resource, excluding the name
20
- const { opts, serverUrl } = await kubeCfg("GET");
20
+ const { opts, serverUrl } = await k8sCfg("GET");
21
21
  const url = pathBuilder(serverUrl, model, filters, true);
22
22
 
23
23
  // Enable the watch query param
package/src/index.ts CHANGED
@@ -4,16 +4,16 @@
4
4
  // Export kinds as a single object
5
5
  import * as kind from "./upstream";
6
6
 
7
- /** given is a collection of K8s types to be used within a Kube call: `Kube(kind.Secret).Apply({})`. `a` may also be used in it's place */
7
+ /** kind is a collection of K8s types to be used within a K8s call: `K8s(kind.Secret).Apply({})`. */
8
8
  export { kind };
9
9
 
10
10
  // Export the node-fetch wrapper
11
11
  export { fetch } from "./fetch";
12
12
 
13
13
  // Export the fluent API entrypoint
14
- export { Kube } from "./fluent/kube";
14
+ export { K8s } from "./fluent";
15
15
 
16
16
  // Export helpers for working with K8s types
17
- export { modelToGroupVersionKind, RegisterKind } from "./kinds";
17
+ export { RegisterKind, modelToGroupVersionKind } from "./kinds";
18
18
 
19
19
  export * from "./types";
@@ -1 +0,0 @@
1
- {"version":3,"file":"kube.d.ts","sourceRoot":"","sources":["../../src/fluent/kube.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKjF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,SAAS,CAAC;AAIhE;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,EACvF,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAY,GACpB,QAAQ,CAAC,CAAC,CAAC,CAuGb"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=kube.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kube.test.d.ts","sourceRoot":"","sources":["../../src/fluent/kube.test.ts"],"names":[],"mappings":""}