cluaupp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (760) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +119 -0
  4. package/bin/cluau.js +4 -0
  5. package/bin/cluaupp.js +4 -0
  6. package/docs/README.md +20 -0
  7. package/docs/architecture.md +110 -0
  8. package/docs/cli.md +69 -0
  9. package/docs/comparison.md +37 -0
  10. package/docs/config.md +31 -0
  11. package/docs/cpp-advanced.md +71 -0
  12. package/docs/cpp-const.md +52 -0
  13. package/docs/cpp-organization.md +61 -0
  14. package/docs/cpp-safety.md +58 -0
  15. package/docs/cpp-types.md +66 -0
  16. package/docs/getting-started.md +169 -0
  17. package/docs/intro.md +37 -0
  18. package/docs/libraries.md +77 -0
  19. package/docs/roblox-api.md +81 -0
  20. package/docs/syntax.md +131 -0
  21. package/include/cluaupp/datatypes.hpp +581 -0
  22. package/include/cluaupp/generated/enums.hpp +4920 -0
  23. package/include/cluaupp/generated/instances.hpp +12489 -0
  24. package/include/cluaupp/libs/chrono.hpp +26 -0
  25. package/include/cluaupp/libs/cmdr.hpp +16 -0
  26. package/include/cluaupp/libs/dataservice.hpp +141 -0
  27. package/include/cluaupp/libs/display.hpp +13 -0
  28. package/include/cluaupp/libs/ezvisual.hpp +18 -0
  29. package/include/cluaupp/libs/formatnumber.hpp +15 -0
  30. package/include/cluaupp/libs/fusion.hpp +41 -0
  31. package/include/cluaupp/libs/iris.hpp +40 -0
  32. package/include/cluaupp/libs/janitor.hpp +35 -0
  33. package/include/cluaupp/libs/math.hpp +14 -0
  34. package/include/cluaupp/libs/module3d.hpp +25 -0
  35. package/include/cluaupp/libs/net.hpp +42 -0
  36. package/include/cluaupp/libs/promise.hpp +30 -0
  37. package/include/cluaupp/libs/spring.hpp +18 -0
  38. package/include/cluaupp/libs/statemachine.hpp +19 -0
  39. package/include/cluaupp/libs/stickybillboard.hpp +14 -0
  40. package/include/cluaupp/libs/topbarplus.hpp +29 -0
  41. package/include/cluaupp/libs/twinkle.hpp +15 -0
  42. package/include/cluaupp/libs/vfx.hpp +13 -0
  43. package/include/cluaupp/libs.hpp +25 -0
  44. package/include/cluaupp/roblox.hpp +28 -0
  45. package/package.json +65 -0
  46. package/runtime/ArrayIndexer/init.luau +144 -0
  47. package/runtime/Chrono/Client/ClientClock.luau +202 -0
  48. package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
  49. package/runtime/Chrono/Client/ModelResolver.luau +53 -0
  50. package/runtime/Chrono/Client/Player.luau +113 -0
  51. package/runtime/Chrono/Client/Receiver.luau +395 -0
  52. package/runtime/Chrono/Client/Replicate.luau +333 -0
  53. package/runtime/Chrono/Client/Sender.luau +205 -0
  54. package/runtime/Chrono/LICENSE +21 -0
  55. package/runtime/Chrono/Server/EntityGrid.luau +299 -0
  56. package/runtime/Chrono/Server/Player.luau +141 -0
  57. package/runtime/Chrono/Server/Receiver.luau +287 -0
  58. package/runtime/Chrono/Server/Replicate.luau +415 -0
  59. package/runtime/Chrono/Server/Sender.luau +306 -0
  60. package/runtime/Chrono/Server/ServerClock.luau +50 -0
  61. package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
  62. package/runtime/Chrono/Shared/Bin.luau +31 -0
  63. package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
  64. package/runtime/Chrono/Shared/Config.luau +264 -0
  65. package/runtime/Chrono/Shared/Entity.luau +1016 -0
  66. package/runtime/Chrono/Shared/Events.luau +39 -0
  67. package/runtime/Chrono/Shared/Holder.luau +210 -0
  68. package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
  69. package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
  70. package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
  71. package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  72. package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
  73. package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
  74. package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
  75. package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
  76. package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
  77. package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
  78. package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
  79. package/runtime/Chrono/Shared/Signal.luau +219 -0
  80. package/runtime/Chrono/Shared/Snapshots.luau +218 -0
  81. package/runtime/Chrono/Shared/Stats.luau +204 -0
  82. package/runtime/Chrono/Shared/Ticker.luau +112 -0
  83. package/runtime/Chrono/Shared/Types.luau +247 -0
  84. package/runtime/Chrono/Shared/Warn.luau +33 -0
  85. package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  86. package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
  87. package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
  88. package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
  89. package/runtime/Chrono/_impl/Client/Player.luau +113 -0
  90. package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
  91. package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
  92. package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
  93. package/runtime/Chrono/_impl/LICENSE +21 -0
  94. package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
  95. package/runtime/Chrono/_impl/Server/Player.luau +141 -0
  96. package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
  97. package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
  98. package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
  99. package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
  100. package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
  101. package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
  102. package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
  103. package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
  104. package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
  105. package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
  106. package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
  107. package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
  108. package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
  109. package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
  110. package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  111. package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
  112. package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
  113. package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
  114. package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
  115. package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
  116. package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
  117. package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
  118. package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
  119. package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
  120. package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
  121. package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
  122. package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
  123. package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
  124. package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  125. package/runtime/Chrono/_impl/init.luau +96 -0
  126. package/runtime/Chrono/init.luau +14 -0
  127. package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
  128. package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
  129. package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
  130. package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
  131. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  132. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  133. package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
  134. package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
  135. package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
  136. package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
  137. package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
  138. package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
  139. package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
  140. package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
  141. package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
  142. package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
  143. package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
  144. package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
  145. package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
  146. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  147. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  148. package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
  149. package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
  150. package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
  151. package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  152. package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
  153. package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
  154. package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
  155. package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
  156. package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  157. package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
  158. package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
  159. package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
  160. package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
  161. package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
  162. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  163. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  164. package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
  165. package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
  166. package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
  167. package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
  168. package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
  169. package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
  170. package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
  171. package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
  172. package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
  173. package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
  174. package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
  175. package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
  176. package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
  177. package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
  178. package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
  179. package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
  180. package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
  181. package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
  182. package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
  183. package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
  184. package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
  185. package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
  186. package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
  187. package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
  188. package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
  189. package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
  190. package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
  191. package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
  192. package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
  193. package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
  194. package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  195. package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  196. package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
  197. package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
  198. package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
  199. package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
  200. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  201. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  202. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  203. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  204. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  205. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  206. package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
  207. package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
  208. package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
  209. package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
  210. package/runtime/Cmdr/CmdrClient/init.luau +377 -0
  211. package/runtime/Cmdr/LICENSE +21 -0
  212. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
  213. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
  214. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
  215. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
  216. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  217. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  218. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
  219. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
  220. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
  221. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
  222. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
  223. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
  224. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
  225. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
  226. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
  227. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
  228. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
  229. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
  230. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
  231. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  232. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  233. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
  234. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
  235. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
  236. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  237. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
  238. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
  239. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
  240. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
  241. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  242. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
  243. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
  244. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
  245. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
  246. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
  247. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  248. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  249. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
  250. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
  251. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
  252. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
  253. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
  254. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
  255. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
  256. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
  257. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
  258. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
  259. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
  260. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
  261. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
  262. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
  263. package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
  264. package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
  265. package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
  266. package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
  267. package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
  268. package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
  269. package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
  270. package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
  271. package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
  272. package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
  273. package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
  274. package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
  275. package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
  276. package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
  277. package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
  278. package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
  279. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  280. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  281. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
  282. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
  283. package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
  284. package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
  285. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  286. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  287. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  288. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  289. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  290. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  291. package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
  292. package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
  293. package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
  294. package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
  295. package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
  296. package/runtime/Cmdr/_impl/LICENSE +21 -0
  297. package/runtime/Cmdr/_impl/init.luau +178 -0
  298. package/runtime/Cmdr/init.luau +8 -0
  299. package/runtime/DataService/Client.luau +209 -0
  300. package/runtime/DataService/Data.luau +886 -0
  301. package/runtime/DataService/Enum.luau +6 -0
  302. package/runtime/DataService/Enums.luau +10 -0
  303. package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
  304. package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
  305. package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
  306. package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
  307. package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
  308. package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
  309. package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
  310. package/runtime/DataService/Packages/quicknet/init.luau +1 -0
  311. package/runtime/DataService/Packages/signal/init.luau +433 -0
  312. package/runtime/DataService/Path.luau +236 -0
  313. package/runtime/DataService/ProfileStore.luau +2243 -0
  314. package/runtime/DataService/Replicator.luau +172 -0
  315. package/runtime/DataService/Server.luau +412 -0
  316. package/runtime/DataService/init.luau +204 -0
  317. package/runtime/Display/LICENSE +201 -0
  318. package/runtime/Display/_impl/LICENSE +201 -0
  319. package/runtime/Display/_impl/init.luau +269 -0
  320. package/runtime/Display/_impl/option.luau +237 -0
  321. package/runtime/Display/init.luau +10 -0
  322. package/runtime/Display/option.luau +237 -0
  323. package/runtime/EzVisualz/Dropshadow.luau +148 -0
  324. package/runtime/EzVisualz/Gradient.luau +452 -0
  325. package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
  326. package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
  327. package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
  328. package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
  329. package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
  330. package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
  331. package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
  332. package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
  333. package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
  334. package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
  335. package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
  336. package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
  337. package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
  338. package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
  339. package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
  340. package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
  341. package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
  342. package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
  343. package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
  344. package/runtime/EzVisualz/LICENSE.md +21 -0
  345. package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
  346. package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
  347. package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
  348. package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
  349. package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
  350. package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
  351. package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
  352. package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
  353. package/runtime/EzVisualz/Presets/Gold.luau +10 -0
  354. package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
  355. package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
  356. package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
  357. package/runtime/EzVisualz/Presets/Lava.luau +9 -0
  358. package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
  359. package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
  360. package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
  361. package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
  362. package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
  363. package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
  364. package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
  365. package/runtime/EzVisualz/Presets/Shine.luau +48 -0
  366. package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
  367. package/runtime/EzVisualz/Presets/Silver.luau +10 -0
  368. package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
  369. package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
  370. package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
  371. package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
  372. package/runtime/EzVisualz/Presets/init.luau +9 -0
  373. package/runtime/EzVisualz/Stroke.luau +167 -0
  374. package/runtime/EzVisualz/Util.luau +7 -0
  375. package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
  376. package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
  377. package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
  378. package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
  379. package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
  380. package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
  381. package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
  382. package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
  383. package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
  384. package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
  385. package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
  386. package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
  387. package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
  388. package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
  389. package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
  390. package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
  391. package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
  392. package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
  393. package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
  394. package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
  395. package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
  396. package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
  397. package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
  398. package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
  399. package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
  400. package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
  401. package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
  402. package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
  403. package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
  404. package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
  405. package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
  406. package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
  407. package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
  408. package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
  409. package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
  410. package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
  411. package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
  412. package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
  413. package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
  414. package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
  415. package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
  416. package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
  417. package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
  418. package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
  419. package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
  420. package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
  421. package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
  422. package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
  423. package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
  424. package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
  425. package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
  426. package/runtime/EzVisualz/_impl/Util.luau +7 -0
  427. package/runtime/EzVisualz/_impl/init.luau +319 -0
  428. package/runtime/EzVisualz/_impl/wally.lock +8 -0
  429. package/runtime/EzVisualz/_impl/wally.toml +8 -0
  430. package/runtime/EzVisualz/init.luau +9 -0
  431. package/runtime/EzVisualz/wally.lock +8 -0
  432. package/runtime/EzVisualz/wally.toml +8 -0
  433. package/runtime/FormatNumber/LICENSE.md +25 -0
  434. package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
  435. package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
  436. package/runtime/FormatNumber/Main/Notation.lua +116 -0
  437. package/runtime/FormatNumber/Main/Precision.lua +179 -0
  438. package/runtime/FormatNumber/Main/init.lua +199 -0
  439. package/runtime/FormatNumber/Simple/init.lua +76 -0
  440. package/runtime/FormatNumber/Version.lua +82 -0
  441. package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
  442. package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
  443. package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
  444. package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
  445. package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
  446. package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
  447. package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
  448. package/runtime/FormatNumber/_impl/Version.lua +82 -0
  449. package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
  450. package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
  451. package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
  452. package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
  453. package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
  454. package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
  455. package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
  456. package/runtime/FormatNumber/_impl/init.lua +20 -0
  457. package/runtime/FormatNumber/_internal/class.lua +204 -0
  458. package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
  459. package/runtime/FormatNumber/_internal/enums.lua +55 -0
  460. package/runtime/FormatNumber/_internal/format.lua +342 -0
  461. package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
  462. package/runtime/FormatNumber/_internal/init.lua +8 -0
  463. package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
  464. package/runtime/FormatNumber/init.lua +20 -0
  465. package/runtime/FormatNumber/init.luau +20 -0
  466. package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
  467. package/runtime/Fusion/Animation/Spring.luau +313 -0
  468. package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
  469. package/runtime/Fusion/Animation/Tween.luau +178 -0
  470. package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
  471. package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
  472. package/runtime/Fusion/Animation/lerpType.luau +164 -0
  473. package/runtime/Fusion/Animation/packType.luau +100 -0
  474. package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
  475. package/runtime/Fusion/Animation/unpackType.luau +103 -0
  476. package/runtime/Fusion/Colour/Oklab.luau +70 -0
  477. package/runtime/Fusion/Colour/sRGB.luau +47 -0
  478. package/runtime/Fusion/External.luau +156 -0
  479. package/runtime/Fusion/ExternalDebug.luau +70 -0
  480. package/runtime/Fusion/Graph/Observer.luau +111 -0
  481. package/runtime/Fusion/Graph/castToGraph.luau +29 -0
  482. package/runtime/Fusion/Graph/change.luau +81 -0
  483. package/runtime/Fusion/Graph/depend.luau +33 -0
  484. package/runtime/Fusion/Graph/evaluate.luau +56 -0
  485. package/runtime/Fusion/Instances/Attribute.luau +58 -0
  486. package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
  487. package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
  488. package/runtime/Fusion/Instances/Child.luau +21 -0
  489. package/runtime/Fusion/Instances/Children.luau +148 -0
  490. package/runtime/Fusion/Instances/Hydrate.luau +29 -0
  491. package/runtime/Fusion/Instances/New.luau +48 -0
  492. package/runtime/Fusion/Instances/OnChange.luau +50 -0
  493. package/runtime/Fusion/Instances/OnEvent.luau +54 -0
  494. package/runtime/Fusion/Instances/Out.luau +69 -0
  495. package/runtime/Fusion/Instances/Tag.luau +61 -0
  496. package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
  497. package/runtime/Fusion/Instances/defaultProps.luau +194 -0
  498. package/runtime/Fusion/LICENSE +21 -0
  499. package/runtime/Fusion/Logging/formatError.luau +49 -0
  500. package/runtime/Fusion/Logging/messages.luau +46 -0
  501. package/runtime/Fusion/Logging/parseError.luau +25 -0
  502. package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
  503. package/runtime/Fusion/Memory/deriveScope.luau +24 -0
  504. package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
  505. package/runtime/Fusion/Memory/doCleanup.luau +91 -0
  506. package/runtime/Fusion/Memory/innerScope.luau +34 -0
  507. package/runtime/Fusion/Memory/insert.luau +22 -0
  508. package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
  509. package/runtime/Fusion/Memory/scoped.luau +24 -0
  510. package/runtime/Fusion/RobloxExternal.luau +98 -0
  511. package/runtime/Fusion/State/Computed.luau +122 -0
  512. package/runtime/Fusion/State/For/Disassembly.luau +207 -0
  513. package/runtime/Fusion/State/For/ForTypes.luau +30 -0
  514. package/runtime/Fusion/State/For/init.luau +101 -0
  515. package/runtime/Fusion/State/ForKeys.luau +88 -0
  516. package/runtime/Fusion/State/ForPairs.luau +91 -0
  517. package/runtime/Fusion/State/ForValues.luau +88 -0
  518. package/runtime/Fusion/State/Value.luau +76 -0
  519. package/runtime/Fusion/State/castToState.luau +26 -0
  520. package/runtime/Fusion/State/peek.luau +31 -0
  521. package/runtime/Fusion/State/updateAll.luau +1 -0
  522. package/runtime/Fusion/Types.luau +318 -0
  523. package/runtime/Fusion/Utility/Contextual.luau +91 -0
  524. package/runtime/Fusion/Utility/Safe.luau +23 -0
  525. package/runtime/Fusion/Utility/isSimilar.luau +29 -0
  526. package/runtime/Fusion/Utility/merge.luau +35 -0
  527. package/runtime/Fusion/Utility/nameOf.luau +35 -0
  528. package/runtime/Fusion/Utility/never.luau +14 -0
  529. package/runtime/Fusion/Utility/nicknames.luau +11 -0
  530. package/runtime/Fusion/Utility/xtypeof.luau +27 -0
  531. package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
  532. package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
  533. package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
  534. package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
  535. package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
  536. package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
  537. package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
  538. package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
  539. package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
  540. package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
  541. package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
  542. package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
  543. package/runtime/Fusion/_impl/External.luau +156 -0
  544. package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
  545. package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
  546. package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
  547. package/runtime/Fusion/_impl/Graph/change.luau +81 -0
  548. package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
  549. package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
  550. package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
  551. package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
  552. package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
  553. package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
  554. package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
  555. package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
  556. package/runtime/Fusion/_impl/Instances/New.luau +48 -0
  557. package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
  558. package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
  559. package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
  560. package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
  561. package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
  562. package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
  563. package/runtime/Fusion/_impl/LICENSE +21 -0
  564. package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
  565. package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
  566. package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
  567. package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
  568. package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
  569. package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
  570. package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
  571. package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
  572. package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
  573. package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
  574. package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
  575. package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
  576. package/runtime/Fusion/_impl/State/Computed.luau +122 -0
  577. package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
  578. package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
  579. package/runtime/Fusion/_impl/State/For/init.luau +101 -0
  580. package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
  581. package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
  582. package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
  583. package/runtime/Fusion/_impl/State/Value.luau +76 -0
  584. package/runtime/Fusion/_impl/State/castToState.luau +26 -0
  585. package/runtime/Fusion/_impl/State/peek.luau +31 -0
  586. package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
  587. package/runtime/Fusion/_impl/Types.luau +318 -0
  588. package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
  589. package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
  590. package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
  591. package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
  592. package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
  593. package/runtime/Fusion/_impl/Utility/never.luau +14 -0
  594. package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
  595. package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
  596. package/runtime/Fusion/_impl/init.luau +83 -0
  597. package/runtime/Fusion/init.luau +27 -0
  598. package/runtime/Iris/API.lua +2085 -0
  599. package/runtime/Iris/Internal.lua +895 -0
  600. package/runtime/Iris/LICENSE.txt +21 -0
  601. package/runtime/Iris/PubTypes.lua +43 -0
  602. package/runtime/Iris/Types.lua +660 -0
  603. package/runtime/Iris/WidgetTypes.lua +521 -0
  604. package/runtime/Iris/_impl/API.lua +2085 -0
  605. package/runtime/Iris/_impl/Internal.lua +895 -0
  606. package/runtime/Iris/_impl/LICENSE.txt +21 -0
  607. package/runtime/Iris/_impl/PubTypes.lua +43 -0
  608. package/runtime/Iris/_impl/Types.lua +660 -0
  609. package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
  610. package/runtime/Iris/_impl/config.lua +305 -0
  611. package/runtime/Iris/_impl/init.lua +696 -0
  612. package/runtime/Iris/_impl/widgets/Button.lua +90 -0
  613. package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
  614. package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
  615. package/runtime/Iris/_impl/widgets/Format.lua +140 -0
  616. package/runtime/Iris/_impl/widgets/Image.lua +155 -0
  617. package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
  618. package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
  619. package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
  620. package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
  621. package/runtime/Iris/_impl/widgets/Root.lua +143 -0
  622. package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
  623. package/runtime/Iris/_impl/widgets/Table.lua +635 -0
  624. package/runtime/Iris/_impl/widgets/Text.lua +132 -0
  625. package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
  626. package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
  627. package/runtime/Iris/_impl/widgets/init.lua +447 -0
  628. package/runtime/Iris/config.lua +305 -0
  629. package/runtime/Iris/init.lua +696 -0
  630. package/runtime/Iris/init.luau +12 -0
  631. package/runtime/Iris/widgets/Button.lua +90 -0
  632. package/runtime/Iris/widgets/Checkbox.lua +115 -0
  633. package/runtime/Iris/widgets/Combo.lua +492 -0
  634. package/runtime/Iris/widgets/Format.lua +140 -0
  635. package/runtime/Iris/widgets/Image.lua +155 -0
  636. package/runtime/Iris/widgets/Input.lua +1232 -0
  637. package/runtime/Iris/widgets/Menu.lua +599 -0
  638. package/runtime/Iris/widgets/Plot.lua +639 -0
  639. package/runtime/Iris/widgets/RadioButton.lua +126 -0
  640. package/runtime/Iris/widgets/Root.lua +143 -0
  641. package/runtime/Iris/widgets/Tab.lua +333 -0
  642. package/runtime/Iris/widgets/Table.lua +635 -0
  643. package/runtime/Iris/widgets/Text.lua +132 -0
  644. package/runtime/Iris/widgets/Tree.lua +287 -0
  645. package/runtime/Iris/widgets/Window.lua +1075 -0
  646. package/runtime/Iris/widgets/init.lua +447 -0
  647. package/runtime/Janitor/FastDefer.luau +33 -0
  648. package/runtime/Janitor/LICENSE +21 -0
  649. package/runtime/Janitor/_impl/FastDefer.luau +33 -0
  650. package/runtime/Janitor/_impl/LICENSE +21 -0
  651. package/runtime/Janitor/_impl/init.luau +999 -0
  652. package/runtime/Janitor/init.luau +45 -0
  653. package/runtime/MathUtils/init.luau +100 -0
  654. package/runtime/Module3D/LICENSE +21 -0
  655. package/runtime/Module3D/_impl/LICENSE +21 -0
  656. package/runtime/Module3D/_impl/init.luau +269 -0
  657. package/runtime/Module3D/init.luau +14 -0
  658. package/runtime/Net/init.luau +125 -0
  659. package/runtime/Net/src/codec.luau +153 -0
  660. package/runtime/Occlude/init.luau +54 -0
  661. package/runtime/Promise/LICENSE +21 -0
  662. package/runtime/Promise/_impl/LICENSE +21 -0
  663. package/runtime/Promise/_impl/init.lua +1991 -0
  664. package/runtime/Promise/init.lua +1990 -0
  665. package/runtime/Promise/init.luau +13 -0
  666. package/runtime/Promise/types.luau +46 -0
  667. package/runtime/SOURCES.md +22 -0
  668. package/runtime/Spring/LICENSE +201 -0
  669. package/runtime/Spring/_impl/LICENSE +201 -0
  670. package/runtime/Spring/_impl/init.luau +111 -0
  671. package/runtime/Spring/init.luau +24 -0
  672. package/runtime/StateMachine/Classes/State.lua +375 -0
  673. package/runtime/StateMachine/Classes/Transition.lua +336 -0
  674. package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
  675. package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
  676. package/runtime/StateMachine/LICENSE +19 -0
  677. package/runtime/StateMachine/Vendor/Signal.lua +386 -0
  678. package/runtime/StateMachine/Vendor/Trove.lua +188 -0
  679. package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
  680. package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
  681. package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
  682. package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
  683. package/runtime/StateMachine/_impl/LICENSE +19 -0
  684. package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
  685. package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
  686. package/runtime/StateMachine/_impl/init.lua +595 -0
  687. package/runtime/StateMachine/init.lua +595 -0
  688. package/runtime/StateMachine/init.luau +10 -0
  689. package/runtime/StickyBillboard/init.luau +167 -0
  690. package/runtime/TopbarPlus/Attribute.lua +35 -0
  691. package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
  692. package/runtime/TopbarPlus/Elements/Container.lua +215 -0
  693. package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
  694. package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
  695. package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
  696. package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
  697. package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
  698. package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
  699. package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
  700. package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
  701. package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
  702. package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
  703. package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
  704. package/runtime/TopbarPlus/LICENSE +381 -0
  705. package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
  706. package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
  707. package/runtime/TopbarPlus/Reference.lua +30 -0
  708. package/runtime/TopbarPlus/Types.lua +477 -0
  709. package/runtime/TopbarPlus/Utility.lua +462 -0
  710. package/runtime/TopbarPlus/VERSION.lua +51 -0
  711. package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
  712. package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
  713. package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
  714. package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
  715. package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
  716. package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
  717. package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
  718. package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
  719. package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
  720. package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
  721. package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
  722. package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
  723. package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
  724. package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
  725. package/runtime/TopbarPlus/_impl/LICENSE +381 -0
  726. package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
  727. package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
  728. package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
  729. package/runtime/TopbarPlus/_impl/Types.lua +477 -0
  730. package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
  731. package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
  732. package/runtime/TopbarPlus/_impl/init.lua +1249 -0
  733. package/runtime/TopbarPlus/init.lua +1249 -0
  734. package/runtime/TopbarPlus/init.luau +8 -0
  735. package/runtime/Twinkle/init.luau +157 -0
  736. package/runtime/VfxUtil/init.luau +164 -0
  737. package/src/api.generated.js +3675 -0
  738. package/src/api.js +57 -0
  739. package/src/architecture.js +393 -0
  740. package/src/cli.js +192 -0
  741. package/src/compile.js +40 -0
  742. package/src/emit.js +213 -0
  743. package/src/lex.js +149 -0
  744. package/src/libs.js +355 -0
  745. package/src/parse.js +421 -0
  746. package/src/preprocess.js +80 -0
  747. package/src/understand.js +453 -0
  748. package/templates/game/.clangd +5 -0
  749. package/templates/game/.vscode/c_cpp_properties.json +23 -0
  750. package/templates/game/.vscode/settings.json +12 -0
  751. package/templates/game/Packages/.gitkeep +0 -0
  752. package/templates/game/cluaupp.config.json +6 -0
  753. package/templates/game/compile_flags.txt +3 -0
  754. package/templates/game/default.project.json +39 -0
  755. package/templates/game/package.json +9 -0
  756. package/templates/game/src/client/init.client.cpp +5 -0
  757. package/templates/game/src/server/leaderstats.server.cpp +28 -0
  758. package/templates/game/src/shared/config.cpp +5 -0
  759. package/templates/game/src/shared/config.h +3 -0
  760. package/templates/game/wally.toml +11 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0
