kubernetes-fluent-client 3.6.4 → 3.7.0-nightly.1
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/dist/cli.js +5 -0
- package/dist/fluent/index.d.ts.map +1 -1
- package/dist/fluent/index.js +18 -1
- package/dist/fluent/types.d.ts +9 -0
- package/dist/fluent/types.d.ts.map +1 -1
- package/dist/fluent/utils.d.ts +16 -0
- package/dist/fluent/utils.d.ts.map +1 -1
- package/dist/fluent/utils.js +24 -0
- package/dist/generate.d.ts +1 -0
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +3 -2
- package/dist/postProcessing.d.ts +2 -2
- package/dist/postProcessing.d.ts.map +1 -1
- package/dist/postProcessing.js +7 -7
- package/package.json +4 -4
- package/src/cli.ts +6 -0
- package/src/fluent/index.ts +20 -1
- package/src/fluent/types.ts +9 -0
- package/src/fluent/utils.ts +40 -0
- package/src/generate.ts +4 -2
- package/src/postProcessing.ts +7 -8
package/dist/cli.js
CHANGED
|
@@ -20,6 +20,10 @@ void yargs(hideBin(process.argv))
|
|
|
20
20
|
.positional("directory", {
|
|
21
21
|
describe: "the directory to output the generated types to",
|
|
22
22
|
type: "string",
|
|
23
|
+
})
|
|
24
|
+
.option("overrideClassName", {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "override the class name for the generated types, useful for generating types when multiple CRDs have the same kind",
|
|
23
27
|
})
|
|
24
28
|
.option("plain", {
|
|
25
29
|
alias: "p",
|
|
@@ -42,6 +46,7 @@ void yargs(hideBin(process.argv))
|
|
|
42
46
|
}, async (argv) => {
|
|
43
47
|
const opts = argv;
|
|
44
48
|
opts.logFn = console.log;
|
|
49
|
+
opts.npmPackage = "kubernetes-fluent-client";
|
|
45
50
|
// Pass the `post` flag to opts
|
|
46
51
|
opts.noPost = argv.noPost;
|
|
47
52
|
// Use NodeFileSystem as the file system for post-processing
|
|
@@ -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,
|
|
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"}
|
package/dist/fluent/index.js
CHANGED
|
@@ -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
|
}
|
package/dist/fluent/types.d.ts
CHANGED
|
@@ -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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"}
|
package/dist/fluent/utils.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/fluent/utils.js
CHANGED
|
@@ -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/dist/generate.d.ts
CHANGED
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,SAAS,EAET,cAAc,EACd,SAAS,EACV,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,eAAe,GACpB,OAAO,CACR;IACE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,wBAAwB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,EAAE,CACJ,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,SAAS,EAET,cAAc,EACd,SAAS,EACV,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,eAAe,GACpB,OAAO,CACR;IACE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,wBAAwB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,EAAE,CACJ,CAwCA;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAYvF;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,GAAG,cAAc,GAChC,IAAI,CAON;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CA0B/F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAMtD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAC5D;IACE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,wBAAwB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,EAAE,CACJ,CA8BA"}
|
package/dist/generate.js
CHANGED
|
@@ -15,7 +15,8 @@ import { CustomResourceDefinition } from "./upstream.js";
|
|
|
15
15
|
* @returns A promise that resolves to a record of generated TypeScript types.
|
|
16
16
|
*/
|
|
17
17
|
export async function convertCRDtoTS(crd, opts) {
|
|
18
|
-
const name = crd.spec.names.kind;
|
|
18
|
+
const name = opts.overrideClassName || crd.spec.names.kind;
|
|
19
|
+
const originalKind = crd.spec.names.kind;
|
|
19
20
|
const results = {};
|
|
20
21
|
const output = [];
|
|
21
22
|
// Check for missing versions or empty schema
|
|
@@ -33,7 +34,7 @@ export async function convertCRDtoTS(crd, opts) {
|
|
|
33
34
|
opts.logFn(`- Generating ${crd.spec.group}/${match.name} types for ${name}`);
|
|
34
35
|
const inputData = await prepareInputData(name, schema);
|
|
35
36
|
const generatedTypes = await generateTypes(inputData, opts);
|
|
36
|
-
const fileName = `${
|
|
37
|
+
const fileName = `${originalKind.toLowerCase()}-${match.name.toLowerCase()}`;
|
|
37
38
|
writeGeneratedFile(fileName, opts.directory || "", generatedTypes, opts.language || "ts");
|
|
38
39
|
results[fileName] = generatedTypes;
|
|
39
40
|
output.push({ results, name, crd, version: match.name });
|
package/dist/postProcessing.d.ts
CHANGED
|
@@ -89,10 +89,10 @@ export declare function updateBraceBalance(line: string, braceBalance: number):
|
|
|
89
89
|
* @param name The name of the schema.
|
|
90
90
|
* @param crd The CustomResourceDefinition object.
|
|
91
91
|
* @param version The version of the CRD.
|
|
92
|
-
* @param
|
|
92
|
+
* @param opts the options for the generation process.
|
|
93
93
|
* @returns The processed TypeScript lines.
|
|
94
94
|
*/
|
|
95
|
-
export declare function wrapWithFluentClient(lines: string[], name: string, crd: CustomResourceDefinition, version: string,
|
|
95
|
+
export declare function wrapWithFluentClient(lines: string[], name: string, crd: CustomResourceDefinition, version: string, opts: GenerateOptions): string[];
|
|
96
96
|
/**
|
|
97
97
|
* Processes the lines of the TypeScript file, focusing on classes extending `GenericKind`.
|
|
98
98
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAMzD,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,wBAAwB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvF;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,iBAalF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAahF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACxC,IAAI,EAAE,eAAe,iBAoBtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,eAAe,QA2BtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,MAAM,CAoBR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAWnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAalE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,
|
|
1
|
+
{"version":3,"file":"postProcessing.d.ts","sourceRoot":"","sources":["../src/postProcessing.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAMzD,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,wBAAwB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvF;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,iBAalF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAahF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACxC,IAAI,EAAE,eAAe,iBAoBtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,eAAe,QA2BtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,MAAM,CAoBR;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAWnD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAalE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,GACpB,MAAM,EAAE,CAmBV;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EAAE,EACf,qBAAqB,EAAE,MAAM,EAAE,EAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,MAAM,EAAE,CAiBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,MAAM,EACpB,qBAAqB,EAAE,MAAM,EAAE,EAC/B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,kBAAkB,CAgBpB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,QAGpF"}
|
package/dist/postProcessing.js
CHANGED
|
@@ -31,7 +31,7 @@ export async function postProcessing(allResults, opts) {
|
|
|
31
31
|
export function mapFilesToCRD(allResults) {
|
|
32
32
|
const fileResultMap = {};
|
|
33
33
|
for (const { name, crd, version } of allResults) {
|
|
34
|
-
const expectedFileName = `${
|
|
34
|
+
const expectedFileName = `${crd.spec.names.kind.toLowerCase()}-${version.toLowerCase()}.ts`;
|
|
35
35
|
fileResultMap[expectedFileName] = { name, crd, version };
|
|
36
36
|
}
|
|
37
37
|
if (Object.keys(fileResultMap).length === 0) {
|
|
@@ -117,7 +117,7 @@ export function applyCRDPostProcessing(content, name, crd, version, opts) {
|
|
|
117
117
|
let lines = content.split("\n");
|
|
118
118
|
// Wraps with the fluent client if needed
|
|
119
119
|
if (opts.language === "ts" && !opts.plain) {
|
|
120
|
-
lines = wrapWithFluentClient(lines, name, crd, version, opts
|
|
120
|
+
lines = wrapWithFluentClient(lines, name, crd, version, opts);
|
|
121
121
|
}
|
|
122
122
|
const foundInterfaces = collectInterfaceNames(lines);
|
|
123
123
|
// Process the lines, focusing on classes extending `GenericKind`
|
|
@@ -187,18 +187,18 @@ export function updateBraceBalance(line, braceBalance) {
|
|
|
187
187
|
* @param name The name of the schema.
|
|
188
188
|
* @param crd The CustomResourceDefinition object.
|
|
189
189
|
* @param version The version of the CRD.
|
|
190
|
-
* @param
|
|
190
|
+
* @param opts the options for the generation process.
|
|
191
191
|
* @returns The processed TypeScript lines.
|
|
192
192
|
*/
|
|
193
|
-
export function wrapWithFluentClient(lines, name, crd, version,
|
|
194
|
-
const autoGenNotice = `// This file is auto-generated by ${npmPackage}, do not edit manually`;
|
|
195
|
-
const imports = `import { GenericKind, RegisterKind } from "${npmPackage}";`;
|
|
193
|
+
export function wrapWithFluentClient(lines, name, crd, version, opts) {
|
|
194
|
+
const autoGenNotice = `// This file is auto-generated by ${opts.npmPackage}, do not edit manually`;
|
|
195
|
+
const imports = `import { GenericKind, RegisterKind } from "${opts.npmPackage}";`;
|
|
196
196
|
const classIndex = lines.findIndex(line => line.includes(`export interface ${name} {`));
|
|
197
197
|
if (classIndex !== -1) {
|
|
198
198
|
lines[classIndex] = `export class ${name} extends GenericKind {`;
|
|
199
199
|
}
|
|
200
200
|
lines.unshift(autoGenNotice, imports);
|
|
201
|
-
lines.push(`RegisterKind(${name}, {`, ` group: "${crd.spec.group}",`, ` version: "${version}",`, ` kind: "${
|
|
201
|
+
lines.push(`RegisterKind(${name}, {`, ` group: "${crd.spec.group}",`, ` version: "${version}",`, ` kind: "${crd.spec.names.kind}",`, ` plural: "${crd.spec.names.plural}",`, `});`);
|
|
202
202
|
return lines;
|
|
203
203
|
}
|
|
204
204
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kubernetes-fluent-client",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0-nightly.1",
|
|
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.
|
|
74
|
-
"@typescript-eslint/parser": "8.
|
|
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.
|
|
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",
|
package/src/cli.ts
CHANGED
|
@@ -27,6 +27,11 @@ void yargs(hideBin(process.argv))
|
|
|
27
27
|
describe: "the directory to output the generated types to",
|
|
28
28
|
type: "string",
|
|
29
29
|
})
|
|
30
|
+
.option("overrideClassName", {
|
|
31
|
+
type: "string",
|
|
32
|
+
description:
|
|
33
|
+
"override the class name for the generated types, useful for generating types when multiple CRDs have the same kind",
|
|
34
|
+
})
|
|
30
35
|
.option("plain", {
|
|
31
36
|
alias: "p",
|
|
32
37
|
type: "boolean",
|
|
@@ -51,6 +56,7 @@ void yargs(hideBin(process.argv))
|
|
|
51
56
|
async argv => {
|
|
52
57
|
const opts = argv as unknown as GenerateOptions;
|
|
53
58
|
opts.logFn = console.log;
|
|
59
|
+
opts.npmPackage = "kubernetes-fluent-client";
|
|
54
60
|
|
|
55
61
|
// Pass the `post` flag to opts
|
|
56
62
|
opts.noPost = argv.noPost as boolean;
|
package/src/fluent/index.ts
CHANGED
|
@@ -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
|
}
|
package/src/fluent/types.ts
CHANGED
|
@@ -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
|
*
|
package/src/fluent/utils.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/generate.ts
CHANGED
|
@@ -20,6 +20,7 @@ export type QuicktypeLang = Parameters<typeof quicktype>[0]["lang"];
|
|
|
20
20
|
export interface GenerateOptions {
|
|
21
21
|
source: string; // URL, file path, or K8s CRD name
|
|
22
22
|
directory?: string; // Output directory path
|
|
23
|
+
overrideClassName?: string; // Override class name for generated types
|
|
23
24
|
plain?: boolean; // Disable fluent client wrapping
|
|
24
25
|
language: QuicktypeLang; // Language for type generation (default: "ts")
|
|
25
26
|
npmPackage?: string; // Override NPM package
|
|
@@ -45,7 +46,8 @@ export async function convertCRDtoTS(
|
|
|
45
46
|
version: string;
|
|
46
47
|
}[]
|
|
47
48
|
> {
|
|
48
|
-
const name = crd.spec.names.kind;
|
|
49
|
+
const name = opts.overrideClassName || crd.spec.names.kind;
|
|
50
|
+
const originalKind = crd.spec.names.kind;
|
|
49
51
|
const results: Record<string, string[]> = {};
|
|
50
52
|
const output: {
|
|
51
53
|
results: Record<string, string[]>;
|
|
@@ -75,7 +77,7 @@ export async function convertCRDtoTS(
|
|
|
75
77
|
const inputData = await prepareInputData(name, schema);
|
|
76
78
|
const generatedTypes = await generateTypes(inputData, opts);
|
|
77
79
|
|
|
78
|
-
const fileName = `${
|
|
80
|
+
const fileName = `${originalKind.toLowerCase()}-${match.name.toLowerCase()}`;
|
|
79
81
|
writeGeneratedFile(fileName, opts.directory || "", generatedTypes, opts.language || "ts");
|
|
80
82
|
|
|
81
83
|
results[fileName] = generatedTypes;
|
package/src/postProcessing.ts
CHANGED
|
@@ -52,7 +52,7 @@ export function mapFilesToCRD(allResults: CRDResult[]): Record<string, CRDResult
|
|
|
52
52
|
const fileResultMap: Record<string, CRDResult> = {};
|
|
53
53
|
|
|
54
54
|
for (const { name, crd, version } of allResults) {
|
|
55
|
-
const expectedFileName = `${
|
|
55
|
+
const expectedFileName = `${crd.spec.names.kind.toLowerCase()}-${version.toLowerCase()}.ts`;
|
|
56
56
|
fileResultMap[expectedFileName] = { name, crd, version };
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -159,7 +159,7 @@ export function applyCRDPostProcessing(
|
|
|
159
159
|
|
|
160
160
|
// Wraps with the fluent client if needed
|
|
161
161
|
if (opts.language === "ts" && !opts.plain) {
|
|
162
|
-
lines = wrapWithFluentClient(lines, name, crd, version, opts
|
|
162
|
+
lines = wrapWithFluentClient(lines, name, crd, version, opts);
|
|
163
163
|
}
|
|
164
164
|
const foundInterfaces = collectInterfaceNames(lines);
|
|
165
165
|
|
|
@@ -242,7 +242,7 @@ export function updateBraceBalance(line: string, braceBalance: number): number {
|
|
|
242
242
|
* @param name The name of the schema.
|
|
243
243
|
* @param crd The CustomResourceDefinition object.
|
|
244
244
|
* @param version The version of the CRD.
|
|
245
|
-
* @param
|
|
245
|
+
* @param opts the options for the generation process.
|
|
246
246
|
* @returns The processed TypeScript lines.
|
|
247
247
|
*/
|
|
248
248
|
export function wrapWithFluentClient(
|
|
@@ -250,11 +250,10 @@ export function wrapWithFluentClient(
|
|
|
250
250
|
name: string,
|
|
251
251
|
crd: CustomResourceDefinition,
|
|
252
252
|
version: string,
|
|
253
|
-
|
|
253
|
+
opts: GenerateOptions,
|
|
254
254
|
): string[] {
|
|
255
|
-
const autoGenNotice = `// This file is auto-generated by ${npmPackage}, do not edit manually`;
|
|
256
|
-
const imports = `import { GenericKind, RegisterKind } from "${npmPackage}";`;
|
|
257
|
-
|
|
255
|
+
const autoGenNotice = `// This file is auto-generated by ${opts.npmPackage}, do not edit manually`;
|
|
256
|
+
const imports = `import { GenericKind, RegisterKind } from "${opts.npmPackage}";`;
|
|
258
257
|
const classIndex = lines.findIndex(line => line.includes(`export interface ${name} {`));
|
|
259
258
|
if (classIndex !== -1) {
|
|
260
259
|
lines[classIndex] = `export class ${name} extends GenericKind {`;
|
|
@@ -265,7 +264,7 @@ export function wrapWithFluentClient(
|
|
|
265
264
|
`RegisterKind(${name}, {`,
|
|
266
265
|
` group: "${crd.spec.group}",`,
|
|
267
266
|
` version: "${version}",`,
|
|
268
|
-
` kind: "${
|
|
267
|
+
` kind: "${crd.spec.names.kind}",`,
|
|
269
268
|
` plural: "${crd.spec.names.plural}",`,
|
|
270
269
|
`});`,
|
|
271
270
|
);
|