{"library":"reftools","title":"RefTools","description":"RefTools is a JavaScript utility library providing a comprehensive set of functions for working with JavaScript objects, particularly focusing on JSON References, JSON Pointers, and various cloning strategies. It offers deep, shallow, and circular-aware cloning, object flattening, and powerful recursion and visitation mechanisms for complex object structures. Currently at version 1.1.9, the library is actively maintained, as evidenced by its integration into the `oas-kit` monorepo, which includes projects like `swagger2openapi`. While `reftools` itself does not have a rapid, independent release cadence, its core features are crucial for OpenAPI/Swagger tooling, ensuring ongoing relevance and updates. Its key differentiators lie in its robust handling of JSON Pointers/References and advanced object traversal features with configurable callbacks, making it suitable for intricate data manipulation and schema processing tasks.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install reftools"],"cli":null},"imports":["import { clone } from 'reftools'","import { dereference } from 'reftools'","import { jptr } from 'reftools'","import { recurse } from 'reftools'","import { visit } from 'reftools'"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { clone, dereference, jptr, circularClone } from 'reftools';\n\nconst originalObject = {\n  a: 1,\n  b: { c: 2 },\n  d: { $ref: '#/b' }, // JSON Reference\n  e: [],\n};\noriginalObject.e.push(originalObject.b); // Introduce a circular reference\n\nconsole.log('Original Object:', JSON.stringify(originalObject, null, 2));\n\n// 1. Basic cloning\nconst clonedObject = clone(originalObject);\nconsole.log('\\nCloned Object (JSON.parse/stringify):', JSON.stringify(clonedObject, null, 2));\n// Note: JSON.parse/stringify cloning loses circular refs and some types\n\n// 2. Dereferencing JSON Pointers\nconst dereferencedObject = dereference(originalObject);\nconsole.log('\\nDereferenced Object (JSON Pointers resolved):', JSON.stringify(dereferencedObject, null, 2));\n\n// 3. Using JSON Pointer (jptr) to get and set values\nconst valueA = jptr(originalObject, '/a');\nconsole.log(`\\nValue at '/a': ${valueA}`);\n\njptr(originalObject, '/b/c', 99);\nconsole.log('Object after jptr set /b/c to 99:', JSON.stringify(originalObject, null, 2));\n\n// 4. Cloning with circular reference handling\nconst circularHandledClone = circularClone(originalObject);\nconsole.log('\\nCircular-aware cloned object (inspect for circularity - will be simplified):', circularHandledClone);","lang":"javascript","description":"Demonstrates basic cloning, JSON Reference dereferencing, JSON Pointer (jptr) usage for getting/setting values, and cloning an object with circular references.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}