k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
51 lines • 1.8 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.YamlSerializer = void 0;
const instruments_1 = require("@k8ts/instruments");
const emittery_1 = __importDefault(require("emittery"));
const js_yaml_1 = require("js-yaml");
const _imports_1 = require("../../_imports");
const error_1 = require("../../error");
class YamlSerializer extends emittery_1.default {
_options;
constructor(_options) {
super();
this._options = _options;
}
async serialize(input) {
await this.emit("serialize", {
manifest: input,
resource: instruments_1.ManifestSourceEmbedder.get(input).node
});
try {
const result = (0, js_yaml_1.dump)(input, {
lineWidth: 800,
noArrayIndent: true,
indent: 2,
replacer(key, value) {
if (value instanceof _imports_1.CDK.IntOrString) {
return value.value;
}
if (value instanceof _imports_1.CDK.Quantity) {
return value.value;
}
return value;
},
...this._options.jsYamlOptions,
noRefs: true
});
return result;
}
catch (err) {
const resource = instruments_1.ManifestSourceEmbedder.get(input);
throw new error_1.MakeError(`Failed to serialize manifest ${resource}`, {
cause: err
});
}
}
}
exports.YamlSerializer = YamlSerializer;
//# sourceMappingURL=serializer.js.map