Welcome to @rimbu/deep
! This package offers powerful tools to handle plain JavaScript objects as immutable objects, making your code more robust and maintainable.
- Immutable Modification: Use the
Patch
object for convenient and immutable modifications of simple objects. - Pattern Matching: The
Match
object allows easy pattern matching on plain objects. - Nested Value Querying: Easily query nested values with the
Path
object. - Compile-Time Protection: The
Immutable
type helps create plain objects with compile-time protection against mutation. - Flexible Tuples: The
Tuple
type provides similar functionality toas const
but with more flexibility.
For complete documentation, please visit the Immutable Objects overview in the Rimbu Docs, or directly explore the Rimbu Deep API Docs.
Experience @rimbu/deep
in action! Try Out Rimbu on CodeSandBox.
Yarn:
yarn add @rimbu/deep
npm:
npm install @rimbu/deep
Bun:
bun add @rimbu/deep
Create or edit import_map.json
in your project root:
{
"imports": {
"@rimbu/": "https://deno.land/x/rimbu@x.y.z/"
}
}
Replace x.y.z
with the desired version.
In this way you can use relative imports from Rimbu in your code, like so:
import { List } from '@rimbu/core/mod.ts';
import { HashMap } from '@rimbu/hashed/mod.ts';
Note that for sub-packages, due to conversion limitations it is needed to import the index.ts
instead of mod.ts
, like so:
import { HashMap } from '@rimbu/hashed/map/index.ts';
To run your script (let's assume the entry point is in src/main.ts
):
deno run --import-map import_map.json src/main.ts
import { patch } from '@rimbu/deep';
console.log(
patch({
a: 'a',
b: { c: 1, d: true },
})({
a: 'q',
b: { c: (v) => v + 1 },
})
);
// => { a: 'q', b: { c: 2, d: true }}
Created and maintained by Arvid Nicolaas.
We welcome contributions! Please read our Contributing guide.
Made with contributors-img.
This project is licensed under the MIT License. See the LICENSE for details.