@enonic/mock-xp
Version:
Mock Enonic XP API JavaScript Library
59 lines (58 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processNestedData = processNestedData;
var tslib_1 = require("tslib");
var isBoolean_1 = require("@enonic/js-utils/value/isBoolean");
var isNumber_1 = require("@enonic/js-utils/value/isNumber");
var isObject_1 = require("@enonic/js-utils/value/isObject");
var isString_1 = require("@enonic/js-utils/value/isString");
var node_forge_1 = require("node-forge");
var BinaryAttachment_1 = require("../util/BinaryAttachment");
function processNestedData(_a) {
var branch = _a.branch, data = _a.data, _b = _a.foundBinaryReferenceNames, foundBinaryReferenceNames = _b === void 0 ? [] : _b, nodeId = _a.nodeId;
if ((0, isString_1.isString)(data) || (0, isNumber_1.isNumber)(data) || (0, isBoolean_1.isBoolean)(data)) {
return data;
}
if (data instanceof BinaryAttachment_1.BinaryAttachment) {
var binaryReference = data.getReference();
if (!branch.binaryReferences[nodeId]) {
branch.binaryReferences[nodeId] = {};
}
var binaryReferenceName = binaryReference.toString();
foundBinaryReferenceNames.push(binaryReferenceName);
var byteSource = data.getByteSource();
var byteSourceAsString = byteSource.toString();
var sha512HexDigest = node_forge_1.sha512.create().update(byteSourceAsString).digest().toHex();
var prevSha512 = branch.binaryReferences[nodeId][binaryReferenceName];
if (sha512HexDigest !== prevSha512) {
if (prevSha512) {
branch.log.debug('%s:%s:%s Binary reference: %s now points to a new binary previous: %s new: %s', branch.repo.id, branch.id, nodeId, binaryReferenceName, prevSha512, sha512HexDigest);
}
branch.binaryReferences[nodeId][binaryReferenceName] = sha512HexDigest;
var filePath = "/".concat(sha512HexDigest);
branch.repo.server.vol.writeFileSync(filePath, byteSourceAsString);
}
return binaryReferenceName;
}
if (Array.isArray(data)) {
return data.map(function (item) { return processNestedData({
branch: branch,
data: item,
foundBinaryReferenceNames: foundBinaryReferenceNames,
nodeId: nodeId
}); });
}
if ((0, isObject_1.isObject)(data)) {
return Object.entries(data).reduce(function (acc, _a) {
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
acc[key] = processNestedData({
branch: branch,
data: value,
foundBinaryReferenceNames: foundBinaryReferenceNames,
nodeId: nodeId
});
return acc;
}, {});
}
return data;
}