
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
@lambda-fn/cell
Advanced tools
Simple container for store mutable value inspired by std::cell::Cell from Rust
npm install --save @lambda-fn/cell
# or
yarn add @lambda-fn/cell
interface CellStatic {
isCell(maybeCell: unknown): maybeCell is Cell<unknown>;
isCellWith<T>(guard: (v: unknown) => v is T, maybeCell: unknown): maybeCell is Cell<T>;
}
interface CellFactory extends CellStatic {
<T>(initialValue: T): Cell<T>;
}
interface Cell<T> {
value: T;
get(): T;
set(value: T): void;
update(updater: (value: T) => T): void;
subscribe(subscription: (value: T) => void): () => void;
clone(): Cell<T>;
map<U>(mapper: (value: T) => U): Cell<U>;
fold<U>(mapper: (value: T) => U): U;
}
// Cell also is default export
function Cell<T>(initialValue: T): Cell<T>; // implements CellFactory
function isCell(maybeCell: unknown): maybeCell is Cell<unknown>;
function isCellWith<T>(guard: (v: unknown) => v is T, maybeCell: unknown): maybeCell is Cell<T>;
function get<T>(cell: Cell<T>): T;
function set<T>(cell: Cell<T>, value: T): void;
function update<T>(cell: Cell<T>, updater: (value: T) => T): void;
function subscribe<T>(cell: Cell<T>, subscription: (value: T) => void): () => void;
function clone<T>(cell: Cell<T>): Cell<T>;
function map<T, U>(cell: Cell<T>, mapper: (value: T) => U): Cell<U>;
function map<T, U>(mapper: (value: T) => U): (cell: Cell<T>) => Cell<U>;
function fold<T, U>(cell: Cell<T>, mapper: (value: T) => U): U;
function fold<T, U>(mapper: (value: T) => U): (cell: Cell<T>) => U;
import Cell from '@lambda-fn/cell';
const counter = Cell(0);
const unsubscribe = counter.subscribe(v => {
console.log(`Result: ${v}`);
});
const interval = setInterval(() => {
counter.value++;
}, 100);
setTimeout(() => {
unsubscribe();
clearInterval(interval);
console.log(counter.fold(v => `Result: ${v}`));
}, 3000);
Or in FP style:
import {Cell, update, fold} from '@lambda-fn/cell';
const counter = Cell(0);
const foldToString = fold((v: number) => `Result: ${v}`);
const unsubscribe = subscribe(counter, () => {
console.log(foldToString(counter));
});
const interval = setInterval(() => {
update(counter, v => v + 1);
}, 100);
setTimeout(() => {
unsubscribe();
clearInterval(interval);
console.log(foldToString(counter));
}, 3000);
Cell also implements writable store from Svelte:
<script>
import Cell from '@lambda-fn/cell';
const counter = Cell(0);
</script>
<button on:click={() => $counter++}>Clicked {$counter} times</button>
MIT
FAQs
Simple container for store mutable value
We found that @lambda-fn/cell demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.