@viewdo/dxp-story-cli
Version:
DXP Story Management CLI
145 lines • 6.41 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PreviewService = void 0;
const TokenizationService_1 = require("./TokenizationService");
const typedi_1 = require("typedi");
let PreviewService = class PreviewService {
constructor(tokenization_service) {
this.tokenization_service = tokenization_service;
}
_getProgressMap(milestones) {
let progressMap = {
new: 0,
sent: 2,
opened: 4,
started: 6,
completed: 100,
converted: 101,
};
let index = 6;
milestones.forEach((m) => {
progressMap[m.toLowerCase()] = index++;
});
progressMap.completed = 100;
progressMap.converted = 101;
return progressMap;
}
_fixPath(long_path, key) {
return long_path.replace(`./stories/${key}`, "");
}
_formatStory(story, asset_config, story_data) {
var _a, _b, _c;
let { key, publicKey, name, description, milestones, inputs } = story;
let htmlTemplates = {};
(_a = story.htmlTemplates) === null || _a === void 0 ? void 0 : _a.forEach((t) => {
let asset_definition = story.getAssetDefinition(`html_templates.${t.key}`);
htmlTemplates[t.key] = this._fixPath(asset_config.getLocalPath(asset_definition), story.key);
});
let textTemplates = {};
(_b = story.textTemplates) === null || _b === void 0 ? void 0 : _b.forEach((t) => {
let asset_definition = story.getAssetDefinition(`text_templates.${t.key}`);
textTemplates[t.key] = this._fixPath(asset_config.getLocalPath(asset_definition), story.key);
});
let episodes = story.episodes.map((e) => {
let { key, name, description } = e;
return {
key,
name,
description,
};
});
let events = ((_c = story.events) === null || _c === void 0 ? void 0 : _c.map((e) => e.key)) || [];
let progressMap = this._getProgressMap(story.milestones);
this.tokenization_service.detokenizeData(story_data);
const inputObject = {};
inputs.forEach((input) => {
inputObject[input.key] = input;
});
return {
key,
publicKey,
name,
description,
milestones,
progressMap,
events,
externalEvents: story.externalEvents,
storyEvents: story.events,
links: story.customLinks.map((l) => {
return {
name: l.name,
url: l.targetUrl,
key: l.key,
};
}),
episodes,
htmlTemplates,
textTemplates,
hasJsFile: false,
hasJSONFile: false,
hasCSSFile: false,
data: story_data,
inputs: inputObject,
inputArray: inputs,
};
}
_formatOrganization(organization, child_entity_key) {
var _a, _b;
let { key, name, entities, dataPoints, url } = organization;
let data = {};
let entity = (_a = organization.entities) === null || _a === void 0 ? void 0 : _a.find((e) => e.key == child_entity_key);
let dataPointsObject = {};
(_b = organization.dataPoints) === null || _b === void 0 ? void 0 : _b.forEach((dataPoint) => {
data[dataPoint.key] = dataPoint.value;
if (entity && entity.data[dataPoint.key]) {
data[dataPoint.key] = entity.data[dataPoint.key];
}
dataPointsObject[dataPoint.key] = dataPoint;
});
return {
key,
name,
url,
entity,
entities,
data,
dataPoints: dataPointsObject,
};
}
formatPreview(preview_config, organization, story, asset_config, episode_key, story_data) {
var _a, _b, _c;
preview_config.currentEpisodeKey =
episode_key == "default" ? null : episode_key;
story.inputs.forEach((input) => {
preview_config.data[input.key] = preview_config.data[input.key] || input.value || "";
});
preview_config.story = this._formatStory(story, asset_config, story_data);
if (preview_config.childEntityKey && !((_a = organization.entities) === null || _a === void 0 ? void 0 : _a.find(e => e.key == preview_config.childEntityKey)))
throw new Error("Preview entity " + preview_config.childEntityKey + " not found in organization-config.yml");
preview_config.organization = this._formatOrganization(organization, preview_config.childEntityKey);
if (preview_config.milestone && !((_b = preview_config.story.milestones) === null || _b === void 0 ? void 0 : _b.includes(preview_config.milestone))) {
throw new Error("Preview milestone " + preview_config.milestone + " not found in story-config.yml");
}
(_c = preview_config.events) === null || _c === void 0 ? void 0 : _c.forEach((event) => {
if (!preview_config.story.events.includes(event)) {
throw new Error("Preview event " + event + " not found in story-config.yml");
}
});
return preview_config;
}
};
exports.PreviewService = PreviewService;
exports.PreviewService = PreviewService = __decorate([
(0, typedi_1.Service)(),
__metadata("design:paramtypes", [TokenizationService_1.TokenizationService])
], PreviewService);
//# sourceMappingURL=PreviewService.js.map