All Projects → MartinSnyder → Seamless Immutable Cursor

MartinSnyder / Seamless Immutable Cursor

Licence: mit
Compact Cursor Library built on top of the excellent seamless-immutable

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Seamless Immutable Cursor

Purefun
Functional Programming library for Java
Stars: ✭ 37 (-31.48%)
Mutual labels:  functional-programming
Karate
Webscraper
Stars: ✭ 45 (-16.67%)
Mutual labels:  functional-programming
Qt Promise
Chainable promises for Qt
Stars: ✭ 48 (-11.11%)
Mutual labels:  functional-programming
Redash
Tiny functional programming suite for JavaScript.
Stars: ✭ 40 (-25.93%)
Mutual labels:  functional-programming
Osagai
🀄️A tiny library for creating WebComponents in a Functional way
Stars: ✭ 42 (-22.22%)
Mutual labels:  functional-programming
Inferno Most Fp Demo
A demo for the ReactJS Tampa Bay meetup showing how to build a React+Redux-like architecture from scratch using Inferno, Most.js, reactive programmning, and various functional programming tools & techniques
Stars: ✭ 45 (-16.67%)
Mutual labels:  functional-programming
Fauxgaux
⛳️ Functional Go
Stars: ✭ 36 (-33.33%)
Mutual labels:  functional-programming
Bullseye
A functional language frontend for the Dart VM.
Stars: ✭ 53 (-1.85%)
Mutual labels:  functional-programming
Ios Oss
Kickstarter for iOS. Bring new ideas to life, anywhere.
Stars: ✭ 7,840 (+14418.52%)
Mutual labels:  functional-programming
Functionalrx
FunctionalRx is a collection of constructs to simplify a functional programming approach to Java and [STABLE]
Stars: ✭ 47 (-12.96%)
Mutual labels:  functional-programming
Fx Ts
Computational environments and effects for TypeScript
Stars: ✭ 42 (-22.22%)
Mutual labels:  functional-programming
Graphql Lodash
🛠 Data manipulation for GraphQL queries with lodash syntax
Stars: ✭ 1,003 (+1757.41%)
Mutual labels:  functional-programming
Funland
Type classes for interoperability of common algebraic structures in JavaScript, TypeScript and Flow
Stars: ✭ 46 (-14.81%)
Mutual labels:  functional-programming
Lambda
λ → C++ library for functional programming
Stars: ✭ 38 (-29.63%)
Mutual labels:  functional-programming
Bkmrkd
Bkmrkd is a self-hosted, lightweight bookmarking service run on node.js and rethinkdb
Stars: ✭ 52 (-3.7%)
Mutual labels:  functional-programming
Safedom
🔫 safedom is a safe way to you manipulate dom using a purer functional style.
Stars: ✭ 37 (-31.48%)
Mutual labels:  functional-programming
Mostly Adequate Guide Ru
Mostly adequate guide to FP (in javascript, translated to russian)
Stars: ✭ 1,030 (+1807.41%)
Mutual labels:  functional-programming
Tsoption
Correct, easy to use Option type for TypeScript. 🦄
Stars: ✭ 53 (-1.85%)
Mutual labels:  functional-programming
Rambda
Faster and smaller alternative to Ramda
Stars: ✭ 1,066 (+1874.07%)
Mutual labels:  functional-programming
Smallfunction
Stack allocated and type-erased functors 🐜
Stars: ✭ 47 (-12.96%)
Mutual labels:  functional-programming

seamless-immutable-cursor

Compact Cursor Library built on top of the excellent seamless-immutable. Cursors can be used to manage transitions and manipulations of immutable structures in an application.

Presentation

A 20 minute presentation explains the utility of this library and the repository contents. Slides can be viewed here

Example

const rootCursor = new Cursor({
    users: {
        abby: 1,
        ben: 2,
        claire: 3,
        dan: 4
    },
    documents: [
        {
            name: 'CV',
            owner: 1,
            mediaType: 'application/pdf'
        },
        {
            name: 'References',
            owner: 1,
            mediaType: 'text/plain'
        }
    ]
});

// Register a function to react to new generations of our immutable data
rootCursor.onChange((nextData, prevData, pathUpdated) => {
    console.debug('Updated ' + JSON.stringify(pathUpdated));
});

// Create a cursor for a limited portion of our data hierarchy
const childCursor = rootCursor.refine(['documents', 0, 'name']);

// firstDocumentName will be 'CV'
const firstDocumentName = childCursor.data;

// Update -- this switches the data owned by rootCursor to point to
// a new generation of immutable data
childCursor.data = 'Resume';

// updatedFirstDocumentName will be 'Resume' because the cursor points
// to the location, not the specific data
const updatedFirstDocumentName = childCursor.data;

// updatedFirstDocumentNameFromRoot will ALSO be 'Resume' because the
// 'managed' data has moved to a new generation based on the prior update
const updatedFirstDocumentNameFromRoot = rootCursor.data.documents[0].name;

React Demo

The demo folder contains a simple demo that combines this library, seamless-immutable and React.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].