{"id":"coffilhg/perfectsignal","name":"perfectsignal","scope":"coffilhg","platform":"roblox","description":"A fast Signal class implementation that has full feature parity with Roblox' RBXScriptSignal. GoodSignal, but fixed to perfection.","version":"1.0.1","latest":"1.0.1","versions":["1.0.0","1.0.1"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"2b4156fd79c62e1e8248a5a53960390d224f490e23248254fc13df26847bab48","likes":0,"downloads":0,"install":"forest install coffilhg/perfectsignal","url":"https://forest.dev/p/roblox/coffilhg/perfectsignal","files":"https://api.forest.dev/ai/package/roblox/coffilhg/perfectsignal/files","readme":"# PerfectSignal (GoodSignal)\r\nThe same as GoodSignal, just with a complete type definition and a fix of an error in Signal:Wait found by **[Crusherfire](https://www.youtube.com/watch?v=yevAvHU3ewo&t=297s)**\r\nThis module will most probably never be updated - it seems perfect.\r\nA Roblox Lua Signal implementation that has full API and behavioral parity with Roblox' `RBXScriptSignal` type.\r\n\r\n# Available Here!\r\n- **[This repository](src/init.luau) ~ [src/init.luau](src/init.luau)**\r\n- **[Wally](<https://wally.run/package/coffilhg/perfectsignal>)**\r\n    ```toml\r\n    PerfectSignal = \"coffilhg/perfectsignal@1.0.1\"\r\n    ```\r\n- **Rotriever**\r\n    ```toml\r\n    PerfectSignal = \"github.com/Coffilhg/PerfectSignal@1.0.1\"\r\n    ```\r\n\r\n# Full API\r\n\r\n```lua\r\n-- Create\r\nlocal sig = Signal.new()\r\n\r\n-- Connect and Fire\r\nlocal connection = sig:Connect(function(arg1, arg2) ... end)\r\nsig:Fire(param1, param2)\r\n\r\n-- Wait on Fire\r\nlocal param1, param2 = sig:Wait()\r\n\r\n-- Disconnect\r\nconnection:Disconnect()\r\nsig:DisconnectAll()\r\n```\r\n# No Memory Leaks!\r\n`GoodSignal` is implemented in pure Lua (using the task library, rather than internally using a BindableEvent), so it does not suffer from memory leaks. Even if you don't `Disconnect` all of the connections on a GoodSignal, everything will still be GCed normally.\r\n","readmeTruncated":false}