{"id":"znotfireman/prvdmwrong","name":"prvdmwrong","scope":"znotfireman","platform":"roblox","description":"The swaggest Roblox game framework in town.","version":"0.2.0-dev.8","latest":"0.2.0-dev.8","versions":["0.2.0-dev.6","0.2.0-dev.7","0.2.0-dev.8"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"1275ea352aa94fdca04a60ef038fb6e053647619c4e0b9bddbb8554b266d9413","likes":0,"downloads":0,"install":"forest install znotfireman/prvdmwrong","url":"https://forest.dev/p/roblox/znotfireman/prvdmwrong","files":"https://api.forest.dev/ai/package/roblox/znotfireman/prvdmwrong/files","readme":"<div align=\"center\">\n<img\n  align=\"center\"\n  src=\"https://raw.githubusercontent.com/team-fireworks/prvdmwrong/main/assets/wordmark-dark.svg#gh-dark-mode-only\"\n  alt=\"Prvd 'M Wrong\"\n  width=\"500px\"/>\n<img\n  align=\"center\"\n  src=\"https://raw.githubusercontent.com/team-fireworks/prvdmwrong/main/assets/wordmark-light.svg#gh-light-mode-only\"\n  alt=\"Prvd 'M Wrong\"\n  width=\"500px\"/>\n\n<br/>\n<br/>\n\n![Continuous Integration](https://img.shields.io/github/actions/workflow/status/team-fireworks/prvdmwrong/ci.yml?style=flat-square&label=Continuous%20Integration)\n![Documentation Status](https://img.shields.io/github/actions/workflow/status/team-fireworks/prvdmwrong/docs.yml?style=flat-square&label=Documentation)<br/>\n![Prvd 'M Wrong is licensed under MIT](https://img.shields.io/badge/license-MIT-blue?style=flat-square)\n![Github Start](https://img.shields.io/github/stars/team-fireworks/prvdmwrong.svg?style=flat-square)\n![NPM Version](https://img.shields.io/npm/v/%40rbxts%2Fprvdmwrong?style=flat-square)\n</br>\n<a href=\"https://github.com/team-fireworks/prvdmwrong/releases\">Download</a> ·\n<a href=\"https://team-fireworks.github.io/prvdmwrong/latest/reference\">Website</a> ·\n<a href=\"https://team-fireworks.github.io/prvdmwrong/latest/reference\">Reference</a> ·\n<a href=\"CHANGELOG.md\">Changelog</a>\n</div>\n\nPrvd 'M Wrong is a game framework for a next-generation Roblox.\n\nSounds boring. Let's do that again.\n\n**Prvd 'M Wrong will not make you a front page Roblox developer... but you may\nfeel like one.**\n\nOnce installed, your game will become your money back. Prvd 'M Wrong accelerates\nthe process with providers, connecting the top-level design of your game. Choose\nto mix in networking and components as you need. Randoms will approach you and\nask, *\"are you wealthy or do you make a six-figure salary?\"*\n\nCherish a development experience that fades into the background, freeing you to\nbuild faster and **prvd 'm wrong.** It's the swaggest framework in town!\n\nSparked your interest? [Get going in minutes with our on-rails\ntutorial.](https://team-fireworks.github.io/prvdmwrong/latest/tutorials/)\n\n## Highlights\n\n- Type-safe APIs for both Luau and TypeScript\n- Featherlight, choose to mix in packages as you need\n- Uses dependency injection for cleaner code organization\n- Made to be extendable through modding APIs\n- Non-intrusive first-class lifecycle events for flexibility\n- Pragmatic and sensible API that makes development fun\n\n## Code Sample\n\n```Luau\nlocal prvd = require(\"@pkg/prvdmwrong\")\nlocal CharacterProvider = require(\"./character-provider\")\n\nlocal CombatProvider = {}\ntype Self = typeof(CombatController)\nCombatProvider.characterProvider = prvd.use(CharacterProvider)\n\nfunction CombatProvider:onStart()\n  print(\"Hello, Prvd 'M Wrong!\")\nend\n\nfunction CombatProvider.performMove(self: Self, move: CombatMove)\n  local character = self.characterProvider:awaitCharacter()\n  -- do something with the character\nend\n\nreturn prvd(CombatProvider)\n```\n\n```TypeScript\nimport { Provider, use } from \"@rbxts/prvdmwrong\"\nimport { CharacterProvider } from \"./character-provider\"\n\n@Provider()\nexport class CombatProvider {\n  public characterProvider: use(CharacterProvider)\n\n  public onStart() {\n    print(\"Hello, Prvd 'M Wrong!\")\n  }\n\n  public performMove(move: CombatMove) {\n    const character = this.characterProvider.awaitCharacter()\n    // do something with the character\n  }\n}\n```\n","readmeTruncated":false}