Sift is no longer actively maintained. If you'd like to contribute, consider creating a fork.
Immutable data library for Luau and roblox-ts.
Heavily based on @freddylist's Llama library.
Sift is available from Wally, the Roblox Creator Store and GitHub releases.
Wally is a CLI package manager (much like NPM, Yarn or Cargo) for Roblox by @UpliftGames. Find out more at https://github.com/upliftgames/wally.
# wally.toml
[dependencies]
Sift = "csqrl/sift@x.x.x" # Replace with current version number
$ wally install
Sift includes built-in TypeScript compatibility. The API is identical to the Luau counterpart.
$ npm install @rbxts/sift
// example.ts
import { Dictionary } from "@rbxts/sift"
Dictionary.merge({ a: 1, c: 2 }, { b: 3, c: Sift.None }) // { a: 1, b: 3 }
Grab a copy from the Roblox Creator Store or GitHub releases, and drop it into Studio. The Sift model file can be synced in using Rojo.
Sift is not open for contributions and is not actively maintained. If you would like to contribute, please consider creating a fork.
As per the recommendations in Llama's README, the following changes have been made:
- Sift utilises native Luau types. Llama used @osyrisrblx/t for type checking, which meant that types were only checked at runtime. Sift does not use runtime type-checking. You will need to install a library like GreenTea or t manually.
- Organised tests.
*.spec
files are now alongside their source files, making it easier to locate them. - Documentation is now generated using @upliftgames' moonwave (Docusaurus). This makes it quick and easy to add new documentation, and provides a pleasant experience for the user.
- Built-in TypeScript typings.