{"id":"al-ex427/fembindables","name":"fembindables","scope":"al-ex427","platform":"roblox","description":"fembindable events","version":"1.0.0","latest":"1.0.0","versions":["1.0.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":["License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{},"integrity":"2cf28b981f7591677ab14d98718d5b51c82364ca015b8f1540434d489fe89292","likes":0,"downloads":0,"install":"forest install al-ex427/fembindables","url":"https://forest.dev/p/roblox/al-ex427/fembindables","files":"https://api.forest.dev/ai/package/roblox/al-ex427/fembindables/files","readme":"# 🔗 fembindables\n\n**fembindables** is a fast and minimal signal (event) system for Lua-based environments like Roblox. It provides simple APIs for creating, connecting, firing, and disconnecting events efficiently.\n\n---\n\n## 📊 Benchmarks\n\n| Operation                                | Iterations |   Total Time |  Time per Op |\n|-----------------------------------------|------------|---------------|---------------|\n| `fembindables.new()`                    | 100,000    | 0.0040 s     | 39.51 ns      |\n| `fembindables:Connect()`                | 50,000     | 0.0058 s     | 116.08 ns     |\n| `fembindables:Fire()` [0 connections]   | 20,000     | 0.0008 s     | 39.62 ns      |\n| `fembindables:Fire()` [1 connection]    | 20,000     | 0.0008 s     | 40.75 ns      |\n| `fembindables:Fire()` [100 connections] | 20,000     | 0.0008 s     | 42.11 ns      |\n| `Disconnect()` [last of 100]            | 10,000     | 0.1092 s     | 10.92 µs      |\n| `Disconnect()` [first of 100]           | 10,000     | 0.1073 s     | 10.73 µs      |\n| `DisconnectAll()` [500 connections]     | 5,000      | 0.2091 s     | 41.82 µs      |\n\n---\n\n## 🚀 Usage\n\n### Create a signal\n```lua\nlocal MySignal = fembindables.new()\n```\n\n### 🔗 Connect listeners\n## Connect listeners (callbacks) to your signal using Connect. Each listener will be called when the signal fires.\n```lua\nlocal connection1 = MySignal:Connect(function(message)\n\tprint(\"Listener 1 received:\", message)\nend)\n\nlocal connection2 = MySignal:Connect(function(message)\n\tprint(\"Listener 2 received:\", message)\nend)\n```\n\n\n### 🔥 Fire the Signal\n## Trigger the signal with ```Fire```, passing any arguments to the listeners.\n```lua\nMySignal:Fire(\"Event Fired!\")\n```\n\n### Output:\n```\nListener 1 received: Event Fired!\nListener 2 received: Event Fired!\n```\n\n### ❌ Disconnect a Listener\n## Disconnect a specific listener to stop receiving events.\n```lua\nconnection1:Disconnect()\n```\n\n### 🔥Fire the signal again with a new message\n## Only Listener 2 will respond now\n```lua\nMySignal:Fire(\"Fired again!\")\n```\n\n### Output:\n```\nListener 2 received: Fired again!\n```\n\n### 🔁 Disconnect All Listeners\n## Remove all listeners at once.\n```lua\nMySignal:DisconnectAll()\n```\n\n### 🔥 Fire the Signal\n## This wont output anything.\n```lua\nMySignal:Fire(\"Event Fired!\")\n```\n### Output:\n```\n no output\n```\n\n### NOTICE:\n## To use events in other scripts you can make a module that holds the events.\n","readmeTruncated":false}