@viewdo/dxp-story-cli
Version:
DXP Story Management CLI
42 lines • 1.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigurationFileService = void 0;
const FileService_1 = require("./FileService");
const class_transformer_1 = require("class-transformer");
const JSONFormatService_1 = require("./JSONFormatService");
const Utilities_1 = require("./Utilities");
const typedi_1 = require("typedi");
class ConfigurationFileService {
constructor(file_path, type) {
this.file_path = file_path;
this.type = type;
this.file_service = typedi_1.Container.get(FileService_1.FileService);
this.format_service = typedi_1.Container.get(JSONFormatService_1.JSONFormatService);
}
read(default_data = {}) {
let content = this.file_service && this.file_service.read(this.file_path);
if (content) {
let data = this.format_service.fromContent(content) || {};
return this.deserialize(data);
}
return this.deserialize(default_data);
}
deserialize(data = {}) {
return (0, class_transformer_1.plainToClass)(this.type, data, { exposeDefaultValues: true });
}
write(model, removeNull = true) {
let data = (0, class_transformer_1.classToPlain)(model);
if (removeNull)
(0, Utilities_1.removeNullProperties)(data);
let content = this.format_service.toContent(data);
this.file_service.write(this.file_path, content);
}
ensure() {
this.file_service.ensure(this.file_path);
}
exists() {
return this.file_service.exists(this.file_path);
}
}
exports.ConfigurationFileService = ConfigurationFileService;
//# sourceMappingURL=ConfigurationFileService.js.map