Skip to content

PepeElToro41/sift

Repository files navigation

Sift

Source code Itch.io store page Roblox library

Latest GitHub version Latest Wally version

Immutable data library for Luau (Roblox).

Heavily based on @freddylist's Llama library, which is no longer maintained.

Documentation

Documentation, powered by moonwave, is available at https://csqrl.github.io/sift.

v0.x

For the time being, releases will remain at v0.x, and Sift should not be considered 100% stable. This is in line with the Semantic Versioning 2.0.0 specification.

  • Breaking changes may occur when the minor version is incremented.
  • The patch version will be incremented for additions, non-breaking changes, and bug fixes.

This will remain the same until v1.x.

Quick Start

Sift is available from Wally, Itch.io, the Roblox Library, and GitHub releases.

While Sift is 100% free and open source, if you feel like sponsoring, Sift is also available on Itch.io.

Wally

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/[email protected]"
$ wally install

TypeScript

You shouldn't need to use Sift in TypeScript. Sift essentially brings the power of TypeScript's Array, Object and Set methods to Luau.

See more on MDN:

Manual Installation

Grab a copy from the Roblox Library or GitHub releases, and drop it into Studio.

What's Changed?

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 will not check types at runtime. If you're using the library wrong, you'll get errors at runtime anyway!
  • 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.

What's New?

Arrays (Lists)

  • at: Get an element at a specific index (negative indices are supported).
  • freeze: Freeze an array.
  • freezeDeep: Freeze an array and all nested arrays.
  • shuffle: Shuffle the elements of an array to a random order.

Dictionaries

  • entries: Get the entries of a dictionary as an array of key-value pairs.
  • freeze: Freeze a dictionary.
  • freezeDeep: Freeze a dictionary and all nested dictionaries.
  • fromEntries: Create a dictionary from an array of key-value pairs.

Sets

  • count: Get the number of elements in a set.

About

Immutable data library for Luau.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Lua 100.0%