Safe Flat Utilities

2.1.0 · active · verified Sun Apr 19

safe-flat is a JavaScript/TypeScript utility library designed for safely flattening and unflattening deeply nested objects. Its primary function, `flatten`, converts a multi-level object into a single-level object, using a configurable delimiter (defaulting to '.'). A key feature is its robust handling of circular references, which it replaces with the `[Circular]` string during flattening to prevent infinite recursion and serialization issues. The companion function, `unflatten`, reconstructs the original nested object structure from a flattened representation, treating `[Circular]` markers as literal string values. The current stable version, 2.1.0, is distributed with TypeScript types, enhancing developer experience. It appears to have a stable, though infrequent, release cadence, focusing on reliability for object serialization and deserialization tasks by mitigating common pitfalls like circular references.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to flatten a nested object (including circular references) and then unflatten it back, using both default and custom delimiters.

import { flatten, unflatten } from 'safe-flat';

const original = {
    a: {
        b: {
            c: [{ val: 'one' }, { val: 'two' }],
            d: 'three'
        },
        e: 'four',
    }
};
original.a.b.f = original.a.b; // Introduce a circular reference
original.a.b.c.push(original.a); // Another circular reference

console.log('Original Object:', JSON.stringify(original, null, 2));

const flat = flatten(original);
console.log('\nFlattened Object (default delimiter):', JSON.stringify(flat, null, 2));

const underscoreFlat = flatten(original, '_');
console.log('\nFlattened Object (underscore delimiter):', JSON.stringify(underscoreFlat, null, 2));

const unflat = unflatten(flat);
console.log('\nUnflattened Object:', JSON.stringify(unflat, null, 2));

// Note: Circular references are not re-created; '[Circular]' strings remain.

view raw JSON →