{"id":"hoarsekat/indium","name":"indium","scope":"hoarsekat","platform":"roblox","description":"Indium is the prodigal lightweight framework for Roblox inspired by Knit & Weaver","version":"0.1.0","latest":"0.1.0","versions":["0.1.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{"sleitnick/comm":{"version":"^1.0.0","alias":"Comm"},"evaera/promise":{"version":"^4.0.0","alias":"Promise"}},"integrity":"12414af8700dd0305daea8cb2cb0aa1957f4e2e4f93647afd0449f6b5d181a5e","likes":0,"downloads":0,"install":"forest install hoarsekat/indium","url":"https://forest.dev/p/roblox/hoarsekat/indium","files":"https://api.forest.dev/ai/package/roblox/hoarsekat/indium/files","readme":"---\r\ndescription: >-\r\n  Indium is a powerful, lightweight BDD-style game framework inspired by the\r\n  likes of Knit and Weaver.\r\n---\r\n\r\n# Indium\r\n\r\n\r\n\r\n### What does Indium have to offer?\r\n\r\nThe main \"cool part\" about Indium is the BDD-style structure inspired by Roblox's TestEZ library. Here is an example of the creation of an Indium service:\r\n\r\n```lua\r\n-- ExampleService.lua\r\n\r\n-- // Services\r\nlocal replicatedStorage = game:GetService(\"ReplicatedStorage\")\r\n\r\n-- // Directory\r\nlocal packages = replicatedStorage.Packages\r\nlocal indium = require(packages:WaitForChild(\"Indium\"))\r\n\r\n-- // Create a basic service\r\nlocal service = indium.create.service({\r\n    name = \"ExampleService\",\r\n    client = {},\r\n})\r\n\r\n-- // Init function that is run on service creation\r\nfunction service:__init()\r\n    print(self.name, \"has initialized!\")\r\nend\r\n\r\nreturn service\r\n```\r\n\r\nIndium offers a toolset that includes components with tags, the creation of services and controllers, and the ability to setup middleware for your game. Indium also provides you with suggestions on how to structure your game's directory.\r\n\r\n### Why use Indium over other frameworks like Knit or Weaver?\r\n\r\nIndium has a few features which differs from other commonly used frameworks.\r\n\r\n* Indium provides a component-based system with support for tags and attributes\r\n* You can create and initialize a service at any time with full automation\r\n* Indium uses a BDD-style codebase\r\n* You can use `indium.get.service(\"service_name\")` at any time, even from a non-controller or a non-service (such as a class/metatable), before Indium even starts! No more needing to use `Knit.OnStart()`!\r\n\r\n### Ready to setup your framework?\r\n\r\nVisit the setup section of the documentation to get started!\r\n\r\n{% content-ref url=\"broken-reference\" %}\r\n[Broken link](broken-reference)\r\n{% endcontent-ref %}\r\n","readmeTruncated":false}