{"id":"sqrcy/rivet","name":"rivet","scope":"sqrcy","platform":"roblox","description":"Rivet is an all-in-one Roblox/Luau framework package for ordinary Unit modules, surfaces, contracts, codecs, and plugins.","version":"1.0.1","latest":"1.0.1","versions":["1.0.1"],"license":"BSD-3-Clause","licenseRating":"safe","licenseCaveats":["The copyright notice must be preserved in copies. The author's name may not be used to promote your product."],"licenseVerified":true,"dependencies":{},"integrity":"d7e17c28f9a3b051fe3efcb5e81ded49c114f6c1ff48f45a8ed91f7c405dbd8e","likes":0,"downloads":0,"install":"forest install sqrcy/rivet","url":"https://forest.dev/p/roblox/sqrcy/rivet","files":"https://api.forest.dev/ai/package/roblox/sqrcy/rivet/files","readme":"# Rivet\n\nRivet is an all-in-one Roblox/Luau framework package by `@sqrcy`. It lets you\nwrite ordinary ModuleScripts, then adds startup order, cleanup, explicit public\nsurfaces, networking, contracts, codecs, and plugins around them.\n\n## Install\n\n```toml\n[dependencies]\nRivet = \"sqrcy/rivet@1.0.0\"\n```\n\n## Feature Highlights\n\n### Ordinary Units\n\nRivet Units are just Lua tables returned from ModuleScripts. Add an `Id`,\noptional `Dependencies`, and lifecycle methods when you want Rivet to manage\nstartup and shutdown.\n\n```lua\n--!strict\n\nlocal Inventory = {}\n\nInventory.Id = \"Inventory\"\nInventory.Dependencies = { \"Data\" }\n\nfunction Inventory:Init()\n\tself.Data = self:Get(\"Data\")\nend\n\nreturn Inventory\n```\n\n### Explicit Surfaces\n\nSurfaces describe the methods a Unit chooses to expose. Query, Action, and\nSignal surfaces become predictable Roblox remotes without exposing the rest of\nthe Unit.\n\n```lua\nInventory.Surfaces = {\n\tClient = {\n\t\tGetItems = \"Query\",\n\t\tEquipItem = \"Action\",\n\t\tItemAdded = \"Signal\",\n\t},\n}\n```\n\n### Safer Runtime Boundaries\n\nContracts validate common runtime values, codecs move custom objects across\nnetwork calls, and `Clean` gives each Unit a small built-in cleanup utility.\n\n```lua\nInventory.Surfaces = {\n\tClient = {\n\t\tEquipItem = {\n\t\t\tKind = \"Action\",\n\t\t\tArgs = { \"string\" },\n\t\t},\n\t},\n}\n```\n\n## Package\n\nRivet is a Wally package named `sqrcy/rivet`. The plain package contains the\nruntime source, package metadata, project mapping, changelog, readme, and\nBSD-3-Clause license. Tests, examples, scripts, docs, and local tooling files are\nexcluded from the published package.\n\n## License\n\nRivet is licensed under BSD-3-Clause.\n\n## Documentation\n\nStart with [Docs Index](docs/index.md), then use [API Reference](docs/api-reference.md)\nonce you know the main ideas.\n\nBenchmarks are a separate reference path covering engine/headless overhead and\nlive Studio remote behavior. Start with [Benchmarks](docs/benchmarks.md), then\nread the current [Benchmark Results](docs/benchmark-results.md).\n","readmeTruncated":false}