@aliceplex/core
Version:
[![License][license_badge]][license] [![Pipelines][pipelines_badge]][pipelines] [![Coverage][coverage_badge]][pipelines] [![NPM][npm_badge]][npm] [![semantic-release][semantic_release_badge]][semantic_release]
57 lines • 2.1 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const yaml = __importStar(require("yaml"));
const types_1 = require("yaml/types");
types_1.strOptions.fold.lineWidth = 9999999999;
types_1.nullOptions.nullStr = "";
const model_1 = require("../model");
const validate_1 = require("../validate");
const utils_1 = require("./utils");
exports.serializeYaml = (model, options = {}) => {
const { removeTrailingSpace = true } = options;
const serializedValues = model_1.serializeModel(model_1.normalizeModel(model));
if ("season_summary" in serializedValues) {
// eslint-disable-next-line @typescript-eslint/camelcase
serializedValues.season_summary = utils_1.convertSeasonSummary(serializedValues.season_summary);
}
const str = yaml.stringify(serializedValues);
const doc = yaml.parseDocument(str);
doc.contents.items.forEach((i) => {
switch (i.key.value) {
case "summary":
if (i.value) {
i.value.type = "BLOCK_LITERAL";
}
break;
case "season_summary":
i.value.items.forEach((summary) => {
summary.value.type = "BLOCK_LITERAL";
});
break;
case "rating":
if (i.value) {
i.value.minFractionDigits = 1;
}
break;
}
});
let yml = String(doc);
if (removeTrailingSpace) {
yml = yml.replace(/[^\S\n]+\n/g, "\n");
}
return yml;
};
exports.deserializeYaml = (str) => {
const data = yaml.parse(str);
const ajv = validate_1.createAjv();
const model = validate_1.toSerializedModel(data, { ajv });
return model_1.deserializeModel(model);
};
//# sourceMappingURL=yml.js.map