# rtfeldman/seamless-immutable

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/rtfeldman-seamless-immutable).**

5,339 stars · 198 forks · JavaScript · BSD-3-Clause · archived

## Links

- GitHub: https://github.com/rtfeldman/seamless-immutable
- awesome-repositories: https://awesome-repositories.com/repository/rtfeldman-seamless-immutable.md

## Description

This is a JavaScript immutable data library used to create objects and arrays that prevent direct mutation. It serves as an immutable state manager and object wrapper designed to ensure data consistency by blocking modifications while remaining compatible with standard JavaScript syntax.

The library functions as a converter that transforms standard mutable data into frozen structures and can convert them back for local modifications. This allows for a workflow where data is switched between immutable and mutable versions to perform bulk edits before locking the state again.

The project provides capabilities for nested data transformation, including path-based updates, deep merging of objects, and querying values within deep hierarchies. It also supports array-to-object transformations, property removal via predicates, and the ability to detect whether a structure is immutable.

## Tags

### Programming Languages & Runtimes

- [Immutability Converters](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/specialized-memory-formats/immutable-data-structures/immutability-converters.md) — Transforms plain JavaScript objects and arrays into immutable data structures that block mutation. ([source](https://github.com/rtfeldman/seamless-immutable#readme))
- [Immutable Data Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/immutable-data-libraries.md) — Provides a comprehensive set of immutable objects and arrays compatible with standard JavaScript syntax.
- [Mutation Blocking Mechanisms](https://awesome-repositories.com/f/programming-languages-runtimes/mutation-blocking-mechanisms.md) — Prevents object modifications by overriding prototypes with frozen states or write-blocking proxies.
- [Immutable Data Structures](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/specialized-memory-formats/immutable-data-structures.md) — Creates objects and arrays that cannot be modified after creation to ensure total data consistency. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/.zuul.yml))
- [Object Merging](https://awesome-repositories.com/f/programming-languages-runtimes/object-property-transformers/object-merging.md) — Combines multiple objects into a single immutable structure with support for deep merge configurations. ([source](https://github.com/rtfeldman/seamless-immutable#readme))

### Software Engineering & Architecture

- [Immutable Data Management](https://awesome-repositories.com/f/software-engineering-architecture/immutable-data-management.md) — Prevents accidental state changes by providing objects and arrays that cannot be modified after creation.
- [Immutable State Utilities](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/state-management/state-logic-and-utilities/immutable-state-utilities.md) — Provides tools for managing application state through deep merging and path-based immutable updates.
- [Nested Data Transformers](https://awesome-repositories.com/f/software-engineering-architecture/recursive-validation-engines/recursive-tree-traversers/data-structure-traversers/nested-data-transformers.md) — Provides utilities for recursively traversing and transforming nested dictionaries and lists without mutation.
- [Path-Based Tree Traversers](https://awesome-repositories.com/f/software-engineering-architecture/recursive-validation-engines/recursive-tree-traversers/dependency-tree-traversers/path-based-tree-traversers.md) — Implements algorithms for navigating and updating deep tree structures using specific access paths.
- [Path-Based Nested Updates](https://awesome-repositories.com/f/software-engineering-architecture/state-management/object-state-trackers/path-based-nested-updates.md) — Provides utilities for updating specific values within deeply nested objects using key paths. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/README.md))
- [Immutable Object Merging](https://awesome-repositories.com/f/software-engineering-architecture/non-destructive-editing-workflows/immutable-object-merging.md) — Provides logic to combine multiple data sources into a new frozen object without mutating original inputs.

### Data & Databases

- [Immutability Converters](https://awesome-repositories.com/f/data-databases/immutability-converters.md) — Creates shallow or deep mutable copies of immutable structures to enable standard JavaScript modifications. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/README.md))
- [Immutable Array Updates](https://awesome-repositories.com/f/data-databases/immutable-array-updates.md) — Produces new immutable structures by setting values or applying transformer functions to nested paths. ([source](https://github.com/rtfeldman/seamless-immutable#readme))
- [Path-Based Value Retrieval](https://awesome-repositories.com/f/data-databases/key-value-stores/cache-key-management/cache-value-retrievals/path-based-value-retrieval.md) — Fetches a specific value from a nested path within an immutable structure with default value fallback. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/README.md))
- [Nested Data Extractors](https://awesome-repositories.com/f/data-databases/nested-data-extractors.md) — Retrieves values from deep nested paths within immutable structures, providing a default value if the path is missing. ([source](https://github.com/rtfeldman/seamless-immutable#readme))
- [Recursive Structure Processors](https://awesome-repositories.com/f/data-databases/recursive-structure-processors.md) — Traverses and transforms nested JavaScript objects and arrays into immutable versions using recursive locking.
- [Mutable Stores](https://awesome-repositories.com/f/data-databases/state-management-stores/mutable-stores.md) — Transforms immutable objects and arrays back into standard mutable structures for state updates. ([source](https://github.com/rtfeldman/seamless-immutable#readme))
- [Predicate-Based Element Filtering](https://awesome-repositories.com/f/data-databases/array-element-modifiers/predicate-based-element-filtering.md) — Allows removing elements from immutable collections based on a boolean predicate function.
- [Immutability Wrappers](https://awesome-repositories.com/f/data-databases/array-manipulation-utilities/fluent-collection-pipelines/immutability-wrappers.md) — Wraps standard JavaScript collections to block direct modifications and ensure data consistency.
- [Immutable Mutation Batching](https://awesome-repositories.com/f/data-databases/batch-processing/batch-matrix-multiplication-utilities/immutable-mutation-batching.md) — Optimizes immutable updates by applying multiple changes to a temporary mutable copy before re-freezing.
- [Map Key Removals](https://awesome-repositories.com/f/data-databases/key-value-stores/structured-object-mappings/object-linked-key-value-mappings/map-key-removals.md) — Excludes specific keys or elements from immutable objects or arrays based on a provided predicate. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/README.md))
- [Object Property Omission](https://awesome-repositories.com/f/data-databases/object-property-omission.md) — Creates new immutable objects by excluding specific keys or elements that match a predicate. ([source](https://github.com/rtfeldman/seamless-immutable#readme))
- [State Consistency Patterns](https://awesome-repositories.com/f/data-databases/strong-consistency-guarantees/write-consistency-enforcement/state-consistency-patterns.md) — Implements patterns to ensure predictable application state by enforcing immutable data structures.

### DevOps & Infrastructure

- [Immutable Value Transformers](https://awesome-repositories.com/f/devops-infrastructure/function-as-a-service-platforms/map-value-updaters/immutable-value-transformers.md) — Allows applying transformer functions to properties to calculate new values while maintaining immutability. ([source](https://github.com/rtfeldman/seamless-immutable/blob/master/README.md))