4
+
5
+ - Product name: **Cluaupp** (C++ × Luau)
6
+ - First public release
7
+ - CLI: `init`, `build`, `watch`, `--version`
8
+ - Transpile C++ subset → Luau `--!strict`
9
+ - `local` and `const x = ...`
10
+ - Full Roblox API from the official dump (925 classes, 636 enums)
11
+ - Datatypes: Vector3, Vector2, CFrame, UDim, UDim2, Color3, BrickColor, Rect, Ray, …
12
+ - `Enum::Material::Plastic` → `Enum.Material.Plastic`
13
+ - GitHub Pages site for every class, method, and event
14
+ - Game template + IntelliSense header (`roblox.hpp`, `compile_flags.txt`, clangd)
15
+ - IntelliSense headers are valid C++: `LuaArray` for `GetPlayers`, templated `Connect`, optional dump defaults (`FindFirstChild`), no recursive `Vector3.Unit` field
16
+ - Libraries: full GitHub systems in CluauppLibs (Janitor, Promise, Fusion, Iris, Cmdr, TopbarPlus, Chrono, DataServiceV2, EzVisualz, StateMachine, Spring, Display, Module3D, FormatNumber) plus Cluaupp originals (Net, MathUtils, Twinkle, StickyBillboard, VfxUtil)
17
+ - Wally is optional; `node scripts/vendor-libs.js` re-copies from `vendor/` clones
18
+ - Moonwave docs (C++ types, const, safety, organization)
19
+ - Service architecture: filename tags (`.server` / `.client` / `.legacy.*` / module) plus AST intent scoring (combat, cache, players, …) — not leaderstats-only
20
+ - Type functions ArrayIndexer (`Table`) and Occlude (`Keys`) in CluauppLibs
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Cluaupp
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # Cluaupp
2
+
3
+ <p align="center">
4
+ <img src="site/assets/logo.png" alt="Cluaupp" width="160">
5
+ </p>
6
+
7
+ **The definitive merge of C++ and modern Luau.**
8
+
9
+ [Docs](https://kartzrbx.github.io/Cluaupp/) · [Learn](https://kartzrbx.github.io/Cluaupp/learn/) · [API](https://kartzrbx.github.io/Cluaupp/api/classes/)
10
+
11
+ The cinematic docs site deploys to [Vercel](https://vercel.com) from `site/` (`vercel.json`). Code blocks use **Dark Modern**, **Tokyo Night**, and **Dracula**. Ask Cluaupp (AI Gateway) is the floating chat on the Vercel deploy.
12
+
13
+ ```bash
14
+ cp .env.example .env.local # set AI_GATEWAY_API_KEY
15
+ npx vercel
16
+ ```
17
+
18
+ [![npm version](https://img.shields.io/npm/v/cluaupp.svg)](https://www.npmjs.com/package/cluaupp)
19
+ [![Node.js](https://img.shields.io/node/v/cluaupp.svg)](https://nodejs.org)
20
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
21
+
22
+ Source-to-source transpiler: you write a C++ subset, Cluaupp emits modern [Luau](https://luau.org/getting-started) (`--!strict`, `local`, `const`). C++ structure, Luau quality, one language.
23
+
24
+ No WASM. No Emscripten. No `lua_call`. Roblox APIs come out as they do in Studio: `game:GetService("Players")`, `player:FindFirstChild("leaderstats")`, `players:GetPlayers()`.
25
+
26
+ ```cpp
27
+ auto* players = GetService<Players>();
28
+ for (auto* player : players->GetPlayers()) {
29
+ CreateLeaderstats(player);
30
+ }
31
+ players->PlayerAdded.Connect(CreateLeaderstats);
32
+
33
+ auto* part = new Part(workspace);
34
+ part->Size = Vector3(8, 1, 8);
35
+ part->CFrame = CFrame::lookAt(Vector3(0, 10, 0), Vector3(0, 10, -10));
36
+ frame->Size = UDim2::fromScale(1, 1);
37
+ ```
38
+
39
+ becomes
40
+
41
+ ```luau
42
+ --!strict
43
+ local players: Players = game:GetService("Players")
44
+ for _, player in players:GetPlayers() do
45
+ CreateLeaderstats(player)
46
+ end
47
+ players.PlayerAdded:Connect(CreateLeaderstats)
48
+ ```
49
+
50
+ ## Install
51
+
52
+ Node.js 18+ and [Rojo](https://rojo.space/) for Studio sync.
53
+
54
+ ```bash
55
+ npm install -g cluaupp
56
+ ```
57
+
58
+ Or run without a global install:
59
+
60
+ ```bash
61
+ npx cluaupp init my-game
62
+ ```
63
+
64
+ ## Quick start
65
+
66
+ ```bash
67
+ cluaupp init my-game
68
+ cd my-game
69
+ cluaupp build
70
+ rojo serve
71
+ ```
72
+
73
+ Connect the Rojo plugin in Roblox Studio. Edit `src/**/*.{cpp,h,hpp}`, run `cluaupp watch` to rebuild on save.
74
+
75
+ ```
76
+ src/server/*.server.cpp → out/server/LeaderStats/ Script + ModuleScripts
77
+ src/client/*.client.cpp → out/client/*.client.luau LocalScript (or a service folder)
78
+ src/shared/config.* → out/shared/Config.luau typed config module
79
+ ```
80
+
81
+ A tiny `leaderstats.server.cpp` becomes `Main` / `PlayersManager` / `CacheController`. A combat `.server.cpp` becomes `CombatController` with your `TakeDamage` logic. Filename tags: `.server.cpp`, `.client.cpp`, `.legacy.server.cpp`, `.legacy.client.cpp`, or no tag (ModuleScript). See [Architecture](docs/architecture.md).
82
+
83
+ ## Documentation
84
+
85
+ | Guide | What it covers |
86
+ | --- | --- |
87
+ | [Getting started](docs/getting-started.md) | Install, first project, Rojo, IntelliSense |
88
+ | [**Docs + API (GitHub Pages)**](https://kartzrbx.github.io/Cluaupp/) | Site, Learn tab, every class / datatype / enum |
89
+ | [Learn](https://kartzrbx.github.io/Cluaupp/learn/) | C++ subset, Luau output, safety, architecture |
90
+ | [CLI](docs/cli.md) | `init`, `build`, `watch`, flags |
91
+ | [Syntax](docs/syntax.md) | C++ subset → Luau (`local`, `const`, types) |
92
+ | [Roblox API](docs/roblox-api.md) | Vector3, CFrame, UDim2, GetService, Instance.new |
93
+ | [Architecture](docs/architecture.md) | PascalCase services, Types modules, not a 200-line dump |
94
+ | [C++ types](docs/cpp-types.md) | Typing, `const`, safety, organization |
95
+ | [Comparison](docs/comparison.md) | vs roblox-ts and WASM toolchains |
96
+ | [Contributing](CONTRIBUTING.md) | Tests, layout, how to ship |
97
+
98
+ ## Programmatic API
99
+
100
+ ```js
101
+ const { compileSource, compileService } = require("cluaupp");
102
+
103
+ const luau = compileSource(
104
+ `void init() { print("ok"); }`,
105
+ "init.cpp",
106
+ { strict: true },
107
+ );
108
+
109
+ const service = compileService(
110
+ cppSource,
111
+ "server/leaderstats.server.cpp",
112
+ { relativeName: "server/leaderstats.server.cpp" },
113
+ );
114
+ // service.files → LeaderStats/Main.luau, PlayersManager, CacheController, Types
115
+ ```
116
+
117
+ ## License
118
+
119
+ MIT
package/bin/cluau.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ require("../src/cli.js");
package/bin/cluaupp.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ require("../src/cli.js");
package/docs/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # Cluaupp documentation
2
+
3
+ 1. [Intro](intro.md) — what Cluaupp is
4
+ 2. [Getting started](getting-started.md) — npm, Rojo, Wally
5
+ 3. [CLI](cli.md) — `init`, `build`, `watch`
6
+ 4. [Syntax](syntax.md) — C++ subset, `local`, `const`
7
+ 5. [C++ types](cpp-types.md) — primitives, Instances, `nullptr`
8
+ 6. [const](cpp-const.md) — immutability
9
+ 7. [Safety](cpp-safety.md) — client trust, Janitor, Net, DataService
10
+ 8. [Organization](cpp-organization.md) — server / client / shared
11
+ 9. [Advanced](cpp-advanced.md) — `::` vs `:`, Wally, performance
12
+ 10. [Architecture](architecture.md) — PascalCase services, Types modules, vs roblox-ts dumps
13
+ 11. [Libraries](libraries.md) — Janitor, Promise, Net, Module3D, Twinkle, DataServiceV2
14
+ 12. [Roblox API](roblox-api.md) — Vector3, CFrame, UDim2, classes
15
+ 13. [Config](config.md) — `cluaupp.config.json`
16
+ 14. [Comparison](comparison.md) — roblox-ts and WASM
17
+
18
+ Moonwave site (local): `npx moonwave dev`
19
+
20
+ Full site + engine API: **[GitHub Pages](https://kartzrbx.github.io/Cluaupp/)**
@@ -0,0 +1,110 @@
1
+ ---
2
+ title: Architecture
3
+ sidebar_position: 15
4
+ ---
5
+
6
+ # Output treated as a Roblox system
7
+
8
+ roblox-ts decides **what instance you get** from a filename **key** (the same idea as Rojo):
9
+
10
+ | Key | Rojo instance |
11
+ | --- | --- |
12
+ | `*.server.ts` | Script |
13
+ | `*.client.ts` | LocalScript |
14
+ | no suffix | ModuleScript |
15
+
16
+ Flamework then stamps a second key (`@Service` / `@Controller`) so the runtime knows the **role**. Cluaupp does both steps without decorators.
17
+
18
+ 1. **Tag** (filename) — where the code runs and whether it is a Script, LocalScript, ModuleScript, or a 1:1 “legacy” dump.
19
+ 2. **Intent** (AST) — what the code *is for*: players, cache, combat, input, UI, net, data, … scored from APIs and identifiers, the same idea as intent classification in program analysis (features from the tree, not a 200-line dump).
20
+
21
+ Leaderstats was the example. A combat `.server.cpp` is a different system and gets Combat folders, not a fake CacheController.
22
+
23
+ ## File tags
24
+
25
+ | Source | Meaning | Output |
26
+ | --- | --- | --- |
27
+ | `combat.server.cpp` | Server **system** | `Combat/` Script: `init.server.luau` + Main / Controllers / Types |
28
+ | `hud.client.cpp` | Client **system** | `Hud/` LocalScript folder |
29
+ | `boot.legacy.server.cpp` | Server script, no split | `boot.server.luau` (Rojo Script, `init()` still runs) |
30
+ | `boot.legacy.client.cpp` | Client script, no split | `boot.client.luau` |
31
+ | `damage.cpp` (no tag) | **Module** | `Damage.luau` ModuleScript `return { ... }` — does not auto-run |
32
+
33
+ Trivial entry files (`init.client.cpp` that only `print`) stay a single LocalScript. The planner does not invent Managers for a hello-world.
34
+
35
+ ## How the planner reasons
36
+
37
+ ```
38
+ filename key → server | client | module | legacy
39
+ AST features → GetService, Instance.new, methods, identifiers
40
+ intent scores → combat:2, character:1, …
41
+ roles → Main + Managers + Controllers + Types
42
+ user functions→ kept in the matching Controller (not discarded)
43
+ ```
44
+
45
+ Generated files start with that trace:
46
+
47
+ ```luau
48
+ -- tag server → Script (service)
49
+ -- intents combat:2, character:1
50
+ -- roles Main, CombatController, CombatTypes
51
+ ```
52
+
53
+ | Evidence in the C++ | Role |
54
+ | --- | --- |
55
+ | `PlayerAdded`, `GetPlayers` | `PlayersManager` (Janitor) |
56
+ | `Folder` + `IntValue` / `StringValue` | `CacheController` |
57
+ | `TakeDamage`, `Humanoid`, `Raycast` | `CombatController` (your functions) |
58
+ | `UserInputService`, `InputBegan` | `InputController` |
59
+ | `RemoteEvent`, `Net` | `NetController` |
60
+ | `DataStore`, `DataService` | `DataController` |
61
+ | Domain shapes / stats | `{Service}Types` (`export type`, `return {}`) |
62
+ | Wiring | `Main.Start` / `Main.Stop` |
63
+
64
+ If the C++ creates Coins/Level, CacheController is generated (higher quality than copying `CreateLeaderstats`). Combat logic is **not** rewritten into leaderstats — `ApplyDamage` stays in `CombatController.luau`.
65
+
66
+ ## What leaderstats becomes
67
+
68
+ ```
69
+ src/server/leaderstats.server.cpp
70
+ ```
71
+
72
+ ```
73
+ out/server/LeaderStats/
74
+ init.server.luau
75
+ Main.luau
76
+ PlayersManager.luau
77
+ CacheController.luau
78
+ LeaderStatsTypes.luau
79
+ ```
80
+
81
+ ## What combat becomes
82
+
83
+ ```
84
+ src/server/combat.server.cpp -- TakeDamage, Humanoid
85
+ ```
86
+
87
+ ```
88
+ out/server/Combat/
89
+ init.server.luau
90
+ Main.luau
91
+ CombatController.luau -- your ApplyDamage / OnHit
92
+ CombatTypes.luau
93
+ ```
94
+
95
+ No PlayersManager unless you actually listen to players. No CacheController unless you actually create value Instances.
96
+
97
+ ## ForeverHD-style rules
98
+
99
+ - PascalCase folders and modules; camelCase locals
100
+ - `--!strict` everywhere
101
+ - Public API `Start` / `Stop`
102
+ - Janitor owns connections in the Manager
103
+ - Types modules `return {}`
104
+ - Transparent `require(script.Parent.X)`
105
+
106
+ ## Config
107
+
108
+ `cluaupp.config.json`: `"architecture": true` (default). `"architecture": false` forces 1:1 dumps (or use `.legacy.server.cpp` / `.legacy.client.cpp` per file).
109
+
110
+ See [organization](cpp-organization.md) and [comparison](comparison.md).
package/docs/cli.md ADDED
@@ -0,0 +1,69 @@
1
+ # CLI
2
+
3
+ ```
4
+ cluaupp <command> [folder]
5
+ ```
6
+
7
+ If `[folder]` is omitted, the current directory is used.
8
+
9
+ ## `cluaupp init [folder]`
10
+
11
+ Creates a game from the template:
12
+
13
+ - `src/server`, `src/client`, `src/shared`
14
+ - `cluaupp.config.json`
15
+ - `default.project.json` (Rojo)
16
+ - `include/cluaupp/roblox.hpp` (IntelliSense)
17
+ - `.vscode/c_cpp_properties.json`
18
+
19
+ ```bash
20
+ cluaupp init .
21
+ cluaupp init my-game
22
+ ```
23
+
24
+ ## `cluaupp build [folder]`
25
+
26
+ Transpiles `src/**/*.{cpp,h,hpp}` into `out/`. Script files become PascalCase **service folders** (`LeaderStats/Main.luau`, `PlayersManager.luau`, `CacheController.luau`, `LeaderStatsTypes.luau`) plus `init.server.luau` for Rojo. Shared `const` headers become `Config.luau`.
27
+
28
+ - `--!strict` on every module
29
+ - `#include "file.h"` inlines that header into the current file
30
+ - `#include <cluaupp/roblox.hpp>` is ignored
31
+ - `.h` / `.hpp` with a sibling `.cpp` are not emitted twice
32
+ - `new Folder(parent)` in a stats system becomes `CacheController.Ensure`
33
+ - A parse error exits with code 1 and `file:line:column`
34
+
35
+ ```bash
36
+ cluaupp build
37
+ cluaupp build ./my-game
38
+ ```
39
+
40
+ ## `cluaupp watch [folder]`
41
+
42
+ Runs a `build` and rebuilds when a `.cpp`, `.h`, or `.hpp` under `src/` changes. Parse errors are printed; the watcher stays alive.
43
+
44
+ ## `cluaupp --version` / `cluaupp -v`
45
+
46
+ Prints the npm package version.
47
+
48
+ ## `cluaupp --help`
49
+
50
+ Shows usage.
51
+
52
+ ## Suggested npm scripts
53
+
54
+ ```json
55
+ {
56
+ "scripts": {
57
+ "build": "cluaupp build",
58
+ "watch": "cluaupp watch"
59
+ }
60
+ }
61
+ ```
62
+
63
+ In the Cluaupp development repo:
64
+
65
+ ```bash
66
+ npm run build # cluaupp build game
67
+ npm run dev # watch + Rojo
68
+ npm run stop # stop Rojo
69
+ ```
@@ -0,0 +1,37 @@
1
+ # Why Cluaupp
2
+
3
+ ## vs roblox-ts
4
+
5
+ [roblox-ts](https://roblox-ts.com/) transpiles TypeScript → Luau. Cluaupp is the same idea for C++: one language merge, readable output, quality Roblox APIs.
6
+
7
+ Both are source-to-source. Neither goes through WASM. Generated Luau calls the Roblox API directly.
8
+
9
+ The difference is **what Studio receives**. roblox-ts stops at the filename key (`*.server.ts` → Script). Cluaupp uses that key **and** reads the AST so a combat system is not emitted as a fake leaderstats. See [Architecture](architecture.md).
10
+
11
+ Current Luau has [`local`, `const`, and `--!strict`](https://luau.org/getting-started). Cluaupp emits that on purpose: `const int` in C++ becomes `const x = ...` in Luau.
12
+
13
+ ## vs C++ → WASM → Luau (RBX-CPP / Emscripten)
14
+
15
+ Compiling real C++ to WASM and translating the binary to Luau works, but the cost shows up in the API:
16
+
17
+ - Roblox methods become generic calls (`lua_call`, blobs)
18
+ - `GetPlayers()` and `FindFirstChild()` do not come out as they do in Studio
19
+ - Heavy toolchain: Emscripten, CMake, Python, tens of GB of cache
20
+
21
+ Cluaupp skips that path. You write *script* C++ (the same mental subset as roblox-ts) and the compiler emits readable Luau.
22
+
23
+ ```cpp
24
+ players->GetPlayers()
25
+ player->FindFirstChild("leaderstats")
26
+ GetService<Players>()
27
+ ```
28
+
29
+ is exactly what Studio expects, not a parallel runtime.
30
+
31
+ ## When to use what
32
+
33
+ | Goal | Tool |
34
+ | --- | --- |
35
+ | Game in TypeScript | roblox-ts |
36
+ | Game in C++, clear Roblox API, Luau `--!strict` | **Cluaupp** |
37
+ | Full native C++ (templates, STL, engines) | not Cluaupp today |
package/docs/config.md ADDED
@@ -0,0 +1,31 @@
1
+ # Configuration
2
+
3
+ File: `cluaupp.config.json` at the game root (next to `src/`).
4
+
5
+ ```json
6
+ {
7
+ "rootDir": "src",
8
+ "outDir": "out",
9
+ "strict": true,
10
+ "architecture": true
11
+ }
12
+ ```
13
+
14
+ | Field | Default | Effect |
15
+ | --- | --- | --- |
16
+ | `rootDir` | `"src"` | Where the `.cpp` / `.h` / `.hpp` files live |
17
+ | `outDir` | `"out"` | Where services and modules are written |
18
+ | `strict` | `true` | Prefix `--!strict` on every generated file |
19
+ | `architecture` | `true` | Emit PascalCase service folders (`LeaderStats/Main.luau`, …) instead of one dump per `.cpp` |
20
+
21
+ If the file is missing, those defaults apply.
22
+
23
+ ## Rojo
24
+
25
+ The template ships `default.project.json` mapping:
26
+
27
+ - `out/server` → `ServerScriptService.Cluaupp`
28
+ - `out/client` → `StarterPlayer.StarterPlayerScripts.Cluaupp`
29
+ - `out/shared` → `ReplicatedStorage.Cluaupp`
30
+
31
+ `*.server.luau` and `*.client.luau` files are classified by Rojo as Script and LocalScript. A folder with `init.server.luau` becomes a Script named after the folder (`LeaderStats`) with ModuleScript children (`Main`, `PlayersManager`, `CacheController`, `LeaderStatsTypes`).
@@ -0,0 +1,71 @@
1
+ ---
2
+ title: Advanced Cluaupp
3
+ sidebar_position: 14
4
+ ---
5
+
6
+ # Advanced Cluaupp
7
+
8
+ The subset is intentional. What exists is enough for game scripts; what is missing is listed so you do not fight the compiler.
9
+
10
+ ## Supported
11
+
12
+ - Functions, prototypes (headers only), `if` / `else` / `while` / range-`for`
13
+ - `new Class(parent)`, `GetService<T>()`, `::` statics (`CFrame::lookAt`, `Enum::Material::Plastic`)
14
+ - `->` methods and properties, `.` members, `Connect`
15
+ - `const`, `auto`, `nullptr`, arithmetic, `&&` `||` `!=`
16
+ - Quoted includes, `.h` / `.hpp` as sources
17
+ - Libraries via `#include <cluaupp/libs/...>` → `require(CluauppLibs.*)`
18
+
19
+ ## Not supported (yet)
20
+
21
+ Full C++: templates besides `GetService<T>`, `class` bodies as emitted types, `std::`, overloading as two runtimes, `switch`, C-style `for`, macros, pointer arithmetic.
22
+
23
+ If you need a custom type, it is usually a **ModuleScript in shared** (a `.cpp` of functions) or a Wally package, not a C++ class the compiler would lower to a metatable.
24
+
25
+ ## `::` vs `:` vs `.`
26
+
27
+ | C++ | Luau | When |
28
+ | --- | --- | --- |
29
+ | `CFrame::lookAt(a, b)` | `CFrame.lookAt(a, b)` | datatype / enum / module static |
30
+ | `MathUtils::Lerp(a, b, t)` | `MathUtils.Lerp(a, b, t)` | Cluaupp module function |
31
+ | `Module3D::Attach3D(frame, model)` | `Module3D:Attach3D(frame, model)` | Module3D’s colon API |
32
+ | `player->FindFirstChild("x")` | `player:FindFirstChild("x")` | Instance method |
33
+ | `player->Name` | `player.Name` | property |
34
+ | `janitor->Add(conn)` | `janitor:Add(conn)` | library method |
35
+
36
+ ## Init
37
+
38
+ If a file defines `void init()`, Cluaupp calls `init()` at the end of the `.luau`. Use that as the Script / LocalScript entry. Shared modules should **not** define `init()` unless you want them to run on require.
39
+
40
+ ## Mixing extra Wally packages
41
+
42
+ CluauppLibs already contains the full Janitor, Fusion, Cmdr, DataServiceV2, … systems (copied from GitHub into `runtime/`). Add Wally only for packages that are **not** in CluauppLibs. Headers in `include/cluaupp/libs/` match the shipped Luau.
43
+
44
+ ```cpp
45
+ #include <cluaupp/libs/dataservice.hpp>
46
+
47
+ void Grant(Player* player, int amount) {
48
+ auto coins = DataService::Get(player, "Currencies.Coins");
49
+ DataService::Set(player, "Currencies.Coins", coins + amount);
50
+ }
51
+ ```
52
+
53
+ Keep path strings in `config.h`. Match the tokens your DataServiceV2 template already uses (`DataService.Paths.Currencies.Coins` in Luau).
54
+
55
+ ## Performance notes
56
+
57
+ - Prefer `const` and locals over recomputing in `RenderStepped`.
58
+ - `Net` already uses `buffer`. Batch when you can; do not fire per-heartbeat for every NPC.
59
+ - Module3D is a ViewportFrame — fine for shops and inventory, not for cloning the whole map (same advice as the [original Module3D thread](https://devforum.roblox.com/t/module3d-v61-viewportframe-implementation/207383)).
60
+ - Janitor `Cleanup` is O(tracked objects). Link to the Instance that owns the scope instead of a global janitor for the whole server.
61
+
62
+ ## Good C++ conduct that still applies
63
+
64
+ 1. **Initialize everything.** `int coins;` without a value is a bug; write `int coins = 0`.
65
+ 2. **Small functions.** One behavior, named after the behavior.
66
+ 3. **No magic numbers.** `const int MAX_INVENTORY = 20`.
67
+ 4. **Early return.** Flatten `if` pyramids.
68
+ 5. **Headers declare, scripts define.** Prototypes in `.h`, bodies in `.cpp`.
69
+ 6. **Do not share mutable statics across server and client** — use Net or DataService.
70
+
71
+ See also: [syntax](syntax.md), [libraries](libraries.md), [comparison](comparison.md).
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: const and immutability
3
+ sidebar_position: 11
4
+ ---
5
+
6
+ # const and immutability
7
+
8
+ A value that must not change should say so. In C++ that is `const`. Cluaupp emits Luau `const`, not `local x <const>`.
9
+
10
+ ```cpp
11
+ const int STARTING_COINS = 0;
12
+ const double GRAVITY = 196.2;
13
+ ```
14
+
15
+ ```luau
16
+ const STARTING_COINS: number = 0
17
+ const GRAVITY: number = 196.2
18
+ ```
19
+
20
+ ## Why it is a safety feature
21
+
22
+ - Leaderstat starting values, product IDs, remote names, and animation speeds are configuration. If they are `local`, a later line can overwrite them by accident.
23
+ - Reviewers see `const` and skip “could this mutate?”.
24
+ - Luau `--!strict` rejects assignment to `const`.
25
+
26
+ ## What to keep mutable
27
+
28
+ Player-owned numbers (`coins`, `combo`), UI state, and Janitor instances. Everything else defaults to `const` until you have a reason.
29
+
30
+ ```cpp
31
+ const string REMOTE_COINS = "Coins";
32
+ int coins = 0;
33
+
34
+ void AddCoins(int amount) {
35
+ coins = coins + amount;
36
+ }
37
+ ```
38
+
39
+ `REMOTE_COINS` is a protocol name — immutable. `coins` is session state — mutable.
40
+
41
+ ## Immutability for tables and Instances
42
+
43
+ `const` on a pointer does not freeze the Instance. `const Folder* stats` still has a mutable `Name` in Roblox. Treat “do not rebind the variable” and “do not mutate the object” as two separate decisions. For objects, prefer:
44
+
45
+ - Create, parent, configure once, then only read.
46
+ - Put mutations behind one function (`SetCoins`) instead of writing `coins.Value` from five scripts.
47
+
48
+ ## DataService paths
49
+
50
+ Path tokens (`"Currencies.Coins"`) should be `const string` or a shared header. Never concatenate remote or datastore keys from user input.
51
+
52
+ Next: [safety](cpp-safety.md).
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Organization
3
+ sidebar_position: 13
4
+ ---
5
+
6
+ # Organization
7
+
8
+ A Cluaupp game is laid out like a roblox-ts project on disk. The **output** is not a dump: `cluaupp build` turns each system into a PascalCase service folder (Main, Manager, Controller, Types). See [Architecture](architecture.md).
9
+
10
+ ```
11
+ src/
12
+ server/ → Script (out/server)
13
+ client/ → LocalScript (out/client)
14
+ shared/ → ModuleScript (out/shared)
15
+ include/cluaupp/ IntelliSense
16
+ libs/ CluauppLibs (full Janitor, Fusion, Cmdr, DataService, …)
17
+ Packages/ extra Wally packages only
18
+ cluaupp.config.json
19
+ default.project.json
20
+ wally.toml
21
+ ```
22
+
23
+ ## Server / client / shared
24
+
25
+ | Folder | Runs on | Allowed to |
26
+ | --- | --- | --- |
27
+ | `src/server` | Server | DataStore, DataService writes, `Net:Fire` |
28
+ | `src/client` | Client | UI, Module3D, Twinkle, camera, `Net:FireServer` |
29
+ | `src/shared` | Both | types, `const` config, FormatNumber, MathUtils |
30
+
31
+ If a file needs `DataStoreService`, it is server. If it needs `UserInputService`, it is client. Shared code must compile in both.
32
+
33
+ ## Headers vs scripts
34
+
35
+ - `.h` / `.hpp` in `src/` are inlined (`#include "config.h"`) and can hold `const` values and prototypes.
36
+ - `#include <cluaupp/...>` is IntelliSense only — never inlined. `cluaupp build` copies those headers into the game `include/` folder. Cursor/clangd also reads `compile_flags.txt`.
37
+
38
+ Keep config in `src/shared/config.h`:
39
+
40
+ ```cpp
41
+ #pragma once
42
+ const int STARTING_COINS = 0;
43
+ const string REMOTE_COINS = "Coins";
44
+ ```
45
+
46
+ ## One module, one job
47
+
48
+ `leaderstats.server.cpp` creates leaderstats. It does not also open the shop UI. Name files after the system: `inventory.server.cpp`, `shop.client.cpp`.
49
+
50
+ `*.server.cpp` / `*.client.cpp` are **tags** (the same keys roblox-ts uses). Untagged `.cpp` is a ModuleScript. `.legacy.server.cpp` / `.legacy.client.cpp` skip the service split. See [Architecture](architecture.md).
51
+
52
+ ## CluauppLibs vs extra Wally
53
+
54
+ | Need | Where |
55
+ | --- | --- |
56
+ | Janitor, Promise, Fusion, Iris, Cmdr, TopbarPlus, Chrono, DataServiceV2, EzVisualz, StateMachine, Spring, Display, Module3D, FormatNumber, Net, MathUtils, Twinkle | `CluauppLibs` (copied on `cluaupp build` from GitHub-vendored `runtime/`) |
57
+ | Some other community package | `wally.toml` → `Packages` |
58
+
59
+ Do not install a second Janitor from Wally unless you have a reason — CluauppLibs already has howmanysmall/Janitor. DataServiceV2 still bundles its own janitor/quicknet/signal inside the DataService folder.
60
+
61
+ Next: [advanced Cluaupp](cpp-advanced.md).