UNPKG

@enonic/mock-xp

Version:

Mock Enonic XP API JavaScript Library

59 lines (58 loc) 2.75 kB
"use strict"; 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; }