{"id":"sap0bombado/create-signal","name":"create-signal","scope":"sap0bombado","platform":"roblox","description":"A lightweight signal library for Luau.","version":"1.4.3","latest":"1.4.3","versions":["1.1.0","1.2.0","1.3.0","1.4.0","1.4.1","1.4.2","1.4.3"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"47c3a3aaa772630eb28988bd0f10acb649a32905811b4a15fdd759b14fbdb267","likes":0,"downloads":0,"install":"forest install sap0bombado/create-signal","url":"https://forest.dev/p/roblox/sap0bombado/create-signal","files":"https://api.forest.dev/ai/package/roblox/sap0bombado/create-signal/files","readme":"# create-signal\r\n\r\nFast, lightweight event emitter for Luau.\r\n\r\nBenchmarked vs SignalPlus:\r\n\r\n| Operation | createSignal | SignalPlus |\r\n|-----------|-------------|------------|\r\n| create | 128ns | 141ns |\r\n| connect | 444ns | 678ns |\r\n| fire (1 listener) | 769ns | 823ns |\r\n| fire (10 listeners) | 7884ns | 7800ns |\r\n| disconnect | 156ns | 233ns |\r\n\r\n## Install\r\n\r\n```toml\r\n[dependencies]\r\ncreateSignal = \"sap0bombado/create-signal@1.4.3\"\r\n```\r\n\r\n## API\r\n\r\n### `createSignal<T...>() -> Signal<T...>`\r\n\r\nCreates a new signal.\r\n\r\n### `Signal<T...>`\r\n\r\n| Method | Signature | Description |\r\n|--------|-----------|-------------|\r\n| `connect` | `(callback: (T...) -> ()) -> Connection` | Register a listener |\r\n| `once` | `(callback: (T...) -> ()) -> Connection` | Register a one-shot listener |\r\n| `fire` | `(...: T...) -> ()` | Fire the signal |\r\n| `wait` | `() -> T...` | Yield until the signal fires, returns the args |\r\n| `disconnectAll` | `() -> ()` | Remove all listeners |\r\n| `destroy` | `() -> ()` | Disconnect all and clear the signal table |\r\n\r\n### `Connection`\r\n\r\n| Field/Method | Type | Description |\r\n|-------------|------|-------------|\r\n| `connected` | `boolean` | Whether the connection is still active |\r\n| `disconnect` | `() -> ()` | Disconnect this listener |\r\n\r\n## Example\r\n\r\n```lua\r\nlocal signal = createSignal<<(string, number)>>()\r\n\r\nsignal:connect(function(name, age)\r\n    print(name, age)\r\nend)\r\n\r\nsignal:fire(\"John\", 23)\r\n```\r\n\r\n","readmeTruncated":false}