@rbxts/immut
Advanced tools
Comparing version 0.3.2-ts.0 to 0.4.0-ts.0
{ | ||
"name": "@rbxts/immut", | ||
"version": "0.3.2-ts.0", | ||
"version": "0.4.0-ts.0", | ||
"description": "A draft-based immutable data library based on Immer", | ||
@@ -5,0 +5,0 @@ "main": "src/init.lua", |
@@ -6,1 +6,31 @@ # Immut | ||
[View the docs](https://solarhorizon.github.io/immut) | ||
# TypeScript Usage | ||
```ts | ||
import Immut, { None, produce } from "@rbxts/immut"; | ||
let oldState: Array<string> | undefined; | ||
const newState = produce(oldState, (draft) => { | ||
if (!draft) return []; | ||
if (draft.includes("foo")) return None; | ||
// draft.push(), draft.insert(), draft.unshift() NOT allowed as they compile to table.insert, which is not draft-safe | ||
Immut.table.insert(draft, "draft-safe"); | ||
// index starts at 1 for draft-safe table functions! | ||
Immut.table.insert(draft, 1, "draft-safe"); | ||
// draft.remove(), draft.shift() NOT allowed as they compile to table.remove, which is not draft-safe | ||
Immut.table.remove(draft); | ||
// index starts at 1 for draft-safe table functions! | ||
Immut.table.remove(draft, 1); | ||
draft.pop(); // allowed as it does not compile to table.remove: draft[#draft] = nil | ||
// draft.sort() NOT allowed as it compiles to table.sort, which is not draft-safe | ||
Immut.table.sort(draft, (a, b) => a > b); | ||
// draft.clear() NOT allowed as it compiles to table.clear, which is not draft-safe | ||
Immut.table.clear(draft); | ||
}); | ||
``` |
@@ -1,4 +0,8 @@ | ||
import { Draft } from "./type-externals"; | ||
import { Objectish } from "./type-internals"; | ||
import None from "./None"; | ||
import { Draft } from "./types-external"; | ||
import { Objectish } from "./types-internal"; | ||
export { default as None } from "./None"; | ||
export * as table from "./table"; | ||
export declare function createDraft<T extends Objectish>(base: T): Draft<T>; | ||
@@ -10,5 +14,5 @@ export declare const current: typeof finishDraft; | ||
export declare function original<T>(draft: Draft<T>): T; | ||
export declare function produce<T>(base: T, recipe: (draft: Draft<T>) => typeof draft | void | undefined): T; | ||
export declare function remove<T>(draft: Draft<Array<T>>, number?: number): T | undefined; | ||
export declare function insert<T>(draft: Draft<Array<T>>, value: T): void; | ||
export declare function insert<T>(draft: Draft<Array<T>>, pos: number, value: T): void; | ||
export declare function produce<T>( | ||
base: T, | ||
recipe: (draft: Draft<T>) => typeof draft | void | undefined | (T extends undefined ? typeof None : never), | ||
): T; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
25471
30
36
69