@r8s/k8s-types 0.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.
@@ -0,0 +1,226 @@
1
+ export interface ObjectMeta {
2
+ name?: string;
3
+ namespace?: string;
4
+ labels?: Record<string, string>;
5
+ annotations?: Record<string, string>;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface LabelSelector {
9
+ matchLabels?: Record<string, string>;
10
+ matchExpressions?: Array<{
11
+ key: string;
12
+ operator: string;
13
+ values?: string[];
14
+ }>;
15
+ }
16
+ export interface Container {
17
+ name: string;
18
+ image: string;
19
+ command?: string[];
20
+ args?: string[];
21
+ ports?: ContainerPort[];
22
+ env?: EnvVar[];
23
+ resources?: ResourceRequirements;
24
+ volumeMounts?: VolumeMount[];
25
+ livenessProbe?: Probe;
26
+ readinessProbe?: Probe;
27
+ startupProbe?: Probe;
28
+ }
29
+ export interface ContainerPort {
30
+ name?: string;
31
+ containerPort: number;
32
+ protocol?: string;
33
+ }
34
+ export interface EnvVar {
35
+ name: string;
36
+ value?: string;
37
+ valueFrom?: EnvVarSource;
38
+ }
39
+ export interface EnvVarSource {
40
+ configMapKeyRef?: {
41
+ name: string;
42
+ key: string;
43
+ };
44
+ secretKeyRef?: {
45
+ name: string;
46
+ key: string;
47
+ };
48
+ }
49
+ export interface ResourceRequirements {
50
+ limits?: Record<string, string>;
51
+ requests?: Record<string, string>;
52
+ }
53
+ export interface VolumeMount {
54
+ name: string;
55
+ mountPath: string;
56
+ readOnly?: boolean;
57
+ }
58
+ export interface Probe {
59
+ httpGet?: HTTPGetAction;
60
+ tcpSocket?: TCPSocketAction;
61
+ exec?: ExecAction;
62
+ initialDelaySeconds?: number;
63
+ periodSeconds?: number;
64
+ timeoutSeconds?: number;
65
+ failureThreshold?: number;
66
+ successThreshold?: number;
67
+ }
68
+ export interface HTTPGetAction {
69
+ path?: string;
70
+ port: number | string;
71
+ host?: string;
72
+ scheme?: string;
73
+ }
74
+ export interface TCPSocketAction {
75
+ port: number | string;
76
+ }
77
+ export interface ExecAction {
78
+ command: string[];
79
+ }
80
+ export interface Volume {
81
+ name: string;
82
+ configMap?: {
83
+ name: string;
84
+ };
85
+ secret?: {
86
+ secretName: string;
87
+ };
88
+ persistentVolumeClaim?: {
89
+ claimName: string;
90
+ };
91
+ emptyDir?: {};
92
+ }
93
+ export interface PodSpec {
94
+ containers: Container[];
95
+ initContainers?: Container[];
96
+ volumes?: Volume[];
97
+ restartPolicy?: string;
98
+ nodeSelector?: Record<string, string>;
99
+ affinity?: unknown;
100
+ tolerations?: unknown[];
101
+ }
102
+ export interface PodTemplateSpec {
103
+ metadata?: ObjectMeta;
104
+ spec: PodSpec;
105
+ }
106
+ export interface Deployment {
107
+ apiVersion: 'apps/v1';
108
+ kind: 'Deployment';
109
+ metadata: ObjectMeta;
110
+ spec: DeploymentSpec;
111
+ }
112
+ export interface DeploymentSpec {
113
+ replicas?: number;
114
+ selector: LabelSelector;
115
+ template: PodTemplateSpec;
116
+ strategy?: DeploymentStrategy;
117
+ }
118
+ export interface DeploymentStrategy {
119
+ type?: string;
120
+ rollingUpdate?: {
121
+ maxSurge?: number | string;
122
+ maxUnavailable?: number | string;
123
+ };
124
+ }
125
+ export interface StatefulSet {
126
+ apiVersion: 'apps/v1';
127
+ kind: 'StatefulSet';
128
+ metadata: ObjectMeta;
129
+ spec: StatefulSetSpec;
130
+ }
131
+ export interface StatefulSetSpec {
132
+ serviceName: string;
133
+ replicas?: number;
134
+ selector: LabelSelector;
135
+ template: PodTemplateSpec;
136
+ volumeClaimTemplates?: PersistentVolumeClaim[];
137
+ }
138
+ export interface Service {
139
+ apiVersion: 'v1';
140
+ kind: 'Service';
141
+ metadata: ObjectMeta;
142
+ spec: ServiceSpec;
143
+ }
144
+ export interface ServiceSpec {
145
+ type?: string;
146
+ selector?: Record<string, string>;
147
+ ports: ServicePort[];
148
+ clusterIP?: string;
149
+ }
150
+ export interface ServicePort {
151
+ name?: string;
152
+ port: number;
153
+ targetPort?: number | string;
154
+ protocol?: string;
155
+ nodePort?: number;
156
+ }
157
+ export interface ConfigMap {
158
+ apiVersion: 'v1';
159
+ kind: 'ConfigMap';
160
+ metadata: ObjectMeta;
161
+ data?: Record<string, string>;
162
+ binaryData?: Record<string, string>;
163
+ }
164
+ export interface Secret {
165
+ apiVersion: 'v1';
166
+ kind: 'Secret';
167
+ metadata: ObjectMeta;
168
+ type?: string;
169
+ data?: Record<string, string>;
170
+ stringData?: Record<string, string>;
171
+ }
172
+ export interface Ingress {
173
+ apiVersion: 'networking.k8s.io/v1';
174
+ kind: 'Ingress';
175
+ metadata: ObjectMeta;
176
+ spec: IngressSpec;
177
+ }
178
+ export interface IngressSpec {
179
+ ingressClassName?: string;
180
+ rules?: IngressRule[];
181
+ tls?: IngressTLS[];
182
+ defaultBackend?: IngressBackend;
183
+ }
184
+ export interface IngressRule {
185
+ host?: string;
186
+ http: HTTPIngressRuleValue;
187
+ }
188
+ export interface HTTPIngressRuleValue {
189
+ paths: HTTPIngressPath[];
190
+ }
191
+ export interface HTTPIngressPath {
192
+ path?: string;
193
+ pathType: string;
194
+ backend: IngressBackend;
195
+ }
196
+ export interface IngressBackend {
197
+ service?: IngressServiceBackend;
198
+ }
199
+ export interface IngressServiceBackend {
200
+ name: string;
201
+ port: ServiceBackendPort;
202
+ }
203
+ export interface ServiceBackendPort {
204
+ number?: number;
205
+ name?: string;
206
+ }
207
+ export interface IngressTLS {
208
+ hosts?: string[];
209
+ secretName?: string;
210
+ }
211
+ export interface PersistentVolumeClaim {
212
+ apiVersion: 'v1';
213
+ kind: 'PersistentVolumeClaim';
214
+ metadata: ObjectMeta;
215
+ spec: PersistentVolumeClaimSpec;
216
+ }
217
+ export interface PersistentVolumeClaimSpec {
218
+ accessModes: string[];
219
+ resources?: ResourceRequirements;
220
+ storageClassName?: string;
221
+ volumeMode?: string;
222
+ }
223
+ export type KubernetesResource = Deployment | StatefulSet | Service | ConfigMap | Secret | Ingress | PersistentVolumeClaim;
224
+ export * from './operator';
225
+ export * from './routing';
226
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // Auto-generated Kubernetes TypeScript types
3
+ // Based on Kubernetes API v1.28
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ // Operator base types
20
+ __exportStar(require("./operator"), exports);
21
+ // Shared routing abstractions
22
+ __exportStar(require("./routing"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,6CAA6C;AAC7C,gCAAgC;;;;;;;;;;;;;;;;AAgRhC,sBAAsB;AACtB,6CAA0B;AAE1B,8BAA8B;AAC9B,4CAAyB"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Base operator types for r8s.
3
+ *
4
+ * These types define the contract for operator declarations.
5
+ * Each package is responsible for defining its own operators
6
+ * using these base types.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // In @r8s/cert-manager package:
11
+ * import { manifestOperator } from '@r8s/k8s-types';
12
+ *
13
+ * export const certManagerOperator = (version = '1.14.0') =>
14
+ * manifestOperator('cert-manager', `https://.../cert-manager-${version}.yaml`, version, {
15
+ * description: 'cert-manager for TLS',
16
+ * crds: ['certificates.cert-manager.io'],
17
+ * });
18
+ * ```
19
+ */
20
+ /** Supported operator installation methods */
21
+ export type OperatorSource = {
22
+ type: 'manifest';
23
+ url: string;
24
+ version: string;
25
+ namespace?: string;
26
+ } | {
27
+ type: 'helm';
28
+ chart: string;
29
+ repository: string;
30
+ version: string;
31
+ namespace?: string;
32
+ values?: Record<string, unknown>;
33
+ } | {
34
+ type: 'olm';
35
+ package: string;
36
+ channel: string;
37
+ version?: string;
38
+ } | {
39
+ type: 'flux';
40
+ sourceRef: {
41
+ kind: string;
42
+ name: string;
43
+ namespace: string;
44
+ };
45
+ chart: string;
46
+ version: string;
47
+ };
48
+ /** Operator dependency declaration */
49
+ export interface Operator {
50
+ /** Unique operator identifier (e.g., 'cnpg', 'cert-manager') */
51
+ name: string;
52
+ /** Human-readable description */
53
+ description?: string;
54
+ /** How to install this operator */
55
+ source: OperatorSource;
56
+ /** Minimum required version (semver) */
57
+ version: string;
58
+ /** Namespaces this operator should watch (empty = cluster-wide) */
59
+ watchNamespaces?: string[];
60
+ /** Other operators this one depends on */
61
+ dependencies?: string[];
62
+ /** Custom resource definitions provided by this operator */
63
+ crds?: string[];
64
+ /** Installation command for direct use */
65
+ installCommand?: string;
66
+ }
67
+ /** Helper to create a manifest-based operator declaration */
68
+ export declare function manifestOperator(name: string, url: string, version: string, options?: {
69
+ description?: string;
70
+ namespace?: string;
71
+ watchNamespaces?: string[];
72
+ dependencies?: string[];
73
+ crds?: string[];
74
+ }): Operator;
75
+ /** Helper to create a Helm-based operator declaration */
76
+ export declare function helmOperator(name: string, chart: string, repository: string, version: string, options?: {
77
+ description?: string;
78
+ namespace?: string;
79
+ values?: Record<string, unknown>;
80
+ watchNamespaces?: string[];
81
+ dependencies?: string[];
82
+ crds?: string[];
83
+ }): Operator;
84
+ /** Helper to create an OLM-based operator declaration */
85
+ export declare function olmOperator(name: string, packageName: string, channel: string, version: string, options?: {
86
+ description?: string;
87
+ watchNamespaces?: string[];
88
+ dependencies?: string[];
89
+ crds?: string[];
90
+ }): Operator;
91
+ //# sourceMappingURL=operator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Base operator types for r8s.
4
+ *
5
+ * These types define the contract for operator declarations.
6
+ * Each package is responsible for defining its own operators
7
+ * using these base types.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * // In @r8s/cert-manager package:
12
+ * import { manifestOperator } from '@r8s/k8s-types';
13
+ *
14
+ * export const certManagerOperator = (version = '1.14.0') =>
15
+ * manifestOperator('cert-manager', `https://.../cert-manager-${version}.yaml`, version, {
16
+ * description: 'cert-manager for TLS',
17
+ * crds: ['certificates.cert-manager.io'],
18
+ * });
19
+ * ```
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.manifestOperator = manifestOperator;
23
+ exports.helmOperator = helmOperator;
24
+ exports.olmOperator = olmOperator;
25
+ /** Helper to create a manifest-based operator declaration */
26
+ function manifestOperator(name, url, version, options) {
27
+ return {
28
+ name,
29
+ description: options?.description,
30
+ source: {
31
+ type: 'manifest',
32
+ url,
33
+ version,
34
+ namespace: options?.namespace,
35
+ },
36
+ version,
37
+ watchNamespaces: options?.watchNamespaces,
38
+ dependencies: options?.dependencies,
39
+ crds: options?.crds,
40
+ installCommand: `kubectl apply --server-side -f ${url}`,
41
+ };
42
+ }
43
+ /** Helper to create a Helm-based operator declaration */
44
+ function helmOperator(name, chart, repository, version, options) {
45
+ return {
46
+ name,
47
+ description: options?.description,
48
+ source: {
49
+ type: 'helm',
50
+ chart,
51
+ repository,
52
+ version,
53
+ namespace: options?.namespace,
54
+ values: options?.values,
55
+ },
56
+ version,
57
+ watchNamespaces: options?.watchNamespaces,
58
+ dependencies: options?.dependencies,
59
+ crds: options?.crds,
60
+ installCommand: `helm upgrade --install ${name} ${chart} --repo ${repository} --namespace ${options?.namespace || name + '-system'} --create-namespace`,
61
+ };
62
+ }
63
+ /** Helper to create an OLM-based operator declaration */
64
+ function olmOperator(name, packageName, channel, version, options) {
65
+ return {
66
+ name,
67
+ description: options?.description,
68
+ source: {
69
+ type: 'olm',
70
+ package: packageName,
71
+ channel,
72
+ version,
73
+ },
74
+ version,
75
+ watchNamespaces: options?.watchNamespaces,
76
+ dependencies: options?.dependencies,
77
+ crds: options?.crds,
78
+ installCommand: `kubectl apply -f https://operatorhub.io/install/${packageName}.yaml`,
79
+ };
80
+ }
81
+ //# sourceMappingURL=operator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator.js","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AA0CH,4CA2BC;AAGD,oCA+BC;AAGD,kCA2BC;AA5FD,6DAA6D;AAC7D,SAAgB,gBAAgB,CAC9B,IAAY,EACZ,GAAW,EACX,OAAe,EACf,OAMC;IAED,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,GAAG;YACH,OAAO;YACP,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B;QACD,OAAO;QACP,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,YAAY,EAAE,OAAO,EAAE,YAAY;QACnC,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,cAAc,EAAE,kCAAkC,GAAG,EAAE;KACxD,CAAA;AACH,CAAC;AAED,yDAAyD;AACzD,SAAgB,YAAY,CAC1B,IAAY,EACZ,KAAa,EACb,UAAkB,EAClB,OAAe,EACf,OAOC;IAED,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,KAAK;YACL,UAAU;YACV,OAAO;YACP,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB;QACD,OAAO;QACP,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,YAAY,EAAE,OAAO,EAAE,YAAY;QACnC,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,cAAc,EAAE,0BAA0B,IAAI,IAAI,KAAK,WAAW,UAAU,gBAAgB,OAAO,EAAE,SAAS,IAAI,IAAI,GAAG,SAAS,qBAAqB;KACxJ,CAAA;AACH,CAAC;AAED,yDAAyD;AACzD,SAAgB,WAAW,CACzB,IAAY,EACZ,WAAmB,EACnB,OAAe,EACf,OAAe,EACf,OAKC;IAED,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,OAAO,EAAE,WAAW;QACjC,MAAM,EAAE;YACN,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,WAAW;YACpB,OAAO;YACP,OAAO;SACR;QACD,OAAO;QACP,eAAe,EAAE,OAAO,EAAE,eAAe;QACzC,YAAY,EAAE,OAAO,EAAE,YAAY;QACnC,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,cAAc,EAAE,mDAAmD,WAAW,OAAO;KACtF,CAAA;AACH,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Shared routing interfaces for Ingress and Gateway API.
3
+ *
4
+ * These types abstract the common concepts between different
5
+ * routing implementations (nginx Ingress, Envoy Gateway, etc.)
6
+ */
7
+ /** Backend target for routing (service + port) */
8
+ export interface RouteTarget {
9
+ /** Service name */
10
+ name: string;
11
+ /** Service namespace (if different from route) */
12
+ namespace?: string;
13
+ /** Service port */
14
+ port: number;
15
+ /** Weight for traffic splitting (0-100) */
16
+ weight?: number;
17
+ }
18
+ /** TLS configuration for routes */
19
+ export interface TLSConfig {
20
+ /** TLS termination mode */
21
+ mode?: 'Terminate' | 'Passthrough';
22
+ /** Secret containing TLS certificate */
23
+ secretName?: string;
24
+ /** cert-manager ClusterIssuer name */
25
+ clusterIssuer?: string;
26
+ /** Pre-existing certificate references */
27
+ certificateRefs?: Array<{
28
+ name: string;
29
+ namespace?: string;
30
+ }>;
31
+ }
32
+ /** A single route rule (host + path → target) */
33
+ export interface RouteRule {
34
+ /** Hostname for this route */
35
+ host?: string;
36
+ /** Path matching */
37
+ path?: {
38
+ /** Path match type */
39
+ type?: 'Exact' | 'Prefix' | 'RegularExpression';
40
+ /** Path value */
41
+ value: string;
42
+ };
43
+ /** HTTP method match */
44
+ method?: string;
45
+ /** Header matches */
46
+ headers?: Array<{
47
+ name: string;
48
+ value: string;
49
+ type?: 'Exact' | 'RegularExpression';
50
+ }>;
51
+ /** Backend targets */
52
+ targets: RouteTarget[];
53
+ }
54
+ /** Common properties for all routing components */
55
+ export interface BaseRouteProps {
56
+ /** Route name */
57
+ name: string;
58
+ /** Namespace */
59
+ namespace?: string;
60
+ /** Hostname(s) */
61
+ host?: string;
62
+ hostnames?: string[];
63
+ /** TLS configuration */
64
+ tls?: TLSConfig;
65
+ /** Custom annotations (for Ingress) */
66
+ annotations?: Record<string, string>;
67
+ }
68
+ /** Listener configuration for Gateway API */
69
+ export interface ListenerConfig {
70
+ /** Listener name */
71
+ name: string;
72
+ /** Protocol */
73
+ protocol: 'HTTP' | 'HTTPS' | 'TCP' | 'TLS' | 'UDP';
74
+ /** Port number */
75
+ port: number;
76
+ /** Hostname for this listener */
77
+ hostname?: string;
78
+ /** TLS config (for HTTPS/TLS) */
79
+ tls?: TLSConfig;
80
+ }
81
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,WAAW,GAAG,aAAa,CAAA;IAClC,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACH;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,IAAI,CAAC,EAAE;QACL,sBAAsB;QACtB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,mBAAmB,CAAA;QAC/C,iBAAiB;QACjB,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qBAAqB;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,OAAO,GAAG,mBAAmB,CAAA;KACrC,CAAC,CAAA;IACF,sBAAsB;IACtB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,wBAAwB;IACxB,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe;IACf,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;IAClD,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Shared routing interfaces for Ingress and Gateway API.
4
+ *
5
+ * These types abstract the common concepts between different
6
+ * routing implementations (nginx Ingress, Envoy Gateway, etc.)
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@r8s/k8s-types",
3
+ "version": "0.1.0",
4
+ "description": "Auto-generated Kubernetes TypeScript types from OpenAPI spec",
5
+ "license": "MIT",
6
+ "author": "Berget AI AB",
7
+ "homepage": "https://r8s.berget.ai",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/berget-ai/r8s.git",
11
+ "directory": "packages/k8s-types"
12
+ },
13
+ "bugs": "https://github.com/berget-ai/r8s/issues",
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "main": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "scripts": {
23
+ "build": "tsc --build",
24
+ "generate": "node scripts/generate-types.js",
25
+ "test": "echo 'No tests for types package'",
26
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
27
+ },
28
+ "devDependencies": {
29
+ "openapi-typescript": "^6.7.0",
30
+ "typescript": "^5.3.0"
31
+ }
32
+ }