UNPKG

@jsverse/transloco

Version:

The internationalization (i18n) library for Angular

37 lines 4.21 kB
import { isObject } from '@jsverse/utils'; export function flatten(obj) { const result = {}; function recurse(curr, prop) { if (curr === null) { result[prop] = null; } else if (isObject(curr)) { for (const [key, value] of Object.entries(curr)) { recurse(value, prop ? `${prop}.${key}` : key); } } else { result[prop] = curr; } } recurse(obj, ''); return result; } export function unflatten(obj) { const result = {}; for (const [key, value] of Object.entries(obj)) { const keys = key.split('.'); let current = result; keys.forEach((key, i) => { if (i === keys.length - 1) { current[key] = value; } else { current[key] ??= {}; current = current[key]; } }); } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdC51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdXRpbHMvZmxhdC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFnQjtJQUN0QyxNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFDO0lBRTNDLFNBQVMsT0FBTyxDQUFDLElBQWEsRUFBRSxJQUFZO1FBQzFDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdEIsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFnQjtJQUN4QyxNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFDO0lBRTNDLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBNEIsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnQGpzdmVyc2UvdXRpbHMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGlvbiB9IGZyb20gJy4uL3RyYW5zbG9jby50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuKG9iajogVHJhbnNsYXRpb24pOiBUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBmdW5jdGlvbiByZWN1cnNlKGN1cnI6IHVua25vd24sIHByb3A6IHN0cmluZykge1xuICAgIGlmIChjdXJyID09PSBudWxsKSB7XG4gICAgICByZXN1bHRbcHJvcF0gPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoY3VycikpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGN1cnIpKSB7XG4gICAgICAgIHJlY3Vyc2UodmFsdWUsIHByb3AgPyBgJHtwcm9wfS4ke2tleX1gIDoga2V5KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W3Byb3BdID0gY3VycjtcbiAgICB9XG4gIH1cblxuICByZWN1cnNlKG9iaiwgJycpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5mbGF0dGVuKG9iajogVHJhbnNsYXRpb24pOiBUcmFuc2xhdGlvbiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gcmVzdWx0O1xuXG4gICAga2V5cy5mb3JFYWNoKChrZXksIGkpID0+IHtcbiAgICAgIGlmIChpID09PSBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgY3VycmVudFtrZXldID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50W2tleV0gPz89IHt9O1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==