{"library":"safe-flat","title":"Safe Flat Utilities","description":"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.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install safe-flat"],"cli":null},"imports":["import { flatten } from 'safe-flat';","import { unflatten } from 'safe-flat';","import type { FlattenedObject, UnflattenedObject } from 'safe-flat';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { flatten, unflatten } from 'safe-flat';\n\nconst original = {\n    a: {\n        b: {\n            c: [{ val: 'one' }, { val: 'two' }],\n            d: 'three'\n        },\n        e: 'four',\n    }\n};\noriginal.a.b.f = original.a.b; // Introduce a circular reference\noriginal.a.b.c.push(original.a); // Another circular reference\n\nconsole.log('Original Object:', JSON.stringify(original, null, 2));\n\nconst flat = flatten(original);\nconsole.log('\\nFlattened Object (default delimiter):', JSON.stringify(flat, null, 2));\n\nconst underscoreFlat = flatten(original, '_');\nconsole.log('\\nFlattened Object (underscore delimiter):', JSON.stringify(underscoreFlat, null, 2));\n\nconst unflat = unflatten(flat);\nconsole.log('\\nUnflattened Object:', JSON.stringify(unflat, null, 2));\n\n// Note: Circular references are not re-created; '[Circular]' strings remain.\n","lang":"typescript","description":"Demonstrates how to flatten a nested object (including circular references) and then unflatten it back, using both default and custom delimiters.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}