open-index/open-npm huggingface dataset:
npm package: @rbxts/janitor-utilities
Description: Generated by [Rojo](https://github.com/rojo-rbx/rojo) 7.4.4.
Author: HowManySmall
Latest version: 1.0.0-ts.0

# janitor-utilities
Generated by [Rojo](https://github.com/rojo-rbx/rojo) 7.4.4.

## Getting Started
To build this library, use:

```bash
rojo build -o "janitor-utilities.rbxmx"
```

For more help, check out [the Rojo documentation](https://rojo.space/docs).
npm package: @rbxts/jecs
Description: Stupidly fast Entity Component System
Author: Ukendio
Latest version: 0.11.0

Just a stupidly fast Entity Component System

-   [Entity Relationships](https://ajmmertens.medium.com/building-games-in-ecs-with-entity-relationships-657275ba2c6c) as first class citizens
-   Iterate 800,000 entities at 60 frames per second
-   Type-safe [Luau](https://luau-lang.org/) API
-   Zero-dependency package
-   Optimized for column-major operations
-   Cache friendly [archetype/SoA](https://ajmmertens.medium.com/building-an-ecs-2-archetypes-and-vectorization-fe21690805f9) storage
-   Rigorously [unit tested](https://github.com/Ukendio/jecs/actions/workflows/unit-testing.yaml) for stability

### Get Started
It is recommended that you clone the repository and navigate the documentation in your favourite editor.

This repository includes a few subfolders that can help you get started with jecs:

- how_to:
 	This is a step-by-step introduction to how this ECS works and the reasoning behind its design.

- modules:
 	These are regularly used modules and should be mostly working, but some might not be. You can look in this folder to see some code that you might use to help you hit the ground running quickly.

- examples:
  	These are larger programs that showcase real use cases and can help you understand how everything fits together.

If you wish to view the documentation inside Roblox Studio, you can find an importable model file [here](https://nightly.link/Ukendio/jecs/workflows/build-studio-docs.yaml/main/studio_docs.zip).

### Benchmarks

21,000 entities 125 archetypes 4 random components queried.
![Queries](test/benches/data/image-3.png)
Can be found under /test/benches/visual/query.luau

Inserting 8 components to an entity and updating them over 50 times.
![Insertions](test/benches/data/image-4.png)
Can be found under /test/benches/visual/insertions.luau
npm package: @rbxts/jecs-assemblies
Description: Utility for calculating cframe offset chains for Jecs.
Latest version: 1.0.2-ts.1

# Jecs Assemblies

Utility for calculating cframe offset chains for Jecs.

### Setup

-   Replace `transform`, `relative`, and `pivot` with your own components. This is optional, and
    components will be created if they don't exist when calling `jecs_assemblies.world`.

-   Call `jecs_assemblies.world(world)` **before using it** to set it up with your world.

-   Add `jecs_assemblies.system()` to your systems. Set the order right before your transform cframes apply.

```luau
local c = require(components)
local jecs_assemblies = require(jecs_assemblies)

jecs_assemblies.transform = c.transform
jecs_assemblies.world(world)

return {
    system = function()
        jecs_assemblies.system()
    end
}
```

### Usage

-   Use `jecs_assemblies.pivot` as a pair to reference a parent entity.
-   Use `jecs_assemblies.relative` to set a relative CFrame to the parent.
-   Transforms will be applied to `jecs_assemblies.transform`. The very first parent will use the value of `jecs_assemblies.transform`.
-   You can chain multiple pivots to get a final transform.

```luau
local c = require(components)
local ja = require(jecs_assemblies)

local character = world:entity()
local camera = world:entity()

world:set(character, c.transform, cf)

world:add(camera, pair(ja.pivot, character))
world:set(camera, c.relative, rel)

-- camera transform = character transform * camera rel
```

### Swapping pivots

-   use `jecs_assemblies.swap_pivot` to swap the pivot of an entity. This will change your pivot while keeping the world space transform by
    calculating the relative cframe from the current entity transform and the new pivot transform. This function will also remove any previous pivots.
npm package: @rbxts/jecs-spring
Description: Utility for running springs in Jecs.
Latest version: 1.0.2-ts.1

# Jecs Spring

Utility for running springs in Jecs.

### Setup

-  Call `jecs_spring.world(world)` **before using it** to set it up with your world.

-  Add `jecs_spring.system(delta)` to your systems. Set the order right before your component values apply. This system needs the delta time to step the springs.

```luau
local c = require(components)
local jecs_spring = require(jecs_spring)

jecs_spring.world(world)

return {
    system = function(delta: number)
        jecs_spring.system(delta)
    end
}
```

### Usage

-  Use `jecs_spring.goal` as a pair to set your goal value.

-  The target should be the component you want to interpolate

-  The value of the pair should be the goal value. This value should be any of ripple `Animatable` types `(number | vector | Vector3 | Vector2 | CFrame | Color3 | UDim | UDim2 | Rect)`.

```luau
local spring = require(jecs_spring)

local cube = world:entity()

world:set(cube, c.size, Vector3.new(1, 1, 1))
world:set(cube, pair(spring.goal, c.size), Vector3.new(2, 2, 2))

-- cube will go from 1 -> 2
```

### Configuring the spring.

-  Use `jecs_spring.options` as a pair to set the options for the spring. Similar to jecs.goal, the target is the component's spring you want to configure.

-  Its recommended that you set the options before the goal so the spring starts with the correct configuration.

```luau
local spring = require(jecs_spring)

local cube = world:entity()

world:set(cube, c.size, Vector3.new(1, 1, 1))
world:set(cube, pair(spring.options, c.size), { friction = 30, tension = 800 })
world:set(cube, pair(spring.goal, c.size), Vector3.new(2, 2, 2))

-- cube will go from 1 -> 2 with a friction of 30 and tension of 800
```

### Manipulating the spring object.

-  The spring object is stored in a `jecs_spring.motion` pair. The target is the component's spring.

-  The spring object is available right after you set the goal.

-  The spring object is destroyed when the goal is removed.

```luau
local spring = require(jecs_spring)

local cube = world:entity()

world:set(cube, c.size, Vector3.new(1, 1, 1))
world:set(cube, pair(spring.goal, c.size), Vector3.new(2, 2, 2))

local spring_motion = world:get(cube, pair(spring.motion, c.size))
spring_motion:impulse(Vector3.new(5, 5, 5))

```

### Checking spring completion.

-  Springs that have completed will be marked with a `jecs_spring.completed` pair. The target is the component's spring.

-  The completed pair is removed if you change the goal.

-  The completed pair is removed if you remove the goal.

```luau
local spring = require(jecs_spring)

local cube = world:entity()
world:set(cube, c.size, Vector3.new(3, 3, 3))

task.wait(2)
-- animate out
world:set(cube, pair(spring.goal, c.size), Vector3.zero)

function system()
    for entity in world:query(pair(spring.completed, c.size)) do
        world:delete(entity)
    end
end
```
npm package: @rbxts/jecs-topo-runtime
Description: A Runtime for Jecs
Author: Ivan Leontev
Latest version: 0.0.3

# jecs-topo-runtime

This package does not really depend on the jecs functionality.
This package will probably eventually be branched out into an abstract topo runtime package.

## Basic Setup

```ts
const world = new World()
const loop = new Loop(world, ...some other arguments that will be passed to systems)

const connection = loop.begin(RunService.Heartbeat)

const system = (arguments from loop constructor call) => {
    // some work
}

loop.scheduleSystem(system)

// hot reload stuff
loop.evictSystem(system)
// or more convenient
loop.replaceSystem(system, () => {})
```

## Builtin hooks

useEvent
useThrottle

There is `useHookState` function for implementing custom hooks.

## Side note

Not a single test has been written for the package so it may contain
There has not been written any test
npm package: @rbxts/jest
Description: Delightful testing for Roblox TypeScript
Author: littensy
Latest version: 3.16.0-ts.1

<p align="center">
  <p align="center">
    <img width="150" height="150" src="https://github.com/littensy/rbxts-jest/blob/main/assets/logo.png?raw=true" alt="Logo">
  </p>
  <h1 align="center"><b>@rbxts/jest</b></h1>
  <p align="center">
    TypeScript type definitions for Jest Lua.
    <br />
    <a href="https://npmjs.com/package/@rbxts/jest"><strong>npm package →</strong></a>
  </p>
</p>

TypeScript type definitions for [Jest Lua](https://github.com/jsdotlua/jest-lua) and [roblox-ts](https://roblox-ts.com), sourced from the official Jest types. Currently, `jest` and `jest-globals` are ported, while `jest-benchmark` is not yet available.

See the [Jest Lua documentation](https://jsdotlua.github.io/jest-lua/) for more information on how to use Jest Lua.

## Setup

Install Jest and Jest Globals with your package manager of choice:

```sh
npm install @rbxts/jest @rbxts/jest-globals
yarn add @rbxts/jest @rbxts/jest-globals
pnpm add @rbxts/jest @rbxts/jest-globals # 🛑 See below
```

Then, add the following to your Rojo project file, under the `node_modules` folder:

```json
"node_modules": {
  "$className": "Folder",
  "@rbxts": {
    "$path": "node_modules/@rbxts"
  },
  "@rbxts-js": {
    "$path": "node_modules/@rbxts-js"
  }
}
```

### Usage with pnpm

If you're using pnpm as your package manager, you'll need to create a `.npmrc` file in the root of your project with the following content:

```ini
node-linker=hoisted
```

## License

This project is licensed under the [MIT license](LICENSE).
npm package: @rbxts/jest-benchmark
Description: JestBenchmark bindings for Roblox
Author: littensy
Latest version: 3.16.0-ts.1

<p align="center">
  <p align="center">
    <img width="150" height="150" src="https://github.com/littensy/rbxts-jest/blob/main/assets/logo.png?raw=true" alt="Logo">
  </p>
  <h1 align="center"><b>@rbxts/jest</b></h1>
  <p align="center">
    TypeScript type definitions for Jest Lua.
    <br />
    <a href="https://npmjs.com/package/@rbxts/jest"><strong>npm package →</strong></a>
  </p>
</p>

TypeScript type definitions for [Jest Lua](https://github.com/jsdotlua/jest-lua) and [roblox-ts](https://roblox-ts.com), sourced from the official Jest types. Currently, `jest` and `jest-globals` are ported, while `jest-benchmark` is not yet available.

See the [Jest Lua documentation](https://jsdotlua.github.io/jest-lua/) for more information on how to use Jest Lua.

## Setup

Install Jest and Jest Globals with your package manager of choice:

```sh
npm install @rbxts/jest @rbxts/jest-globals
yarn add @rbxts/jest @rbxts/jest-globals
pnpm add @rbxts/jest @rbxts/jest-globals # 🛑 See below
```

Then, add the following to your Rojo project file, under the `node_modules` folder:

```json
"node_modules": {
  "$className": "Folder",
  "@rbxts": {
    "$path": "node_modules/@rbxts"
  },
  "@rbxts-js": {
    "$path": "node_modules/@rbxts-js"
  }
}
```

### Usage with pnpm

If you're using pnpm as your package manager, you'll need to create a `.npmrc` file in the root of your project with the following content:

```ini
node-linker=hoisted
```

## License

This project is licensed under the [MIT license](LICENSE).
npm package: @rbxts/jest-diff
Description: JestDiff bindings for Roblox
Author: littensy
Latest version: 3.16.0-ts.1

<p align="center">
  <p align="center">
    <img width="150" height="150" src="https://github.com/littensy/rbxts-jest/blob/main/assets/logo.png?raw=true" alt="Logo">
  </p>
  <h1 align="center"><b>@rbxts/jest</b></h1>
  <p align="center">
    TypeScript type definitions for Jest Lua.
    <br />
    <a href="https://npmjs.com/package/@rbxts/jest"><strong>npm package →</strong></a>
  </p>
</p>

TypeScript type definitions for [Jest Lua](https://github.com/jsdotlua/jest-lua) and [roblox-ts](https://roblox-ts.com), sourced from the official Jest types. Currently, `jest` and `jest-globals` are ported, while `jest-benchmark` is not yet available.

See the [Jest Lua documentation](https://jsdotlua.github.io/jest-lua/) for more information on how to use Jest Lua.

## Setup

Install Jest and Jest Globals with your package manager of choice:

```sh
npm install @rbxts/jest @rbxts/jest-globals
yarn add @rbxts/jest @rbxts/jest-globals
pnpm add @rbxts/jest @rbxts/jest-globals # 🛑 See below
```

Then, add the following to your Rojo project file, under the `node_modules` folder:

```json
"node_modules": {
  "$className": "Folder",
  "@rbxts": {
    "$path": "node_modules/@rbxts"
  },
  "@rbxts-js": {
    "$path": "node_modules/@rbxts-js"
  }
}
```

### Usage with pnpm

If you're using pnpm as your package manager, you'll need to create a `.npmrc` file in the root of your project with the following content:

```ini
node-linker=hoisted
```

## License

This project is licensed under the [MIT license](LICENSE).
npm package: @rbxts/jest-globals
Description: JestGlobal bindings for Roblox
Author: littensy
Latest version: 3.16.0-ts.1

<p align="center">
  <p align="center">
    <img width="150" height="150" src="https://github.com/littensy/rbxts-jest/blob/main/assets/logo.png?raw=true" alt="Logo">
  </p>
  <h1 align="center"><b>@rbxts/jest</b></h1>
  <p align="center">
    TypeScript type definitions for Jest Lua.
    <br />
    <a href="https://npmjs.com/package/@rbxts/jest"><strong>npm package →</strong></a>
  </p>
</p>

TypeScript type definitions for [Jest Lua](https://github.com/jsdotlua/jest-lua) and [roblox-ts](https://roblox-ts.com), sourced from the official Jest types. Currently, `jest` and `jest-globals` are ported, while `jest-benchmark` is not yet available.

See the [Jest Lua documentation](https://jsdotlua.github.io/jest-lua/) for more information on how to use Jest Lua.

## Setup

Install Jest and Jest Globals with your package manager of choice:

```sh
npm install @rbxts/jest @rbxts/jest-globals
yarn add @rbxts/jest @rbxts/jest-globals
pnpm add @rbxts/jest @rbxts/jest-globals # 🛑 See below
```

Then, add the following to your Rojo project file, under the `node_modules` folder:

```json
"node_modules": {
  "$className": "Folder",
  "@rbxts": {
    "$path": "node_modules/@rbxts"
  },
  "@rbxts-js": {
    "$path": "node_modules/@rbxts-js"
  }
}
```

### Usage with pnpm

If you're using pnpm as your package manager, you'll need to create a `.npmrc` file in the root of your project with the following content:

```ini
node-linker=hoisted
```

## License

This project is licensed under the [MIT license](LICENSE).
npm package: @rbxts/jest-matcher-utils
Description: JestMatcherUtils bindings for Roblox
Author: littensy
Latest version: 3.16.0-ts.1

<p align="center">
  <p align="center">
    <img width="150" height="150" src="https://github.com/littensy/rbxts-jest/blob/main/assets/logo.png?raw=true" alt="Logo">
  </p>
  <h1 align="center"><b>@rbxts/jest</b></h1>
  <p align="center">
    TypeScript type definitions for Jest Lua.
    <br />
    <a href="https://npmjs.com/package/@rbxts/jest"><strong>npm package →</strong></a>
  </p>
</p>

TypeScript type definitions for [Jest Lua](https://github.com/jsdotlua/jest-lua) and [roblox-ts](https://roblox-ts.com), sourced from the official Jest types. Currently, `jest` and `jest-globals` are ported, while `jest-benchmark` is not yet available.

See the [Jest Lua documentation](https://jsdotlua.github.io/jest-lua/) for more information on how to use Jest Lua.

## Setup

Install Jest and Jest Globals with your package manager of choice:

```sh
npm install @rbxts/jest @rbxts/jest-globals
yarn add @rbxts/jest @rbxts/jest-globals
pnpm add @rbxts/jest @rbxts/jest-globals # 🛑 See below
```

Then, add the following to your Rojo project file, under the `node_modules` folder:

```json
"node_modules": {
  "$className": "Folder",
  "@rbxts": {
    "$path": "node_modules/@rbxts"
  },
  "@rbxts-js": {
    "$path": "node_modules/@rbxts-js"
  }
}
```

### Usage with pnpm

If you're using pnpm as your package manager, you'll need to create a `.npmrc` file in the root of your project with the following content:

```ini
node-linker=hoisted
```

## License

This project is licensed under the [MIT license](LICENSE).
npm package: @rbxts/jest-vendor
Description: Internal module for @rbxts/jest
Author: littensy
Latest version: 0.1.0

## Deviations

The source code has been modified to include the following changes:

- Dependencies shared between Jest Lua and React Lua are re-exported from `@rbxts/react-vendor` to avoid duplication.
- Occurrences of `__DEV__ = true` have been replaced with `__DEV__ = _G.__DEV__`.
npm package: @rbxts/jsnatives
Description: A TypeScript library for Roblox that provides JavaScript-like native functionality, including Proxy, Object utilities, setTimeout/setInterval, JSON, and more.
Author: RsMan-Dev
Latest version: 1.1.5

# @rbxts/jsnatives

[![npm version](https://img.shields.io/npm/v/@rbxts/jsnatives)](https://www.npmjs.com/package/@rbxts/jsnatives)
[![GitHub license](https://img.shields.io/github/license/RsMan-Dev/rbxts-jsnatives)](https://github.com/RsMan-Dev/rbxts-jsnatives/blob/main/LICENSE)

A TypeScript library for Roblox that provides JavaScript-like native functionality, including Proxy implementation, Object utilities, setTimeout/setInterval implementations using Roblox's RunService, and JSON implementation.

A complete documentation is available [HERE](https://rsman-dev.github.io/docs/repo/rbxts-jsnatives).
npm package: @rbxts/lapis-mockdatastore
Description: ## Warning This is not a fully featured mock DataStoreService. It's intended to test [Lapis](https://github.com/nezuo/lapis) so it includes only the necessary features.
Latest version: 0.3.7

# data-store-service-mock

## Warning
This is not a fully featured mock DataStoreService. It's intended to test [Lapis](https://github.com/nezuo/lapis) so it includes only the necessary features.
npm package: @rbxts/lexi
Description: Localisation for Vide, simplified.
Author: daimond113
Latest version: 0.2.0

# lexi

Localisation for Vide, simplified.

Lexi allows you to define your text and get typed sources for use with [Vide](https://github.com/centau/vide).
It is designed with cloud translations in mind, and so has a CLI with pushing
functionality, allowing your code to be the source of truth for text in your
games.

As it uses manual translation, it is important to disable `AutoLocalize` on
your text.

## Installation

Lexi and the [CLI](https://pesde.dev/packages/daimond113/lexi_cli) are available
on [pesde](https://pesde.dev).

```sh
pesde add -t roblox  daimond113/lexi
pesde add -d -t lune daimond113/lexi_cli
```

Only the library is available on [npm](https://www.npmjs.com/) for
[roblox-ts](https://roblox-ts.com/).

```sh
npm i @rbxts/lexi
```

## Example

Lexi is designed for use with the new solver. Additionally, it is highly
recommended to use `FFlagDebugLuauStringSingletonBasedOnQuotes`, otherwise you
will need to cast your strings to singletons.

Because Lexi runs your module, it is required that you define your lexicon in
its own module.

```luau
local lexi = require(game:GetService("ReplicatedStorage").roblox_packages.lexi)
local lexicon = lexi.lexicon
local context = lexi.context

return lexicon("en-us", {
    hello = 'Hello there',
    pets = {
        hamster = context 'This is my ugly old hamster' "The speaker loves the hamster."
    },
    goodbye_player = 'Goodbye {player}, it is sad to leave you at {when:datetime}',
})
```

```luau
create "TextLabel" {
    AutoLocalize = false,
    Text = lexicon.hello,
}

create "TextLabel" {
    AutoLocalize = false,
    Text = lexicon.pets.hamster,
}

create "TextLabel" {
    AutoLocalize = false,
    Text = function()
        return lexicon.goodbye_player({ player = local_player.Name, when = time_source() })
    end,
}
```

```ts
import { lexicon, context } from "@rbxts/lexi"

export = lexicon("en-us", {
    hello: 'Hello there',
    pets: {
        hamster: context('This is my ugly old hamster')("The speaker still loves the hamster.")
    },
    goodbyePlayer: 'Goodbye {player}, it is sad to leave you at {when:datetime}',
})
```

```tsx
<textlabel
    AutoLocalize={false}
    Text={lexicon.hello}
/>
<textlabel
    AutoLocalize={false}
    Text={lexicon.pets.hamster}
/>
<textlabel
    AutoLocalize={false} 
    Text={() => lexicon.goodbyePlayer({ player: localPlayer.Name, when: timeSource() })}
/>
```
npm package: @rbxts/libopen-finally
Description: LibOpen's Finally
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-finallytask
Description: LibOpen's FinallyTask
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-fzy
Description: LibOpen's fzy
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-maybe
Description: LibOpen's Maybe
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-oklab
Description: LibOpen's Oklab
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-pushpull
Description: LibOpen's PushPull
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-radium
Description: LibOpen's Radium
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-sortingby
Description: LibOpen's sortingBy
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-tabby
Description: LibOpen's Tabby
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-ty
Description: LibOpen's ty
Latest version: 1.0.1

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/libopen-whyhttp
Description: LibOpen's whyhttp
Latest version: 1.0.0

# rbxts-elttob-libopen

roblox-ts typings for [Studio's Elttob LibOpen](https://github.com/elttob/LibOpen).

I, znotfireman, am not affiliated, associated, authorized, endorsed by, or in
any way officially connected with Studio Elttob.

## Excluded packages

- `LibOpen/Fusion` — please use my `@rbxts/hotfusion` or
  `@rbxts/fusion-temp-0.3` aliased with `@rbxts/fusion`, both packages have
   built-in JSX support.
npm package: @rbxts/linked-lists
Description: A module that provides basic linked list data structures.
Author: Bytebit
Latest version: 1.0.4

# Linked Lists
<p align="center">
  <a href="https://github.com/Bytebit-Org/roblox-LinkedLists/actions">
      <img src="https://github.com/Bytebit-Org/roblox-LinkedLists/workflows/CI/badge.svg" alt="CI status" />
  </a>
  <a href="http://makeapullrequest.com">
    <img src="https://img.shields.io/badge/PRs-welcome-blue.svg" alt="PRs Welcome" />
  </a>
  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License: MIT" />
  </a>
  <a href="https://discord.gg/QEz3v8y">
    <img src="https://img.shields.io/badge/discord-join-7289DA.svg?logo=discord&longCache=true&style=flat" alt="Discord server" />
  </a>
</p>

Linked Lists is a module that provides basic linked list data structures.

## Installation
### roblox-ts
Simply install to your [roblox-ts](https://roblox-ts.com/) project as follows:
```
npm i @rbxts/linked-lists
```

### Wally
[Wally](https://github.com/UpliftGames/wally/) users can install this package by adding the following line to their `Wally.toml` under `[dependencies]`:
```
LinkedLists = "bytebit/linked-lists@1.0.4"
```

Then just run `wally install`.

### From model file
Model files are uploaded to every release as `.rbxmx` files. You can download the file from the [Releases page](https://github.com/Bytebit-Org/roblox-LinkedLists/releases) and load it into your project however you see fit.

### From model asset
New versions of the asset are uploaded with every release. The asset can be added to your Roblox Inventory and then inserted into your Place via Toolbox by getting it [here.](https://www.roblox.com/library/9171119495/Linked-Lists-Package)

## Documentation
Documentation can be found [here](https://github.com/Bytebit-Org/roblox-LinkedLists/tree/master/docs), is included in the TypeScript files directly, and was generated using [TypeDoc](https://typedoc.org/).

## Example
Below is a simple example showing the use of a singly-linked list to implement a queue:

<details>
  <summary>roblox-ts example</summary>

  ```ts
  import { SinglyLinkedList } from "@rbxts/linked-lists";

  export class Queue {
    private readonly linkedList = new SinglyLinkedList<defined>();

    public push(value: defined) {
      this.linkedList.pushToTail(value);
    }

    public pop() {
      return this.linkedList.popHeadValue();
    }
  }
  ```
</details>

<details>
  <summary>Luau example</summary>

  ```lua
  local SinglyLinkedList = require(path.to.modules["linked-lists"]).SinglyLinkedList

  local Queue = {}
  Queue.__index = Queue

  function new()
    local self = {}
    setmetatable(self, Queue)

    self.linkedList = SinglyLinkedList.new()

    return self
  end

  function Queue:push(value)
    self.linkedList:pushToTail(value)
  end

  function Queue:pop()
    return self.linkedList:popHeadValue()
  end

  return {
    new = new
  }
  ```
</details>
npm package: @rbxts/llama
Description: Lua Library for Immutable Data (Llama) by freddylist
Author: freddylist
Latest version: 1.1.1-ts.1

<h1 align="center">📚 Llama 🦙</h1>
<div align="center">
Lua Library for Immutable Data
</div>

TS typings for freddylist's "Llama" library. Some useful links:

-   **[Llama's repository](https://github.com/freddylist/llama/)**
-   **[Llama's documentation](https://freddylist.github.io/llama/)**
-   **[This package's repository](https://github.com/tacheometry/rbxts-llama/)**

<h2>Installation</h2>

[![NPM](https://nodei.co/npm/@rbxts/llama.png)](https://npmjs.org/package/@rbxts/llama)

Run `npm i @rbxts/llama` in your project directory.

<h2>Usage</h2>

After importing the library, you can use any utility from [the documentation](https://freddylist.github.io/llama/) in TS.

<h3>Llama data types for TS</h3>

-   Dictionaries are objects _`{}`_
-   Lists are arrays _`T[]`_
-   Sets are interpreted as JS Sets _`new Set<T>`_
    -- In roblox-ts, a `Set<number>` whose added values are `1` and `5` is just a table that looks like:
    `lua { [1] = true, [5] = true } `

<h3>Importing</h3>

```ts
import Llama from "@rbxts/llama";
```

or

```ts
import { Dictionary, List, Set } from "@rbxts/llama";
```

---

If you would like to contribute to Llama, please file Pull Requests and Issues in [its GitHub repository](https://github.com/freddylist/llama/), and not in the repository of this package.
npm package: @rbxts/loader
Description: A simple module loader for Roblox-TS.
Author: typechecked
Latest version: 2.1.1

# @rbxts/loader
A simple module loader for Roblox-TS.

```ts
import { Loader } from "@rbxts/loader"
import { ReplicatedStorage } from "@rbxts/services"

const MyScriptsFolder = ReplicatedStorage.WaitForChild("MyScripts") as Folder

Loader.Load(MyScriptsFolder) // Loads all scripts in ReplicatedStorage.MyScripts and subfolders.
```
npm package: @rbxts/log
Description: Structured logging library for Roblox
Latest version: 0.6.3

<div align="center">
<img src="https://i.imgur.com/yzq5cEa.png">

_Not associated with BLAMMO ;-)_
</div>

Structured logging library for Roblox, akin to (and inspired by) [serilog](https://github.com/serilog/serilog). It uses the [Message Templates](https://messagetemplates.org/) spec for handling logging.

## Setup
To begin, you will need to install the package. This can be done via
```
npm i @rbxts/log
```

Once installed, to begin logging you will need to configure the logger. (The server/client will need separate configurations, this is the recommended way of doing it)

Basic setup:
```ts
import Log, { Logger } from "@rbxts/log";
Log.SetLogger(
    Logger.configure()
        .WriteTo(Log.RobloxOutput()) // WriteTo takes a sink and writes to it
        .Create() // Creates the logger from the configuration
);

Log.Info("Hello, Log!");
```

The main power of this library comes from the structured event data logging:
```ts
const startPoint = new Vector2(0, 0)
const position = new Vector2(25, 134);
const distance = position.sub(startPoint).Magnitude;

Log.Info("Walked to {@Position}, travelling a distance of {Distance}", position, distance);
```

Log uses [message templates](https://messagetemplates.org/), like serilog and will format strings with _named_ parameters (positional coming soon).

The example above has two properties, `Position` and `Distance`, in the log event the `@` operator in front of position tells Log to _serialize_ the object passed in, rather than using `tostring(value)`. The listed data types this library can serialize is listed below.

Rendered into JSON using `HttpService`, these properties appear alongside the Timestamp, Level and Template like:

```json
{"Position": {"X": 25, "Y": 134}, "Distance": 136.32 }
```

The structured nature of the data means that it is easily searched and filtered by external tools (as well as roblox-based libraries like `Zircon`)

Of course, this data can be logged to the roblox console or another supported console directly if need be, the default Roblox Output sink for example displays the above as such:
```
08:29:20 [INF] Walked to {"X": 25, "Y": 134}, travelling a distance of 136.32
```

## Features
- Level-based logging, with levels like `Debug`, `Information`, `Warning` and `Error`.
- Support for custom sinks, like logging to your own external server or to a console like the roblox output and Zircon.
- The ability to enrich logging events using `EnrichWithProperty` or `Enrich`. E.g. add the version to your logging events:
    ```ts
    Log.SetLogger(
        Logger.configure()
            // ...
            .EnrichWithProperty("Version", PKG_VERSION) // Will add "Version" to the event data
            // ...
            .Create()
    );
    ```
- A global `Log` object, with the ability to create individual `Logger` objects.

## Supported Sinks
| Sink Name | Via | Information |
|--------|-------------|----------|
| [Zircon](https://github.com/roblox-aurora/zircon) | `Zircon.Log.Console()` | Runtime Debugging Console for Roblox |
npm package: @rbxts/logsnag
Description: LogSnag SDK for roblox-ts
Latest version: 1.0.0

[![CI](https://github.com/ClubiNew/rbxts-logsnag/actions/workflows/ci.yml/badge.svg)](https://github.com/ClubiNew/rbxts-logsnag/actions/workflows/ci.yml) [![CD](https://github.com/ClubiNew/rbxts-logsnag/actions/workflows/cd.yml/badge.svg)](https://github.com/ClubiNew/rbxts-logsnag/actions/workflows/cd.yml) [![docs](https://clubinew.github.io/rbxts-logsnag/coverage.svg)](https://clubinew.github.io/rbxts-logsnag) [![npm](https://img.shields.io/npm/v/%40rbxts%2Flogsnag)](https://www.npmjs.com/package/@rbxts/logsnag)

[LogSnag](https://logsnag.com/) is a SaaS for event logging and monitoring. This package provides a brief SDK over the [LogSnag API](https://docs.logsnag.com/).

## Example

```ts
const logsnag = new LogSnag({
    project: "project-name",
    token: "api-token"
});

// logs

const sales = logsnag.getChannel("sales");
sales.log("Product Sold", {
    description: `${player.Name} bought ${product.Name}!`
    user_id: player.UserId,
    icon: "🤑",
    tags: {
        product_id: product.Id,
        price: product.Price
    }
});

// insights

const visits = logsnag.getInsight("Visits");
visits.set(0);

Players.PlayerAdded.Connect(() => {
    visits.increment(1);
});

// identify

Players.PlayerAdded.Connect((player) => {
    logsnag.identify(tostring(player.UserId), {
        membership: player.MembershipType.Name
    });
});

```
npm package: @rbxts/loners-pretty-react-hooks
Description: Useful hooks for @rbxts/react
Author: loner1536
Latest version: 0.2.9

## 🌺 [pretty-react-hooks](https://npmjs.com/package/@rbxts/pretty-react-hooks)

![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/littensy/pretty-react-hooks/ci.yml?branch=master&style=for-the-badge&logo=github)
[![npm version](https://img.shields.io/npm/v/@rbxts/pretty-react-hooks.svg?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/@rbxts/pretty-react-hooks)
[![npm downloads](https://img.shields.io/npm/dt/@rbxts/pretty-react-hooks.svg?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/@rbxts/pretty-react-hooks)
[![GitHub license](https://img.shields.io/github/license/littensy/pretty-react-hooks?style=for-the-badge)](LICENSE.md)

An opinionated collection of useful hooks and utilites for [React](https://github.com/littensy/rbxts-react) in [roblox-ts](https://roblox-ts.com).

If you find a bug or have a feature request, please [open an issue](https://github.com/littensy/pretty-react-hooks/issues/new/).

&nbsp;

## ⭐ Featured

Check out some featured hooks:

-   [🦾 `useMotion`](src/use-motion/) - Creates a memoized Motion object set to the given initial value. Returns a binding that updates with the Motion, along with the Motion object.
-   [⏱️ `useAsync`](src/use-async/) - A hook that runs an async function and returns the result and status
-   [⚙️ `useTagged`](src/use-tagged/) - Tracks and returns a list of all instances with the given tag

This package also exports some useful utilities:

-   [📕 `hoarcekat`](src/utils/hoarcekat.tsx) - Create a Hoarcekat story
-   [📦 `binding utils`](src/utils/binding.ts) - Work with values that may or may not be bindings

Or, see the [full list of hooks](src/).

&nbsp;

## 📦 Installation

This package is available for Roblox TypeScript projects on [NPM](https://www.npmjs.com/package/@rbxts/pretty-react-hooks).

```sh
npm install @rbxts/pretty-react-hooks
yarn add @rbxts/pretty-react-hooks
pnpm add @rbxts/pretty-react-hooks
```

&nbsp;

## 🌻 Contributing

Contributions are welcome! Note that if you make a change to a hook, you should also check the tests and documentation.

To get started, clone the repository and run `pnpm install`. Then, you can run the following commands:

-   `pnpm dev` - Enable watch mode with support for TestEZ Companion
-   `pnpm build` - Compile the package's `out` directory

You will likely need the following extensions:

-   [Rojo VSCode extension](https://marketplace.visualstudio.com/items?itemName=evaera.vscode-rojo)
-   [TestEZ Companion](https://marketplace.visualstudio.com/items?itemName=tacheometrist.testez-companion)

&nbsp;

## 📝 License

pretty-react-hooks is licensed under the [MIT License](LICENSE.md).
npm package: @rbxts/longuint-ui
Description: A lightweight ui component library.
Author: longuint-dev
Latest version: 0.3.7

<div align="center">
  <h1>longuint-ui 🧩</h1>

  <p>
    A lightweight ui component library
  </p>

</div>

## About

A component library which follows my needs from a UI library.

- Switches
- Draggable and Dockable Frames
- Text

## Credits

- [Commander](https://github.com/paradoxuum/commander): Sizing and utility functions.

- [GlassmorphicUI](https://github.com/sasial-dev/GlassmorphicUI): Glass effects.

- [iconoir](https://iconoir.com/): Icons.
npm package: @rbxts/lua-table-utils
Description: A helper package for Lua tables, adding certain abstraction layers to repetitive patterns.
Latest version: 1.2.0

# Lua Table Utils

A helper package for Lua tables, adding utilities to avoid some of the nonsense that rbxts can give you.

# Example usage
```typescript
import { Unpacker } from "@rbxts/lua-table-utils";

export class AssaultRifleServer extends Mixin(BaseWeaponServer, AssaultRifle) {
    constructor(...args: unknown[]) {
        /** Normally this would error out with ...args, but won't with Unpack. */
		super(Unpacker.Unpack(args));
		print("Success");
	}
}

```
npm package: @rbxts/luanoid
Description: TypeScript support for Luanoid
Author: raphtalia
Latest version: 1.3.5

# Luanoid

A project for developers who want more precise control over how their avatars behave in their games.

## Credits

- [**LPGhatguy**](https://github.com/LPGhatguy) - Original Creator
- [**Dogutsune**](https://devforum.roblox.com/t/dogu15-a-mesh-deform-r15-rig-updated/532832) - Creator of original R15 rig with mesh deformation
- [**UnitingMatrixXCV**](https://www.roblox.com/users/7855169/profile#!/about) - UV Wrapping Dogu15 for clothing support
npm package: @rbxts/luaquaternion
Description: A quaternion library for Roblox
Author: tukars
Latest version: 2.1.3
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# LuaQuaternion

LuaQuaternion is a fully featured library for utilizing quaternions in luau.
To use in lua projects you will need to manually remove all type information.

If you are using this project in an external editor, you can install this library using `npm i @rbxts/luaquaternion`.

To import within roblox-ts, you can do the following:

```ts
// Just import Quaternion
import { Quaternion } from "@rbxts/luaquaternion"

// Import them all (star imports don't work for some unexpected reasons)
import { Quaternion, QuaternionSpring, RadianSpring, Spring } from "@rbxts/luaquaternion"
```

This project also supports roblox-ts via .d.ts files.

# Documentation

The latest documentation is available [here](https://probablytukars.github.io/LuaQuaternion/), and contains information on how to use each function, alongside details of what each function does.

You can find older documentation in the releases section of this repository, and 

## IMPORTANT INFORMATION
The order of Quaternions in this library is X,Y,Z,W, NOT W,X,Y,Z. If you plan to use translate this code into a target language, please ensure you are using the correct order.

# License

This project is licensed under the MIT license.
npm package: @rbxts/luaquaternion2
Description: A quaternion library for Roblox (typings fix)
Author: tukars
Latest version: 1.0.0

# LuaQuaternion

LuaQuaternion is a fully featured library for utilizing quaternions in luau.
To use in lua projects you will need to manually remove all type information.

If you are using this project in an external editor, you can install this library using `npm i @rbxts/luaquaternion`.

To import within roblox-ts, you can do the following:

```ts
// Just import Quaternion
import { Quaternion } from "@rbxts/luaquaternion"

// Import them all (star imports don't work for some unexpected reasons)
import { Quaternion, QuaternionSpring, RadianSpring, Spring } from "@rbxts/luaquaternion"
```

This project also supports roblox-ts via .d.ts files.

# Documentation

The latest documentation is available [here](https://probablytukars.github.io/LuaQuaternion/), and contains information on how to use each function, alongside details of what each function does.

You can find older documentation in the releases section of this repository, and 

## IMPORTANT INFORMATION
The order of Quaternions in this library is X,Y,Z,W, NOT W,X,Y,Z. If you plan to use translate this code into a target language, please ensure you are using the correct order.

# License

This project is licensed under the MIT license.
npm package: @rbxts/luau-polyfill-internal
Description: <img src="https://raw.githubusercontent.com/jsdotlua/branding/main/Logo.png" align="right" height="128"/>
Author: jsdotlua
Latest version: 1.2.3-ts.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

<img src="https://raw.githubusercontent.com/jsdotlua/branding/main/Logo.png" align="right" height="128"/>

<h1>Luau Polyfill</h1>
<h3>A JavaScript environment polyfill for Luau, used by translated Lua packages.</h3>

<a href="https://github.com/jsdotlua/luau-polyfill/blob/main/LICENSE.md"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="license" height="18"></a>
<a href="https://wally.run/package/jsdotlua/luau-polyfill"><img src="https://img.shields.io/badge/wally%20package-1.2.3-red.svg" height="18"/></a>

---

TODO: Rest of the README.
npm package: @rbxts/luau-thread
Description: Parallel Luau library designed for simplicity and ease of use.
Latest version: 1.0.1

# Thread

Fork of [luau-thread](https://github.com/decimalcubed/luau-thread) for Roblox-ts

The module must first export a function:
```ts
// src/shared/module
export = function(timeToWait: number) {
	task.wait(timeToWait);
	print("waited", timeToWait, "second(s)");
}
```

Then, to get our module, we can use the new $getModuleTree macro, and the function provided in this library
```ts
import Thread from "@rbxts/luau-thread";

const [root, parts] = $getModuleTree("shared/module");
const module = Thread.getModuleByTree(root, parts);
```

Afterwards, we can spawn the module and wait for it to finish:
```ts
const identifier = Thread.spawn(module, 1);
Thread.join(identifier);

// prints: waited 1 second(s)
```

We can also spawn it multiple times, and wait for all threads to finish:
```ts
const identifiers = [];

for (const i of $range(1, 10)) {
	identifiers.push(Thread.spawn(module, i));
}

Thread.join(identifiers);

// prints: waited 1 second(s)
// ...
// prints: waited 10 seconds(s)
```
npm package: @rbxts/luau-thread-fixed
Description: Fork of [luau-thread](https://github.com/decimalcubed/luau-thread) for Roblox-ts
Latest version: 1.0.1

# Thread

Fork of [luau-thread](https://github.com/decimalcubed/luau-thread) for Roblox-ts

The module must first export a function:
```ts
// src/shared/module
export = function(timeToWait: number) {
	task.wait(timeToWait);
	print("waited", timeToWait, "second(s)");
}
```

Then, to get our module, we can use the new $getModuleTree macro, and the function provided in this library
```ts
import Thread from "@rbxts/luau-thread";

const [root, parts] = $getModuleTree("shared/module");
const module = Thread.getModuleByTree(root, parts);
```

Afterwards, we can spawn the module and wait for it to finish:
```ts
const identifier = Thread.spawn(module, 1);
Thread.join(identifier);

// prints: waited 1 second(s)
```

We can also spawn it multiple times, and wait for all threads to finish:
```ts
const identifiers = [];

for (const i of $range(1, 10)) {
	identifiers.push(Thread.spawn(module, i));
}

Thread.join(identifiers);

// prints: waited 1 second(s)
// ...
// prints: waited 10 seconds(s)
```