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
@@ -0,0 +1,953 @@
1
+ --!optimize 2
2
+
3
+ --[QuickNet] v0.3.0
4
+ --author: u5eful
5
+
6
+ --services--
7
+ local RunService = game:GetService("RunService")
8
+ local Players = game:GetService("Players")
9
+
10
+ --dependencies--
11
+ local DataTypes = require(script.Parent.DataTypes)
12
+ local Enums = require(script.Parent.Enums)
13
+ local Serialize = require(script.Parent.Serialize)
14
+ local Parser = require(script.Parent.Parser)
15
+ local Types = require(script.Parent.Types)
16
+
17
+ --config--
18
+ local SOURCE = "[QuickNet]"
19
+ local DEBUG_MODE = true --set to false for production
20
+ local RATE_LIMIT = {Max = 120, Time = 1} --adjust this
21
+ local MAX_CALLS_PER_FRAME = 100000 --adjust this
22
+ local INVOKE_TIMEOUT = 10
23
+ local MAX_INVOKE_TIMEOUT = 60
24
+ local MAX_PAYLOAD_SIZE = 200000000000 --adjust this (recommended 5-50K)
25
+ local MAX_ARGS = 30
26
+ local ERROR_MSGS = {
27
+ MaxArgs = "Number of arguments exceeds max",
28
+ InvalidInternalArg1 = "invalid internal argument 1",
29
+ InvalidInternalArg2 = "invalid internal argument 2",
30
+ Unreliable1 = "Network function cannot be unreliable",
31
+ Response1 = "Unreliable event does not support response",
32
+ }
33
+ local MAX_REQ_ID_RANGE = 65536
34
+ local CLIENT_TEMP_BUFF_SIZE = 20000000 --adjust this (recommended 1-5M)
35
+ local SERVER_TEMP_BUFF_SIZE = 2000000 --adjust this (recommended 500K-1M)
36
+ local REMOTE_EVENT = 0
37
+ local REMOTE_FUNCTION = 1
38
+ local INVOKE_FAIL_ID = 0
39
+ local TBL_POOL_SIZE = 100
40
+
41
+ --types--
42
+ type Signal<T...> = Types.Signal<T...>
43
+ export type NetworkEvent<A... = ()> = Types.NetworkEvent<A...>
44
+ export type NetworkFunction<A... = (), B... = ()> = Types.NetworkFunction<A..., B...>
45
+ type NetworkInfo<A..., B...> = Types.NetworkInfo<A..., B...>
46
+ export type QuickNetConnection = Types.QuickNetConnection
47
+ type SchemaArg = Types.SchemaArg
48
+ type Queue = Types.Queue
49
+
50
+ --helpers--
51
+ local function getClientQueue(): Queue
52
+ return {
53
+ QueueSize = 0,
54
+ ByteSize = 0,
55
+ TempBuffer = buffer.create(CLIENT_TEMP_BUFF_SIZE),
56
+ Instances = {},
57
+ }
58
+ end
59
+
60
+ --variables--
61
+ local isServer = RunService:IsServer()
62
+ local getSchema = Parser.getSchema
63
+ local Net = {}
64
+ local encodeData = Serialize.encode
65
+ local decodeData = Serialize.decode
66
+ local eventsInfo: {[number]: NetworkInfo<(), ()>} = {}
67
+ local namesRegistered: {[string]: boolean} = {}
68
+ local rateLimitInfo: {[Player]: {[string]: {Timestamp: number, NumSends: number}}} = {}
69
+ local reqThreads: {[number]: thread} = {}
70
+ local asyncThreadsPool: {thread} = {}
71
+ local timeoutTasks: {[number]: thread} = {}
72
+ local globalReqId: number = -1
73
+ local globalEventId: number = 0
74
+ local buffersPool: {buffer} = {}
75
+ local buffersCache: {[number]: {buffer}} = {}
76
+ local buffersCacheSize = 0
77
+ local clientQueue: Queue?
78
+ local clientQueueUnr: Queue?
79
+ if not isServer then
80
+ clientQueue = getClientQueue()
81
+ clientQueueUnr = getClientQueue()
82
+ end
83
+ local serverQueue: {[Player]: Queue} = {}
84
+ local serverQueueUnr: {[Player]: Queue} = {}
85
+ local internalRemote: RemoteEvent
86
+ local internalUnreliable: UnreliableRemoteEvent
87
+ local maxPayloadSize = MAX_PAYLOAD_SIZE
88
+ local tablePool = table.create(TBL_POOL_SIZE)
89
+
90
+ --private--
91
+ @native local function getTable(): {any}
92
+ local poolIdx = #tablePool
93
+ local tbl = tablePool[poolIdx]
94
+ tablePool[poolIdx] = nil
95
+ return tbl or {}
96
+ end
97
+
98
+ @native local function recycleTable(tbl: {any})
99
+ local poolIdx = #tablePool
100
+ if poolIdx > TBL_POOL_SIZE then
101
+ return
102
+ end
103
+ table.clear(tbl)
104
+ tablePool[poolIdx + 1] = tbl
105
+ end
106
+
107
+ local function errorMsg(msg: string)
108
+ error(SOURCE.." "..msg, 3)
109
+ end
110
+
111
+ local function warnMsg(msg: string, bypassDebugMode: boolean?)
112
+ if not DEBUG_MODE and not bypassDebugMode then
113
+ return
114
+ end
115
+ warn(SOURCE.." "..msg)
116
+ end
117
+
118
+ local function getRemote(name: string): RemoteEvent
119
+ local remote
120
+ if isServer then
121
+ remote = Instance.new("RemoteEvent")
122
+ remote.Name = name
123
+ remote.Parent = script
124
+ else
125
+ remote = script:WaitForChild(name)
126
+ end
127
+ return remote
128
+ end
129
+
130
+ local function getUnreliable(name: string): UnreliableRemoteEvent
131
+ local unreliable
132
+ if isServer then
133
+ unreliable = Instance.new("UnreliableRemoteEvent")
134
+ unreliable.Name = name
135
+ unreliable.Parent = script
136
+ else
137
+ unreliable = script:WaitForChild(name)
138
+ end
139
+ return unreliable
140
+ end
141
+
142
+ local function getBuffer(): buffer
143
+ local poolIdx = #buffersPool
144
+ local buff = buffersPool[poolIdx] or buffer.create(SERVER_TEMP_BUFF_SIZE)
145
+ buffersPool[poolIdx] = nil
146
+ return buff
147
+ end
148
+
149
+ local function recycleBuffer(buff: buffer)
150
+ local poolIdx = #buffersPool
151
+ if poolIdx >= 30 or not buff then return end
152
+ buffersPool[#buffersPool + 1] = buff
153
+ end
154
+
155
+ @native local function cacheBuffer(buff: buffer, size: number)
156
+ if buffersCacheSize > 9 then
157
+ local k = next(buffersCache)
158
+ buffersCache[k] = nil
159
+ else
160
+ buffersCacheSize += 1
161
+ end
162
+ buffersCache[size] = buff
163
+ end
164
+
165
+ @native local function getBufferFromCache(size: number)
166
+ local buff = buffersCache[size]
167
+ if buff then
168
+ buffersCache[size] = nil
169
+ buffersCacheSize -= 1
170
+ end
171
+ return buff
172
+ end
173
+
174
+ @native local function getBatchedBuffer(queue: Queue): buffer
175
+ local bytes = queue.ByteSize
176
+ local size = bytes + 2
177
+ local buff = getBufferFromCache(size) or buffer.create(size)
178
+ buffer.writeu16(buff, 0, queue.QueueSize)
179
+ buffer.copy(buff, 2, queue.TempBuffer, 0, bytes)
180
+ cacheBuffer(buff, size)
181
+ return buff
182
+ end
183
+
184
+ @native local function flushQueue(queue: Queue, clearInst: boolean)
185
+ queue.QueueSize = 0
186
+ queue.ByteSize = 0
187
+ if clearInst then
188
+ table.clear(queue.Instances)
189
+ end
190
+ end
191
+
192
+ @native local function processQueueClient()
193
+ if clientQueueUnr.QueueSize >= 1 then --unreliable
194
+ local buff = getBatchedBuffer(clientQueueUnr)
195
+ local inst = clientQueueUnr.Instances
196
+ local hasInst = #inst > 0
197
+ if hasInst then
198
+ internalUnreliable:FireServer(buff, inst)
199
+ else
200
+ internalUnreliable:FireServer(buff)
201
+ end
202
+ flushQueue(clientQueueUnr, hasInst)
203
+ end
204
+
205
+ if clientQueue.QueueSize >= 1 then --normal
206
+ local buff = getBatchedBuffer(clientQueue)
207
+ local inst = clientQueue.Instances
208
+ local hasInst = #inst > 0
209
+ if hasInst then
210
+ internalRemote:FireServer(buff, inst)
211
+ else
212
+ internalRemote:FireServer(buff)
213
+ end
214
+ flushQueue(clientQueue, hasInst)
215
+ end
216
+ end
217
+
218
+ @native local function processQueueServer()
219
+ for player, queue in serverQueueUnr do --unreliable
220
+ if not queue or queue.QueueSize < 1 then
221
+ continue
222
+ end
223
+
224
+ local buff = getBatchedBuffer(queue)
225
+ local inst = queue.Instances
226
+ local hasInst = #inst > 0
227
+ if hasInst then
228
+ internalUnreliable:FireClient(player, buff, inst)
229
+ else
230
+ internalUnreliable:FireClient(player, buff)
231
+ end
232
+ flushQueue(queue, hasInst)
233
+ end
234
+
235
+ for player, queue in serverQueue do --normal
236
+ if not queue or queue.QueueSize < 1 then
237
+ continue
238
+ end
239
+
240
+ local buff = getBatchedBuffer(queue)
241
+ local inst = queue.Instances
242
+ local hasInst = #inst > 0
243
+ if hasInst then
244
+ internalRemote:FireClient(player, buff, inst)
245
+ else
246
+ internalRemote:FireClient(player, buff)
247
+ end
248
+ flushQueue(queue, hasInst)
249
+ end
250
+ end
251
+
252
+ @native local function queueEvent(queue: Queue, schema: {SchemaArg?}, args: {any}, actionId: number, reqId: number,
253
+ networkType: number)
254
+ if not queue then return end
255
+ local offset = queue.ByteSize
256
+ local buff = queue.TempBuffer
257
+ buffer.writeu8(buff, offset, actionId)
258
+ local bytes = 1
259
+ if networkType == REMOTE_FUNCTION then
260
+ buffer.writeu16(buff, offset + bytes, reqId)
261
+ bytes += 2
262
+ end
263
+ local inst = queue.Instances
264
+ if schema then
265
+ for i, arg in schema do
266
+ local value = args[i]
267
+ local encode = encodeData[arg] or encodeData[arg[1]]
268
+ :: ((buffer, number, SchemaArg, any, {Instance}?) -> number)?
269
+ bytes += encode(buff, offset + bytes, arg, value, inst)
270
+ end
271
+ end
272
+ queue.QueueSize += 1
273
+ queue.ByteSize += bytes
274
+ end
275
+
276
+ local function getEventId(name: string): number?
277
+ if isServer then
278
+ globalEventId += 1
279
+ if globalEventId > 255 then
280
+ errorMsg("Max number of network events is 255")
281
+ return
282
+ end
283
+ internalRemote:SetAttribute(name, globalEventId)
284
+ return globalEventId
285
+ end
286
+
287
+ local id = internalRemote:GetAttribute(name)
288
+ if not id then
289
+ internalRemote:GetAttributeChangedSignal(name):Wait()
290
+ id = internalRemote:GetAttribute(name)
291
+ end
292
+ if not id then
293
+ errorMsg("unable to get action id for "..name)
294
+ end
295
+ return id
296
+ end
297
+
298
+ @native local function validateArgs(schema: {SchemaArg}?, args: {any}): boolean
299
+ if not schema then
300
+ return true
301
+ end
302
+ if #args > MAX_ARGS then
303
+ warnMsg(ERROR_MSGS.MaxArgs)
304
+ return false
305
+ end
306
+ return true
307
+ end
308
+
309
+ @native local function checkRateLimit(player: Player, name: string, rateLimitConfig: {Max: number, Time: number})
310
+ : boolean
311
+ local playerInfo = rateLimitInfo[player]
312
+ if not playerInfo then
313
+ return false
314
+ end
315
+
316
+ local info = playerInfo[name]
317
+ local now = os.clock()
318
+ if not info then
319
+ info = {Timestamp = now, NumSends = 0}
320
+ playerInfo[name] = info
321
+ end
322
+
323
+ local onCooldown = now - info.Timestamp < rateLimitConfig.Time
324
+ local exceeded = info.NumSends >= rateLimitConfig.Max
325
+
326
+ if exceeded and onCooldown then
327
+ warnMsg(player.Name.."'s rate limit exceeded for "..name)
328
+ return true
329
+ end
330
+
331
+ if onCooldown then
332
+ info.NumSends += 1
333
+ else
334
+ info.Timestamp = now
335
+ info.NumSends = 1
336
+ end
337
+ return false
338
+ end
339
+
340
+ @native local function getArgs(buff: buffer, offset: number, schema: {SchemaArg}, inst: {Instance}?): ({any}, number)
341
+ local ptr = offset
342
+ local args = {}
343
+
344
+ for i, arg in schema do
345
+ local decode = decodeData[arg] or decodeData[arg[1]]
346
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
347
+ local value, bytes = decode(buff, ptr, arg, inst)
348
+ ptr += bytes
349
+ args[i] = value
350
+ end
351
+ return args, ptr - offset
352
+ end
353
+
354
+ @native local function fastUnpack(tbl: {any}, len: number): ...any
355
+ if len < 2 then
356
+ return tbl[1]
357
+
358
+ elseif len < 5 then
359
+ return tbl[1], tbl[2], tbl[3], tbl[4]
360
+
361
+ elseif len < 9 then
362
+ return tbl[1], tbl[2], tbl[3], tbl[4], tbl[5], tbl[6], tbl[7], tbl[8]
363
+ else
364
+ return table.unpack(tbl, 1, len)
365
+ end
366
+ end
367
+
368
+ @native local function getInvokeResults(...): (boolean, {any})
369
+ local success = select(1, ...)
370
+ if not success then
371
+ local err = select(2, ...)
372
+ return success, err
373
+ end
374
+
375
+ local args = {select(2, ...)}
376
+ return success, args
377
+ end
378
+
379
+ @native local function runCallback(callback, thread, responseSchema, actionId, reqId, ...)
380
+ if reqId then
381
+ local player = select(1, ...)
382
+ local success, result = getInvokeResults(pcall(callback, ...))
383
+ if success then
384
+ queueEvent(serverQueue[player], responseSchema, result, actionId, reqId, REMOTE_FUNCTION)
385
+ else
386
+ warnMsg(result, true)
387
+ queueEvent(serverQueue[player], nil, nil, INVOKE_FAIL_ID, reqId, REMOTE_FUNCTION)
388
+ end
389
+ else
390
+ local success, err = pcall(callback, ...)
391
+ if not success then warnMsg(err, true) end
392
+ end
393
+ asyncThreadsPool[#asyncThreadsPool + 1] = thread
394
+ end
395
+
396
+ @native local function yieldThread()
397
+ while true do
398
+ runCallback(coroutine.yield())
399
+ end
400
+ end
401
+
402
+ @native local function getThread(): thread
403
+ local numThreads = #asyncThreadsPool
404
+ local thread
405
+ if numThreads > 0 then
406
+ thread = asyncThreadsPool[numThreads]
407
+ asyncThreadsPool[numThreads] = nil
408
+ else
409
+ thread = coroutine.create(yieldThread)
410
+ coroutine.resume(thread)
411
+ end
412
+ return thread
413
+ end
414
+
415
+ local function addWait(waitThreads: {thread}): thread
416
+ waitThreads[#waitThreads + 1] = coroutine.running()
417
+ return coroutine.yield()
418
+ end
419
+
420
+ @native local function resolveWaits(waitThreads: {thread}, ...)
421
+ for _, thread in waitThreads do
422
+ if coroutine.status(thread) ~= "suspended" then
423
+ continue
424
+ end
425
+ coroutine.resume(thread, ...)
426
+ end
427
+ recycleTable(waitThreads)
428
+ end
429
+
430
+ @native local function disconnect(self: QuickNetConnection)
431
+ if not self.Connected then return end
432
+ self.Connected = false
433
+ self._callbacks[self] = nil
434
+ self._callbacks = nil
435
+ end
436
+
437
+ @native local function getNetworkConnection(callbacks: {[QuickNetConnection]: (...any) -> (...any)},
438
+ callback: (...any) -> (...any)): QuickNetConnection
439
+ local networkConn = {
440
+ Connected = true,
441
+ Disconnect = disconnect,
442
+ Destroy = disconnect,
443
+ _callbacks = callbacks,
444
+ } :: QuickNetConnection
445
+
446
+ callbacks[networkConn] = callback
447
+ return networkConn
448
+ end
449
+
450
+ @native local function remoteListenerServer(player: Player, buff: buffer, inst: {Instance}?)
451
+ if type(buff) ~= "buffer" then
452
+ warnMsg(ERROR_MSGS.InvalidInternalArg1)
453
+ return
454
+ end
455
+
456
+ if buffer.len(buff) > maxPayloadSize then
457
+ warnMsg(player.Name.." exceeded max packet size, dropping calls")
458
+ return
459
+ end
460
+
461
+ if inst then
462
+ if type(inst) ~= "table" then
463
+ warnMsg(ERROR_MSGS.InvalidInternalArg2)
464
+ return
465
+ end
466
+ inst[#inst + 1] = 1 --instance pointer
467
+ end
468
+ local numCalls = buffer.readu16(buff, 0)
469
+ local offset = 2
470
+
471
+ for i = 1, numCalls do
472
+ if i > MAX_CALLS_PER_FRAME then
473
+ warnMsg("max calls per frame exceeded for "..player.Name..
474
+ ", further calls for this frame will be dropped")
475
+ return
476
+ end
477
+ local id = buffer.readu8(buff, offset)
478
+ offset += 1
479
+ local info: NetworkInfo<(), ()> = eventsInfo[id]
480
+ if not info then
481
+ warnMsg("unknown event id "..id..", dropping calls")
482
+ return
483
+ end
484
+
485
+ local networkType = info.NetworkType
486
+ local isRemoteFunction = networkType == REMOTE_FUNCTION
487
+ local schema = info.SendSchema
488
+ local numArgs = #schema
489
+ local name = info.Name
490
+ local reqId = 0
491
+ if isRemoteFunction then
492
+ reqId = buffer.readu16(buff, offset)
493
+ offset += 2
494
+ end
495
+ local args, bytesRead = getArgs(buff, offset, schema, inst)
496
+ offset += bytesRead
497
+ local valid = validateArgs(schema, args)
498
+ local rateLimited = checkRateLimit(player, name, info.RateLimit)
499
+ if not valid or rateLimited then
500
+ if isRemoteFunction then
501
+ queueEvent(serverQueue[player], nil, nil, INVOKE_FAIL_ID, reqId, networkType)
502
+ end
503
+ continue
504
+ end
505
+
506
+ local waitThreads = info.WaitThreads
507
+ if #waitThreads > 0 then
508
+ info.WaitThreads = getTable()
509
+ resolveWaits(waitThreads, player, fastUnpack(args, numArgs))
510
+ end
511
+
512
+ if isRemoteFunction then
513
+ local object = info.Object
514
+ local isAsync = object.OnServerInvokeAsync
515
+ local callback = object.OnServerInvoke or isAsync
516
+ local responseSchema = info.ResponseSchema
517
+ local numResults = #responseSchema
518
+ if isAsync then
519
+ local thread = getThread()
520
+ coroutine.resume(thread, callback, thread, responseSchema, id, reqId,
521
+ player, fastUnpack(args, numArgs))
522
+ continue
523
+ end
524
+
525
+ local success, result = getInvokeResults(pcall(callback, player, fastUnpack(args, numArgs)))
526
+ if not success then
527
+ warnMsg(result, true)
528
+ queueEvent(serverQueue[player], nil, nil, INVOKE_FAIL_ID, reqId, networkType)
529
+ else
530
+ queueEvent(serverQueue[player], responseSchema, result, id, reqId, networkType)
531
+ end
532
+ continue
533
+ end
534
+
535
+ for _, callback in info.Callbacks do
536
+ local success, err = pcall(callback, player, fastUnpack(args, numArgs))
537
+ if not success then warnMsg(err, true) end
538
+ end
539
+
540
+ if info.NumOnceCallbacks > 0 then
541
+ local onces = info.OnceCallbacks
542
+ info.NumOnceCallbacks = 0
543
+ info.OnceCallbacks = getTable()
544
+
545
+ for conn, callback in onces do
546
+ disconnect(conn)
547
+ local thread = getThread()
548
+ coroutine.resume(thread, callback, thread, nil, nil, nil, player, fastUnpack(args, numArgs))
549
+ end
550
+ recycleTable(onces)
551
+ end
552
+
553
+ for _, callback in info.AsyncCallbacks do
554
+ local thread = getThread()
555
+ coroutine.resume(thread, callback, thread, nil, nil, nil, player, fastUnpack(args, numArgs))
556
+ end
557
+ end
558
+ end
559
+
560
+ @native local function remoteListenerServerPcall(player: Player, buff: buffer, inst: {Instance?})
561
+ local success, err = pcall(remoteListenerServer, player, buff, inst)
562
+ if not success then
563
+ warnMsg(err)
564
+ end
565
+ end
566
+
567
+ @native local function resumeInvokeThread(reqId: number, cancelTask: boolean?, ...)
568
+ local cor = reqThreads[reqId]
569
+ reqThreads[reqId] = nil
570
+ if cor and coroutine.status(cor) ~= "dead" then
571
+ coroutine.resume(cor, ...)
572
+ end
573
+ local timeoutTask = timeoutTasks[reqId]
574
+ timeoutTasks[reqId] = nil
575
+ if timeoutTask and cancelTask then
576
+ task.cancel(timeoutTask)
577
+ end
578
+ end
579
+
580
+ @native local function remoteListenerClient(buff: buffer, inst: {Instance}?)
581
+ if inst then
582
+ inst[#inst + 1] = 1
583
+ end
584
+ local numCalls = buffer.readu16(buff, 0)
585
+ local offset = 2
586
+
587
+ for i = 1, numCalls do
588
+ local id = buffer.readu8(buff, offset)
589
+ offset += 1
590
+
591
+ local reqId
592
+ if id == INVOKE_FAIL_ID then
593
+ reqId = buffer.readu16(buff, offset)
594
+ offset += 2
595
+ resumeInvokeThread(reqId, true, nil)
596
+ continue
597
+ end
598
+
599
+ local info: NetworkInfo<(), ()> = eventsInfo[id]
600
+ if not info then
601
+ warnMsg("unknown event id "..id..", dropping calls")
602
+ return
603
+ end
604
+
605
+ local networkType = info.NetworkType
606
+ local isRemoteFunction = networkType == REMOTE_FUNCTION
607
+ local schema = networkType == REMOTE_FUNCTION and info.ResponseSchema or info.SendSchema
608
+ local numArgs = #schema
609
+
610
+ if isRemoteFunction then
611
+ reqId = buffer.readu16(buff, offset)
612
+ offset += 2
613
+ end
614
+
615
+ local args, bytesRead = getArgs(buff, offset, schema, inst)
616
+ offset += bytesRead
617
+
618
+ local waitThreads = info.WaitThreads
619
+ if #waitThreads > 0 then
620
+ info.WaitThreads = getTable()
621
+ resolveWaits(waitThreads, fastUnpack(args, numArgs))
622
+ end
623
+
624
+ if isRemoteFunction then
625
+ resumeInvokeThread(reqId, true, fastUnpack(args, numArgs))
626
+ continue
627
+ end
628
+
629
+ for _, callback in info.Callbacks do
630
+ local success, err = pcall(callback, fastUnpack(args, numArgs))
631
+ if not success then warnMsg(err, true) end
632
+ end
633
+
634
+ if info.NumOnceCallbacks > 0 then
635
+ local onces = info.OnceCallbacks
636
+ info.NumOnceCallbacks = 0
637
+ info.OnceCallbacks = getTable()
638
+
639
+ for conn, callback in onces do
640
+ disconnect(conn)
641
+ local thread = getThread()
642
+ coroutine.resume(thread, callback, thread, nil, nil, nil, fastUnpack(args, numArgs))
643
+ end
644
+ recycleTable(onces)
645
+ end
646
+
647
+ for _, callback in info.AsyncCallbacks do
648
+ local thread = getThread()
649
+ coroutine.resume(thread, callback, thread, nil, nil, nil, fastUnpack(args, numArgs))
650
+ end
651
+ end
652
+ end
653
+
654
+ @native local function remoteListenerClientPcall(buff: buffer, inst: {Instance?})
655
+ local success, err = pcall(remoteListenerClient, buff, inst)
656
+ if not success then
657
+ warnMsg(err)
658
+ end
659
+ end
660
+
661
+ local function createObjServer<A..., B...>(info: NetworkInfo<A..., B...>): NetworkEvent<A...>
662
+ local Object = {}
663
+ Object.OnServerEvent = {}
664
+
665
+ local callbacks = info.Callbacks
666
+ local asyncCallbacks = info.AsyncCallbacks
667
+ local name = info.Name
668
+ local schema = info.SendSchema
669
+ local actionId = info.Id
670
+ local networkType = info.NetworkType
671
+ local queue = serverQueue
672
+ local isUnreliable = false
673
+
674
+ function Object:SetRateLimit(max: number, timeWindow: number): NetworkEvent<A...>
675
+ info.RateLimit.Max = max
676
+ info.RateLimit.Time = timeWindow
677
+ return Object
678
+ end
679
+
680
+ function Object:Unreliable(): NetworkEvent<A...>
681
+ if networkType == REMOTE_FUNCTION then
682
+ errorMsg(ERROR_MSGS.Unreliable1)
683
+ return
684
+ end
685
+ queue = serverQueueUnr
686
+ isUnreliable = true
687
+ return Object
688
+ end
689
+
690
+ function Object:Response(...: B...): NetworkFunction<A..., B...>
691
+ if isUnreliable then
692
+ errorMsg(SOURCE..ERROR_MSGS.Response1)
693
+ end
694
+ Object.OnServerInvoke = nil
695
+ Object.OnServerInvokeAsync = nil
696
+ info.ResponseSchema = getSchema(...)
697
+ networkType = REMOTE_FUNCTION
698
+ info.NetworkType = REMOTE_FUNCTION
699
+
700
+ function Object:SetResponseTimeout(val: number): NetworkFunction<A..., B...>
701
+ info.ResponseTimeout = val
702
+ return Object
703
+ end
704
+ return Object
705
+ end
706
+
707
+ function Object.OnServerEvent:Connect(callback: (player: Player, A...) -> ()): QuickNetConnection
708
+ return getNetworkConnection(callbacks, callback)
709
+ end
710
+
711
+ function Object.OnServerEvent:ConnectAsync(callback: (player: Player, A...) -> ()): QuickNetConnection
712
+ return getNetworkConnection(asyncCallbacks, callback)
713
+ end
714
+
715
+ function Object.OnServerEvent:Once(callback: (player: Player, A...) -> ()): QuickNetConnection
716
+ info.NumOnceCallbacks += 1
717
+ return getNetworkConnection(info.OnceCallbacks, callback)
718
+ end
719
+
720
+ function Object.OnServerEvent:Wait()
721
+ return addWait(info.WaitThreads)
722
+ end
723
+
724
+ @native function Object:FireClient(player: Player, ...: A...)
725
+ queueEvent(queue[player], schema, {...}, actionId, 0, networkType)
726
+ end
727
+
728
+ function Object:FireClients(players: {Player}, ...: A...)
729
+ for _, player in players do
730
+ queueEvent(queue[player], schema, {...}, actionId, 0, networkType)
731
+ end
732
+ end
733
+
734
+ @native function Object:FireAllClients(...: A...)
735
+ for _, player in Players:GetPlayers() do
736
+ queueEvent(queue[player], schema, {...}, actionId, 0, networkType)
737
+ end
738
+ end
739
+
740
+ function Object:FireAllExcept(excludePlayer: Player, ...: A...)
741
+ for _, player in Players:GetPlayers() do
742
+ if player == excludePlayer then continue end
743
+ queueEvent(queue[player], schema, {...}, actionId, 0, networkType)
744
+ end
745
+ end
746
+ return Object
747
+ end
748
+
749
+ local function timeout(reqId: number, seconds: number)
750
+ resumeInvokeThread(reqId)
751
+ warnMsg("Response "..reqId.." timed out after "..seconds.."s", true)
752
+ end
753
+
754
+ local function createObjClient<A..., B...>(info: NetworkInfo<A..., B...>): NetworkEvent<A...>
755
+ local Object = {}
756
+ Object.OnClientEvent = {}
757
+
758
+ function Object:SetRateLimit(max: number, timeWindow: number): NetworkEvent<A...>
759
+ info.RateLimit.Max = max
760
+ info.RateLimit.Time = timeWindow
761
+ return Object
762
+ end
763
+
764
+ local name = info.Name
765
+ local actionId = info.Id
766
+ local sendSchema = info.SendSchema
767
+ local callbacks = info.Callbacks
768
+ local asyncCallbacks = info.AsyncCallbacks
769
+ local networkType = info.NetworkType
770
+ local queue = clientQueue
771
+ local isUnreliable = false
772
+
773
+ function Object:Unreliable(): NetworkEvent<A...>
774
+ if networkType == REMOTE_FUNCTION then
775
+ errorMsg(SOURCE..ERROR_MSGS.Unreliable1)
776
+ return
777
+ end
778
+ isUnreliable = true
779
+ queue = clientQueueUnr
780
+ return Object
781
+ end
782
+
783
+ function Object:Response(...: B...): NetworkFunction<A..., B...>
784
+ if isUnreliable then
785
+ errorMsg(SOURCE..ERROR_MSGS.Response1)
786
+ return
787
+ end
788
+ info.ResponseSchema = getSchema(...)
789
+ info.NetworkType = REMOTE_FUNCTION
790
+ networkType = REMOTE_FUNCTION
791
+
792
+ @native function Object:InvokeServer(...: A...): B...
793
+ globalReqId = (globalReqId + 1) % MAX_REQ_ID_RANGE
794
+ local reqId = globalReqId
795
+ resumeInvokeThread(reqId, true, nil)
796
+
797
+ local seconds = info.ResponseTimeout
798
+ local someTask = task.delay(seconds, timeout, reqId, seconds)
799
+ local cor = coroutine.running()
800
+ reqThreads[reqId] = cor
801
+ timeoutTasks[reqId] = someTask
802
+ queueEvent(clientQueue, sendSchema, {...}, actionId, reqId, REMOTE_FUNCTION)
803
+ return coroutine.yield()
804
+ end
805
+
806
+ function Object:SetResponseTimeout(val: number): NetworkFunction<A..., B...>
807
+ if val > MAX_INVOKE_TIMEOUT or val < 0 then
808
+ warnMsg("Response timeout must be between 0 and "..MAX_INVOKE_TIMEOUT)
809
+ return
810
+ end
811
+ info.ResponseTimeout = val
812
+ return Object
813
+ end
814
+ return Object
815
+ end
816
+
817
+ function Object.OnClientEvent:Connect(callback: (A...) -> ()): QuickNetConnection
818
+ return getNetworkConnection(callbacks, callback)
819
+ end
820
+
821
+ function Object.OnClientEvent:ConnectAsync(callback: (A...) -> ()): QuickNetConnection
822
+ return getNetworkConnection(asyncCallbacks, callback)
823
+ end
824
+
825
+ function Object.OnClientEvent:Once(callback: (player: Player, A...) -> ()): QuickNetConnection
826
+ info.NumOnceCallbacks += 1
827
+ return getNetworkConnection(info.OnceCallbacks, callback)
828
+ end
829
+
830
+ function Object.OnClientEvent:Wait()
831
+ return addWait(info.WaitThreads)
832
+ end
833
+
834
+ @native function Object:FireServer(...: A...)
835
+ queueEvent(queue, sendSchema, {...}, actionId, 0, networkType)
836
+ end
837
+ return Object
838
+ end
839
+
840
+ local function createNetworkObject<A..., B...>(info: NetworkInfo<A..., B...>): NetworkEvent<A...>
841
+ if isServer then
842
+ return createObjServer(info)
843
+ else
844
+ return createObjClient(info)
845
+ end
846
+ end
847
+
848
+ local function getServerQueue(): Queue
849
+ return {
850
+ QueueSize = 0,
851
+ ByteSize = 0,
852
+ TempBuffer = getBuffer(),
853
+ Instances = {},
854
+ }
855
+ end
856
+
857
+ local function start()
858
+ internalRemote = getRemote("QuickNetRemote")
859
+ internalUnreliable = getUnreliable("QuickNetUnreliable")
860
+ if isServer then
861
+ local function initPlayer(player: Player)
862
+ serverQueue[player] = getServerQueue()
863
+ serverQueueUnr[player] = getServerQueue()
864
+ rateLimitInfo[player] = {}
865
+ end
866
+
867
+ for _, player in Players:GetPlayers() do
868
+ task.spawn(initPlayer, player)
869
+ end
870
+ Players.PlayerAdded:Connect(initPlayer)
871
+
872
+ Players.PlayerRemoving:Connect(function(player)
873
+ local queue = serverQueue[player]
874
+ local queueUnr = serverQueueUnr[player]
875
+ recycleBuffer(queue.TempBuffer)
876
+ recycleBuffer(queueUnr.TempBuffer)
877
+ serverQueue[player] = nil
878
+ queueUnr[player] = nil
879
+ rateLimitInfo[player] = nil
880
+ end)
881
+
882
+ RunService.PostSimulation:Connect(processQueueServer)
883
+ internalRemote.OnServerEvent:Connect(remoteListenerServerPcall)
884
+ internalUnreliable.OnServerEvent:Connect(remoteListenerServerPcall)
885
+ else
886
+ RunService.PostSimulation:Connect(processQueueClient)
887
+ internalRemote.OnClientEvent:Connect(remoteListenerClientPcall)
888
+ internalUnreliable.OnClientEvent:Connect(remoteListenerClientPcall)
889
+ end
890
+ end
891
+
892
+ --public--
893
+ Net.Data = DataTypes
894
+ local enumItems = Serialize.enumItems
895
+ local enumItemsByEnum = Serialize.enumItemsByEnum
896
+
897
+ function Net:setEnumItems(enums: {EnumItem})
898
+ local idx = 0
899
+ table.clear(enumItems)
900
+ table.clear(enumItemsByEnum)
901
+
902
+ for _, enum in enums do
903
+ idx += 1
904
+ enumItems[idx] = enum
905
+ enumItemsByEnum[enum] = idx
906
+ end
907
+ end
908
+
909
+ function Net:setMaxPayloadSize(size: number)
910
+ maxPayloadSize = size
911
+ end
912
+
913
+ --[[
914
+ Example usage:
915
+ local data = QuickNet.Data
916
+
917
+ local myEvent = QuickNet:register("EventName", data.NumberU8, data.String)
918
+
919
+ local myUnreliable = QuickNet:register("UnreliableName", data.CFrameF32):Unreliable()
920
+
921
+ local myFunction = QuickNet:register("FunctionName", data.Color3):Response(data.Boolean)
922
+ ]]
923
+ function Net:register<A..., B...>(name: string, ...: A...): NetworkEvent<A...>
924
+ if namesRegistered[name] then
925
+ errorMsg(name.." already exists (names must be unique)")
926
+ return
927
+ end
928
+ namesRegistered[name] = true
929
+ local info = {} :: NetworkInfo<A..., B...>
930
+ info.Name = name
931
+ local id = getEventId(name)
932
+ info.Id = id
933
+ info.NetworkType = REMOTE_EVENT
934
+ info.RateLimit = {Max = RATE_LIMIT.Max, Time = RATE_LIMIT.Time}
935
+ info.SendSchema = getSchema(...)
936
+ info.Callbacks = {}
937
+ info.AsyncCallbacks = {}
938
+ info.OnceCallbacks = {}
939
+ info.NumOnceCallbacks = 0
940
+ info.WaitThreads = {}
941
+ info.ResponseTimeout = INVOKE_TIMEOUT
942
+ local object = createNetworkObject(info)
943
+ info.Object = object
944
+ eventsInfo[id] = info
945
+ return object
946
+ end
947
+
948
+ --start module
949
+ start()
950
+
951
+ export type QuickNet = typeof(Net)
952
+
953
+ return Net