{"id":"ptekspy/remotemanager","name":"remotemanager","scope":"ptekspy","platform":"roblox","description":"Remote Manager","version":"1.0.1","latest":"1.0.1","versions":["1.0.1"],"license":"Apache-2.0","licenseRating":"safe","licenseCaveats":["Modified files must carry a notice of changes. If the package ships a NOTICE file, its attributions must be preserved."],"licenseVerified":true,"dependencies":{},"integrity":"38a64e529c5b71b9b32440dfcafa42791b45b3baf66309048b5dc59eacb0a98f","likes":0,"downloads":0,"install":"forest install ptekspy/remotemanager","url":"https://forest.dev/p/roblox/ptekspy/remotemanager","files":"https://api.forest.dev/ai/package/roblox/ptekspy/remotemanager/files","readme":"# RemoteManager\r\n\r\nRemoteManager is a small Roblox Luau module for ensuring remote objects exist and are exposed from a shared `ReplicatedStorage.RemoteManager` container.\r\n\r\nThis package loads remote event and function names from the local `ReplicatedStorage.RemoteManager.Events` and `ReplicatedStorage.RemoteManager.Functions` modules, creates missing remote instances on the server, and returns a shared table with the resolved remote objects.\r\n\r\n## Features\r\n\r\n- Automatically creates missing `RemoteEvent` and `RemoteFunction` instances on the server\r\n- Uses a single `init` module to expose shared remote objects\r\n- Supports local client access by waiting for existing remote objects when not running on the server\r\n\r\n## Installation\r\n\r\nInstall the package with wally:\r\n\r\n```bash\r\nwally add ptekspy/RemoteManager\r\n```\r\n\r\n## Requirements\r\n\r\n- Roblox game with `ReplicatedStorage`\r\n- A `RemoteManager` folder inside `ReplicatedStorage`\r\n- A child folder `Events` with a module named `Events`\r\n- A child folder `Functions` with a module named `Functions`\r\n\r\nEach module should return an array of string names for the remotes to load.\r\n\r\n## Folder structure\r\n\r\nThe package expects the following runtime structure in `ReplicatedStorage`:\r\n\r\n```\r\nReplicatedStorage\r\n└── RemoteManager\r\n    ├── Events\r\n    │   └── Events (ModuleScript returning an array of event names)\r\n    └── Functions\r\n        └── Functions (ModuleScript returning an array of function names)\r\n```\r\n\r\n## Usage\r\n\r\nRequire the package module from your Luau code:\r\n\r\n```lua\r\nlocal RemoteManager = require(path.to.RemoteManager.init)\r\n```\r\n\r\nAfter loading the module, the returned table contains:\r\n\r\n- `RemoteManager.Root` - the `script` folder used as the root in the package\r\n- `RemoteManager.EventsFolder` - the `ReplicatedStorage.RemoteManager.Events` folder\r\n- `RemoteManager.FunctionsFolder` - the `ReplicatedStorage.RemoteManager.Functions` folder\r\n- `RemoteManager.<EventName>` - a `RemoteEvent` instance for each event name returned by the `Events` module\r\n- `RemoteManager.<FunctionName>` - a `RemoteFunction` instance for each function name returned by the `Functions` module\r\n\r\nExample:\r\n\r\n```lua\r\nlocal RemoteManager = require(path.to.RemoteManager.init)\r\n\r\nlocal playerJoinEvent = RemoteManager.PlayerJoined\r\nlocal getProfileFunction = RemoteManager.GetProfile\r\n\r\nplayerJoinEvent:FireClient(player)\r\nlocal result = getProfileFunction:InvokeClient(player)\r\n```\r\n\r\n## Server and client behavior\r\n\r\n- On the server, missing remotes are created automatically in the appropriate folder.\r\n- On the client, the module waits for the remote instance to appear if it is not already present.\r\n\r\n## Development\r\n\r\nThis package is a Luau module located in `src/init.luau` and is configured for use with `wally`.\r\n\r\n## License\r\n\r\nApache-2.0\r\n","readmeTruncated":false}