{"library":"mixme","title":"Mixme Object Merger","description":"Mixme is a JavaScript/TypeScript library (currently at v2.0.2) designed for recursively merging and manipulating JavaScript objects. It provides immutable merging via `merge` and mutable in-place modification via `mutate`. Key differentiators include its zero-dependency footprint, minimal size, and pure function approach for `merge`. It offers comprehensive TypeScript type definitions and supports both ES Modules (ESM) and CommonJS environments. While a specific release cadence isn't explicitly published, the project appears actively maintained with a streamlined release process via GitHub Actions. A notable behavior is that arrays are always overwritten during merges, not recursively combined, which is a common point of confusion for users expecting deep array merging.","language":"javascript","status":"active","last_verified":"Tue Apr 21","install":{"commands":["npm install mixme"],"cli":null},"imports":["import { merge } from 'mixme';","import { mutate } from 'mixme';","import { clone } from 'mixme';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { merge, mutate, clone, snake_case } from 'mixme';\n\ninterface Config {\n  appName: string;\n  version: string;\n  settings: {\n    theme: string;\n    notifications: boolean;\n  };\n  features: string[];\n}\n\nconst defaultAppConfig: Config = {\n  appName: 'My App',\n  version: '1.0.0',\n  settings: {\n    theme: 'dark',\n    notifications: true,\n  },\n  features: ['dashboard', 'reports'],\n};\n\nconst userConfig: Partial<Config> = {\n  appName: 'My Custom App',\n  settings: {\n    theme: 'light',\n  },\n  features: ['dashboard', 'analytics'],\n};\n\n// Immutable merge: creates a new object\nconst finalConfig = merge(defaultAppConfig, userConfig);\nconsole.log('Final Config (merged):', finalConfig);\n// Expected: { appName: 'My Custom App', version: '1.0.0', settings: { theme: 'light', notifications: true }, features: ['dashboard', 'analytics'] }\n\n// Mutable merge: modifies the first object\nconst baseConfigCopy = clone(defaultAppConfig); // Clone to avoid modifying original defaultAppConfig\nmutate(baseConfigCopy, userConfig);\nconsole.log('Mutated Config:', baseConfigCopy);\n// Expected: { appName: 'My Custom App', version: '1.0.0', settings: { theme: 'light', notifications: true }, features: ['dashboard', 'analytics'] }\n\n// Example of snake_case utility\nconst camelCaseObject = { userFirstName: 'John', userLastName: 'Doe' };\nconst snakeCaseObject = snake_case(camelCaseObject);\nconsole.log('Snake Case Object:', snakeCaseObject);\n// Expected: { user_first_name: 'John', user_last_name: 'Doe' }","lang":"typescript","description":"Demonstrates `merge` for immutable object combination, `mutate` for in-place modification, and `snake_case` utility, highlighting how arrays are overwritten.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}