UNPKG

k8ts

Version:

Powerful framework for building Kubernetes manifests in TypeScript.

24 lines (21 loc) 804 B
import { Builder, Kind, type Origin } from "@k8ts/instruments" import type { Meta, MutableMeta } from "@k8ts/metadata" import { ResourceIdentBlock } from "./abs-resource" import { TopResource } from "./top-resource" export interface ManifestResourceIdent extends ResourceIdentBlock { name: string } export abstract class ManifestResource<Props extends object = object> extends TopResource<Props> { protected async manifest() { return Builder.get(this).manifest() } abstract override readonly kind: Kind.Kind readonly meta: MutableMeta constructor(origin: Origin, meta: Meta | MutableMeta, props: Props) { super(origin, meta.get("name"), props) this.meta = meta.toMutable() } get namespace() { return this.meta.tryGet("namespace") } }