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,2020 @@
1
+ --!optimize 2
2
+ local Players = game:GetService("Players")
3
+
4
+ local Types = require(script.Parent.Types)
5
+ local Enums = require(script.Parent.Enums)
6
+
7
+ type SchemaArg = Types.SchemaArg
8
+ type Literal = Types.Literal
9
+
10
+ local FX8_SCALE = 10
11
+ local FX8_ROT_SCALE = 40.42
12
+ local FX16_SCALE = 100
13
+ local FX16_ROT_SCALE = 10430
14
+ local DYNAMIC_DEFAULTS = {
15
+ number = Enums.NumberF64,
16
+ CFrame = Enums.CFrameF32,
17
+ Vector3 = Enums.Vector3F32,
18
+ Vector2 = Enums.Vector2F32,
19
+ ["nil"] = Enums.Nil,
20
+ string = Enums.String,
21
+ Color3 = Enums.Color3,
22
+ BrickColor = Enums.BrickColor,
23
+ boolean = Enums.Boolean,
24
+ table = Enums.DictDynamic,
25
+ buffer = Enums.Buffer,
26
+ Instance = Enums.Instance,
27
+ DateTime = Enums.DateTime64,
28
+ TweenInfo = Enums.TweenInfo,
29
+ ColorSequence = Enums.ColorSequence,
30
+ NumberSequence = Enums.NumberSequence,
31
+ NumberRange = Enums.NumberRange,
32
+ UDim = Enums.UDim,
33
+ UDim2 = Enums.UDim2,
34
+ Region3 = Enums.Region3,
35
+ PhysicalProperties = Enums.PhysicalProperties,
36
+ Rect = Enums.Rect,
37
+ }
38
+
39
+ local TBL_POOL_SIZE = 100
40
+
41
+ local writeu8 = buffer.writeu8
42
+ local writeu16 = buffer.writeu16
43
+ local writeu32 = buffer.writeu32
44
+ local writei8 = buffer.writei8
45
+ local writei16 = buffer.writei16
46
+ local writei32 = buffer.writei32
47
+ local writef32 = buffer.writef32
48
+ local writef64 = buffer.writef64
49
+ local writestring = buffer.writestring
50
+ local readu8 = buffer.readu8
51
+ local readu16 = buffer.readu16
52
+ local readu32 = buffer.readu32
53
+ local readi8 = buffer.readi8
54
+ local readi16 = buffer.readi16
55
+ local readi32 = buffer.readi32
56
+ local readf32 = buffer.readf32
57
+ local readf64 = buffer.readf64
58
+ local readstring = buffer.readstring
59
+ local bufferCopy = buffer.copy
60
+ local stringLen = string.len
61
+ local stringSub = string.sub
62
+ local mathFrexp = math.frexp
63
+ local mathFloor = math.floor
64
+ local mathHuge = math.huge
65
+
66
+ local tablePool = table.create(TBL_POOL_SIZE)
67
+
68
+ for i = 1, TBL_POOL_SIZE do
69
+ tablePool[i] = {}
70
+ end
71
+
72
+ @native local function getTable(): {any}
73
+ local poolIdx = #tablePool
74
+ local tbl = tablePool[poolIdx]
75
+ tablePool[poolIdx] = nil
76
+ return tbl or {}
77
+ end
78
+
79
+ @native local function recycleTable(tbl: {any})
80
+ local poolIdx = #tablePool
81
+ if poolIdx > TBL_POOL_SIZE then
82
+ return
83
+ end
84
+ table.clear(tbl)
85
+ tablePool[poolIdx + 1] = tbl
86
+ end
87
+
88
+ @native local function isArray(tbl: {any}): boolean
89
+ local count = 1
90
+ for i, val in tbl do
91
+ if i ~= count then
92
+ return false
93
+ end
94
+ count += 1
95
+ end
96
+ return true
97
+ end
98
+
99
+ @native local function getDataType(value: any): number?
100
+ local generalType = typeof(value)
101
+ local dataType = DYNAMIC_DEFAULTS[generalType] or Enums.Nil
102
+
103
+ if generalType == "table" then
104
+ if isArray(value) then
105
+ dataType = Enums.ArrayDynamic
106
+ end
107
+ end
108
+ return dataType
109
+ end
110
+
111
+ @native local function encodeFloat16(value: number): number
112
+ if value == 0 then
113
+ return value
114
+ end
115
+ local sign = 0
116
+ if value < 0 then
117
+ sign = 1
118
+ value = -value
119
+ end
120
+
121
+ local mantissa, exponent = mathFrexp(value)
122
+ local expNum = exponent + 14
123
+ if expNum <= 0 then
124
+ return 0
125
+ elseif expNum >= 31 then
126
+ return sign * 32768 + 31744
127
+ end
128
+ local mant = mantissa * 2048 - 1024
129
+ mant = mathFloor(mant + .5)
130
+ return sign * 32768 + expNum * 1024 + mant
131
+ end
132
+
133
+ @native local function decodeFloat16(value: number): number
134
+ if value == 0 then
135
+ return 0
136
+ end
137
+
138
+ local sign = (value >= 0x8000) and -1 or 1
139
+ if sign == -1 then
140
+ value -= 0x8000
141
+ end
142
+
143
+ local exponent = mathFloor(value / 1024)
144
+ local mantissa = value - exponent * 1024
145
+
146
+ if exponent == 0 then
147
+ return 0
148
+ elseif exponent == 31 then
149
+ return sign * mathHuge
150
+ end
151
+
152
+ local normalized = 1 + mantissa / 1024
153
+ return sign * normalized * 2^(exponent - 15)
154
+ end
155
+
156
+ --number
157
+ @native local function encodeNumberU8(buff: buffer, offset: number, arg: SchemaArg, value: number): number
158
+ writeu8(buff, offset, value)
159
+ return 1
160
+ end
161
+
162
+ @native local function encodeNumberU16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
163
+ writeu16(buff, offset, value)
164
+ return 2
165
+ end
166
+
167
+ @native local function encodeNumberU32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
168
+ writeu32(buff, offset, value)
169
+ return 4
170
+ end
171
+
172
+ @native local function encodeNumberI8(buff: buffer, offset: number, arg: SchemaArg, value: number): number
173
+ writei8(buff, offset, value)
174
+ return 1
175
+ end
176
+
177
+ @native local function encodeNumberI16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
178
+ writei16(buff, offset, value)
179
+ return 2
180
+ end
181
+
182
+ @native local function encodeNumberI32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
183
+ writei32(buff, offset, value)
184
+ return 4
185
+ end
186
+
187
+ @native local function encodeNumberF16(buff: buffer, offset: number, arg: SchemaArg, value: number): number
188
+ writeu16(buff, offset, encodeFloat16(value))
189
+ return 2
190
+ end
191
+
192
+ @native local function encodeNumberF32(buff: buffer, offset: number, arg: SchemaArg, value: number): number
193
+ writef32(buff, offset, value)
194
+ return 4
195
+ end
196
+
197
+ @native local function encodeNumberF64(buff: buffer, offset: number, arg: SchemaArg, value: number): number
198
+ writef64(buff, offset, value)
199
+ return 8
200
+ end
201
+
202
+ @native local function decodeNumberU8(buff: buffer, offset: number, arg: SchemaArg): (number, number)
203
+ return readu8(buff, offset), 1
204
+ end
205
+
206
+ @native local function decodeNumberU16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
207
+ return readu16(buff, offset), 2
208
+ end
209
+
210
+ @native local function decodeNumberU32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
211
+ return readu32(buff, offset), 4
212
+ end
213
+
214
+ @native local function decodeNumberI8(buff: buffer, offset: number, arg: SchemaArg): (number, number)
215
+ return readi8(buff, offset), 1
216
+ end
217
+
218
+ @native local function decodeNumberI16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
219
+ return readi16(buff, offset), 2
220
+ end
221
+
222
+ @native local function decodeNumberI32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
223
+ return readi32(buff, offset), 4
224
+ end
225
+
226
+ @native local function decodeNumberF16(buff: buffer, offset: number, arg: SchemaArg): (number, number)
227
+ return decodeFloat16(readu16(buff, offset)), 2
228
+ end
229
+
230
+ @native local function decodeNumberF32(buff: buffer, offset: number, arg: SchemaArg): (number, number)
231
+ return readf32(buff, offset), 4
232
+ end
233
+
234
+ @native local function decodeNumberF64(buff: buffer, offset: number, arg: SchemaArg): (number, number)
235
+ return readf64(buff, offset), 8
236
+ end
237
+
238
+ --cframe
239
+ @native local function encodeCFrameFX8(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
240
+ local pos = value.Position
241
+ local x, y, z = value:ToEulerAnglesXYZ()
242
+ writei8(buff, offset, pos.X * FX8_SCALE)
243
+ writei8(buff, offset + 1, pos.Y * FX8_SCALE)
244
+ writei8(buff, offset + 2, pos.Z * FX8_SCALE)
245
+ writei8(buff, offset + 3, x * FX8_ROT_SCALE)
246
+ writei8(buff, offset + 4, y * FX8_ROT_SCALE)
247
+ writei8(buff, offset + 5, z * FX8_ROT_SCALE)
248
+ return 6
249
+ end
250
+
251
+ @native local function encodeCFrameI16FX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
252
+ local pos = value.Position
253
+ local x, y, z = value:ToEulerAnglesXYZ()
254
+ writei16(buff, offset, pos.X)
255
+ writei16(buff, offset + 2, pos.Y)
256
+ writei16(buff, offset + 4, pos.Z)
257
+ writei16(buff, offset + 6, x * FX16_ROT_SCALE)
258
+ writei16(buff, offset + 8, y * FX16_ROT_SCALE)
259
+ writei16(buff, offset + 10, z * FX16_ROT_SCALE)
260
+ return 12
261
+ end
262
+
263
+ @native local function decodeCFrameI16FX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
264
+ local pos = Vector3.new(
265
+ readi16(buff, offset),
266
+ readi16(buff, offset + 2),
267
+ readi16(buff, offset + 4)
268
+ )
269
+ local x = readi16(buff, offset + 6) / FX16_ROT_SCALE
270
+ local y = readi16(buff, offset + 8) / FX16_ROT_SCALE
271
+ local z = readi16(buff, offset + 10) / FX16_ROT_SCALE
272
+ return CFrame.Angles(x, y, z) + pos, 12
273
+ end
274
+
275
+ @native local function encodeCFrameFX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
276
+ local pos = value.Position
277
+ local x, y, z = value:ToEulerAnglesXYZ()
278
+ writei16(buff, offset, pos.X * FX16_SCALE)
279
+ writei16(buff, offset + 2, pos.Y * FX16_SCALE)
280
+ writei16(buff, offset + 4, pos.Z * FX16_SCALE)
281
+ writei16(buff, offset + 6, x * FX16_ROT_SCALE)
282
+ writei16(buff, offset + 8, y * FX16_ROT_SCALE)
283
+ writei16(buff, offset + 10, z * FX16_ROT_SCALE)
284
+ return 12
285
+ end
286
+
287
+ @native local function encodeCFrameF16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
288
+ local pos = value.Position
289
+ local x, y, z = value:ToEulerAnglesXYZ()
290
+ writeu16(buff, offset, encodeFloat16(pos.X))
291
+ writeu16(buff, offset + 2, encodeFloat16(pos.Y))
292
+ writeu16(buff, offset + 4, encodeFloat16(pos.Z))
293
+ writeu16(buff, offset + 6, encodeFloat16(x))
294
+ writeu16(buff, offset + 8, encodeFloat16(y))
295
+ writeu16(buff, offset + 10, encodeFloat16(z))
296
+ return 12
297
+ end
298
+
299
+ @native local function axisId(x: number, y: number, z: number): number
300
+ local ax = math.abs(x)
301
+ local ay = math.abs(y)
302
+ local az = math.abs(z)
303
+
304
+ if ax >= ay and ax >= az then
305
+ return x > 0 and 0 or 1
306
+ elseif ay >= az then
307
+ return y > 0 and 2 or 3
308
+ else
309
+ return z > 0 and 4 or 5
310
+ end
311
+ end
312
+
313
+ local xAxis = Vector3.new(1, 0, 0)
314
+ local yAxis = Vector3.new(0, 1, 0)
315
+ local zAxis = Vector3.new(0, 0, 1)
316
+
317
+ local alignIdsToCFrames = {
318
+ [0] = CFrame.identity,
319
+ [1] = CFrame.identity,
320
+ [2] = CFrame.fromMatrix(Vector3.zero, xAxis, yAxis),
321
+ [3] = CFrame.fromMatrix(Vector3.zero, xAxis, -yAxis),
322
+ [4] = CFrame.fromMatrix(Vector3.zero, xAxis, zAxis),
323
+ [5] = CFrame.fromMatrix(Vector3.zero, xAxis, -zAxis),
324
+
325
+ [6] = CFrame.identity,
326
+ [7] = CFrame.identity,
327
+ [8] = CFrame.fromMatrix(Vector3.zero, -xAxis, yAxis),
328
+ [9] = CFrame.fromMatrix(Vector3.zero, -xAxis, -yAxis),
329
+ [10] = CFrame.fromMatrix(Vector3.zero, -xAxis, zAxis),
330
+ [11] = CFrame.fromMatrix(Vector3.zero, -xAxis, -zAxis),
331
+
332
+ [12] = CFrame.fromMatrix(Vector3.zero, yAxis, xAxis),
333
+ [13] = CFrame.fromMatrix(Vector3.zero, yAxis, -xAxis),
334
+ [14] = CFrame.identity,
335
+ [15] = CFrame.identity,
336
+ [16] = CFrame.fromMatrix(Vector3.zero, yAxis, zAxis),
337
+ [17] = CFrame.fromMatrix(Vector3.zero, yAxis, -zAxis),
338
+
339
+ [18] = CFrame.fromMatrix(Vector3.zero, -yAxis, xAxis),
340
+ [19] = CFrame.fromMatrix(Vector3.zero, -yAxis, -xAxis),
341
+ [20] = CFrame.identity,
342
+ [21] = CFrame.identity,
343
+ [22] = CFrame.fromMatrix(Vector3.zero, -yAxis, zAxis),
344
+ [23] = CFrame.fromMatrix(Vector3.zero, -yAxis, -zAxis),
345
+
346
+ [24] = CFrame.fromMatrix(Vector3.zero, zAxis, xAxis),
347
+ [25] = CFrame.fromMatrix(Vector3.zero, zAxis, -xAxis),
348
+ [26] = CFrame.fromMatrix(Vector3.zero, zAxis, yAxis),
349
+ [27] = CFrame.fromMatrix(Vector3.zero, zAxis, -yAxis),
350
+ [28] = CFrame.identity,
351
+ [29] = CFrame.identity,
352
+
353
+ [30] = CFrame.fromMatrix(Vector3.zero, -zAxis, xAxis),
354
+ [31] = CFrame.fromMatrix(Vector3.zero, -zAxis, -xAxis),
355
+ [32] = CFrame.fromMatrix(Vector3.zero, -zAxis, yAxis),
356
+ [33] = CFrame.fromMatrix(Vector3.zero, -zAxis, -yAxis),
357
+ [34] = CFrame.identity,
358
+ [35] = CFrame.identity,
359
+ }
360
+
361
+ @native local function encodeCFrameF32Aligned(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
362
+ local x, y, z,
363
+ r00, r01, r02,
364
+ r10, r11, r12,
365
+ r20, r21, r22 = value:GetComponents()
366
+ local right = axisId(r00, r10, r20)
367
+ local up = axisId(r01, r11, r21)
368
+ writef32(buff, offset, x)
369
+ writef32(buff, offset + 4, y)
370
+ writef32(buff, offset + 8, z)
371
+ writeu8(buff, offset + 12, right * 6 + up)
372
+ return 13
373
+ end
374
+
375
+ @native local function decodeCFrameF32Aligned(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
376
+ local x = readf32(buff, offset)
377
+ local y = readf32(buff, offset + 4)
378
+ local z = readf32(buff, offset + 8)
379
+ local alignId = readu8(buff, offset + 12)
380
+ return alignIdsToCFrames[alignId] + Vector3.new(x, y, z), 13
381
+ end
382
+
383
+ @native local function encodeCFrameF32FX16(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
384
+ local pos = value.Position
385
+ local x, y, z = value:ToEulerAnglesXYZ()
386
+ writef32(buff, offset, pos.X)
387
+ writef32(buff, offset + 4, pos.Y)
388
+ writef32(buff, offset + 8, pos.Z)
389
+ writei16(buff, offset + 12, x * FX16_ROT_SCALE)
390
+ writei16(buff, offset + 14, y * FX16_ROT_SCALE)
391
+ writei16(buff, offset + 16, z * FX16_ROT_SCALE)
392
+ return 18
393
+ end
394
+
395
+ @native local function encodeCFrameF32(buff: buffer, offset: number, arg: SchemaArg, value: CFrame): number
396
+ local pos = value.Position
397
+ local x, y, z = value:ToEulerAnglesXYZ()
398
+ writef32(buff, offset, pos.X)
399
+ writef32(buff, offset + 4, pos.Y)
400
+ writef32(buff, offset + 8, pos.Z)
401
+ writef32(buff, offset + 12, x)
402
+ writef32(buff, offset + 16, y)
403
+ writef32(buff, offset + 20, z)
404
+ return 24
405
+ end
406
+
407
+ @native local function decodeCFrameFX8(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
408
+ local posX = readi8(buff, offset) / FX8_SCALE
409
+ local posY = readi8(buff, offset + 1) / FX8_SCALE
410
+ local posZ = readi8(buff, offset + 2) / FX8_SCALE
411
+ local x = readi8(buff, offset + 3) / FX8_ROT_SCALE
412
+ local y = readi8(buff, offset + 4) / FX8_ROT_SCALE
413
+ local z = readi8(buff, offset + 5) / FX8_ROT_SCALE
414
+ return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 6
415
+ end
416
+
417
+ @native local function decodeCFrameFX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
418
+ local posX = readi16(buff, offset) / FX16_SCALE
419
+ local posY = readi16(buff, offset + 2) / FX16_SCALE
420
+ local posZ = readi16(buff, offset + 4) / FX16_SCALE
421
+ local x = readi16(buff, offset + 6) / FX16_ROT_SCALE
422
+ local y = readi16(buff, offset + 8) / FX16_ROT_SCALE
423
+ local z = readi16(buff, offset + 10) / FX16_ROT_SCALE
424
+ return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 12
425
+ end
426
+
427
+ @native local function decodeCFrameF16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
428
+ local posX = decodeFloat16(readu16(buff, offset))
429
+ local posY = decodeFloat16(readu16(buff, offset + 2))
430
+ local posZ = decodeFloat16(readu16(buff, offset + 4))
431
+ local x = decodeFloat16(readu16(buff, offset + 6))
432
+ local y = decodeFloat16(readu16(buff, offset + 8))
433
+ local z = decodeFloat16(readu16(buff, offset + 10))
434
+ return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 12
435
+ end
436
+
437
+ @native local function decodeCFrameF32FX16(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
438
+ local posX = readf32(buff, offset)
439
+ local posY = readf32(buff, offset + 4)
440
+ local posZ = readf32(buff, offset + 8)
441
+ local x = readi16(buff, offset + 12) / FX16_ROT_SCALE
442
+ local y = readi16(buff, offset + 14) / FX16_ROT_SCALE
443
+ local z = readi16(buff, offset + 16) / FX16_ROT_SCALE
444
+ return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 18
445
+ end
446
+
447
+ @native local function decodeCFrameF32(buff: buffer, offset: number, arg: SchemaArg): (CFrame, number)
448
+ local posX = readf32(buff, offset)
449
+ local posY = readf32(buff, offset + 4)
450
+ local posZ = readf32(buff, offset + 8)
451
+ local x = readf32(buff, offset + 12)
452
+ local y = readf32(buff, offset + 16)
453
+ local z = readf32(buff, offset + 20)
454
+ return CFrame.Angles(x, y, z) + Vector3.new(posX, posY, posZ), 24
455
+ end
456
+
457
+ --vector3
458
+ @native local function encodeVector3FX8(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
459
+ writei8(buff, offset, value.X * FX8_SCALE)
460
+ writei8(buff, offset + 1, value.Y * FX8_SCALE)
461
+ writei8(buff, offset + 2, value.Z * FX8_SCALE)
462
+ return 3
463
+ end
464
+
465
+ @native local function encodeVector3I16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
466
+ writei16(buff, offset, value.X)
467
+ writei16(buff, offset + 2, value.Y)
468
+ writei16(buff, offset + 4, value.Z)
469
+ return 6
470
+ end
471
+
472
+ @native local function decodeVector3I16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
473
+ return Vector3.new(
474
+ readi16(buff, offset),
475
+ readi16(buff, offset + 2),
476
+ readi16(buff, offset + 4)
477
+ ), 6
478
+ end
479
+
480
+ @native local function encodeVector3FX16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
481
+ writei16(buff, offset, value.X * FX16_SCALE)
482
+ writei16(buff, offset + 2, value.Y * FX16_SCALE)
483
+ writei16(buff, offset + 4, value.Z * FX16_SCALE)
484
+ return 6
485
+ end
486
+
487
+ @native local function encodeVector3F16(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
488
+ writeu16(buff, offset, encodeFloat16(value.X))
489
+ writeu16(buff, offset + 2, encodeFloat16(value.Y))
490
+ writeu16(buff, offset + 4, encodeFloat16(value.Z))
491
+ return 6
492
+ end
493
+
494
+ @native local function encodeVector3F32(buff: buffer, offset: number, arg: SchemaArg, value: Vector3): number
495
+ writef32(buff, offset, value.X)
496
+ writef32(buff, offset + 4, value.Y)
497
+ writef32(buff, offset + 8, value.Z)
498
+ return 12
499
+ end
500
+
501
+ @native local function decodeVector3FX8(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
502
+ local x = readi8(buff, offset) / FX8_SCALE
503
+ local y = readi8(buff, offset + 1) / FX8_SCALE
504
+ local z = readi8(buff, offset + 2) / FX8_SCALE
505
+ return Vector3.new(x, y, z), 3
506
+ end
507
+
508
+ @native local function decodeVector3FX16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
509
+ local x = readi16(buff, offset) / FX16_SCALE
510
+ local y = readi16(buff, offset + 2) / FX16_SCALE
511
+ local z = readi16(buff, offset + 4) / FX16_SCALE
512
+ return Vector3.new(x, y, z), 6
513
+ end
514
+
515
+ @native local function decodeVector3F16(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
516
+ local x = decodeFloat16(readu16(buff, offset))
517
+ local y = decodeFloat16(readu16(buff, offset + 2))
518
+ local z = decodeFloat16(readu16(buff, offset + 4))
519
+ return Vector3.new(x, y, z), 6
520
+ end
521
+
522
+ @native local function decodeVector3F32(buff: buffer, offset: number, arg: SchemaArg): (Vector3, number)
523
+ return Vector3.new(
524
+ readf32(buff, offset),
525
+ readf32(buff, offset + 4),
526
+ readf32(buff, offset + 8)
527
+ ), 12
528
+ end
529
+
530
+ --vector2
531
+ @native local function encodeVector2FX8(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
532
+ writei8(buff, offset, value.X * FX8_SCALE)
533
+ writei8(buff, offset + 1, value.Y * FX8_SCALE)
534
+ return 2
535
+ end
536
+
537
+ @native local function encodeVector2I16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
538
+ writei16(buff, offset, value.X)
539
+ writei16(buff, offset + 2, value.Y)
540
+ return 4
541
+ end
542
+
543
+ @native local function decodeVector2I16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
544
+ return Vector2.new(readi16(buff, offset), readi16(buff, offset + 2)), 4
545
+ end
546
+
547
+ @native local function encodeVector2FX16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
548
+ writei16(buff, offset, value.X * FX16_SCALE)
549
+ writei16(buff, offset + 2, value.Y * FX16_SCALE)
550
+ return 4
551
+ end
552
+
553
+ @native local function encodeVector2F16(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
554
+ writeu16(buff, offset, encodeFloat16(value.X))
555
+ writeu16(buff, offset + 2, encodeFloat16(value.Y))
556
+ return 4
557
+ end
558
+
559
+ @native local function encodeVector2F32(buff: buffer, offset: number, arg: SchemaArg, value: Vector2): number
560
+ writef32(buff, offset, value.X)
561
+ writef32(buff, offset + 4, value.Y)
562
+ return 8
563
+ end
564
+
565
+ @native local function decodeVector2FX8(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
566
+ local x = readi8(buff, offset) / FX8_SCALE
567
+ local y = readi8(buff, offset + 1) / FX8_SCALE
568
+ return Vector2.new(x, y), 2
569
+ end
570
+
571
+ @native local function decodeVector2FX16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
572
+ local x = readi16(buff, offset) / FX16_SCALE
573
+ local y = readi16(buff, offset + 2) / FX16_SCALE
574
+ return Vector2.new(x, y), 4
575
+ end
576
+
577
+ @native local function decodeVector2F16(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
578
+ local x = decodeFloat16(readu16(buff, offset))
579
+ local y = decodeFloat16(readu16(buff, offset + 2))
580
+ return Vector2.new(x, y), 4
581
+ end
582
+
583
+ @native local function decodeVector2F32(buff: buffer, offset: number, arg: SchemaArg): (Vector2, number)
584
+ local x = readf32(buff, offset)
585
+ local y = readf32(buff, offset + 4)
586
+ return Vector2.new(x, y), 8
587
+ end
588
+
589
+ --misc
590
+ @native local function encodeString(buff: buffer, offset: number, arg: SchemaArg, value: string): number
591
+ local bytes = stringLen(value)
592
+ writeu8(buff, offset, bytes)
593
+ writestring(buff, offset + 1, value, bytes)
594
+ return bytes + 1
595
+ end
596
+
597
+ @native local function decodeString(buff: buffer, offset: number, arg: SchemaArg): (string, number)
598
+ local bytes = readu8(buff, offset)
599
+ return readstring(buff, offset + 1, bytes), bytes + 1
600
+ end
601
+
602
+ @native local function encodeStringLong(buff: buffer, offset: number, arg: SchemaArg, value: string): number
603
+ local bytes = stringLen(value)
604
+ writeu32(buff, offset, bytes)
605
+ writestring(buff, offset + 4, value, bytes)
606
+ return bytes + 4
607
+ end
608
+
609
+ @native local function decodeStringLong(buff: buffer, offset: number, arg: SchemaArg, value: string): (string, number)
610
+ local bytes = readu32(buff, offset)
611
+ return readstring(buff, offset + 4, bytes), bytes + 4
612
+ end
613
+
614
+ @native local function encodeColor(buff: buffer, offset: number, arg: SchemaArg, value: Color3): number
615
+ writeu8(buff, offset, value.R * 255 + .5)
616
+ writeu8(buff, offset + 1, value.G * 255 + .5)
617
+ writeu8(buff, offset + 2, value.B * 255 + .5)
618
+ return 3
619
+ end
620
+
621
+ @native local function decodeColor(buff: buffer, offset: number, arg: SchemaArg): (Color3, number)
622
+ local r = readu8(buff, offset)
623
+ local g = readu8(buff, offset + 1)
624
+ local b = readu8(buff, offset + 2)
625
+ return Color3.fromRGB(r, g, b), 3
626
+ end
627
+
628
+ @native local function encodeBrickColor(buff: buffer, offset: number, arg: SchemaArg, value: BrickColor): number
629
+ writeu16(buff, offset, value.Number)
630
+ return 2
631
+ end
632
+
633
+ @native local function decodeBrickColor(buff: buffer, offset: number, arg: SchemaArg): (BrickColor, number)
634
+ return BrickColor.new(readu16(buff, offset)), 2
635
+ end
636
+
637
+ @native local function encodeBool(buff: buffer, offset: number, arg: SchemaArg, value: boolean): number
638
+ writeu8(buff, offset, value and 1 or 0)
639
+ return 1
640
+ end
641
+
642
+ @native local function decodeBool(buff: buffer, offset: number, arg: SchemaArg): (boolean, number)
643
+ local val = readu8(buff, offset)
644
+ return val == 1, 1
645
+ end
646
+
647
+ @native local function encodeNil(buff: buffer, offset: number, arg: SchemaArg, value: any): number
648
+ return 0
649
+ end
650
+
651
+ @native local function decodeNil(buff: buffer, offset: number, arg: SchemaArg): (any, number)
652
+ return nil, 0
653
+ end
654
+
655
+ @native local function encodeBuffer(buff: buffer, offset: number, arg: SchemaArg, value: buffer): number
656
+ local len = buffer.len(value)
657
+ writeu16(buff, offset, len)
658
+ bufferCopy(buff, offset + 2, value, 0, len)
659
+ return len + 2
660
+ end
661
+
662
+ @native local function decodeBuffer(buff: buffer, offset: number, arg: SchemaArg): (buffer?, number)
663
+ local len = readu16(buff, offset)
664
+ local newBuff = buffer.create(len)
665
+ bufferCopy(newBuff, 0, buff, offset + 2, len)
666
+ return newBuff, len + 2
667
+ end
668
+
669
+ @native local function encodeDateTime32(buff: buffer, offset: number, arg: SchemaArg, value: DateTime): number
670
+ writeu32(buff, offset, value.UnixTimestamp)
671
+ return 4
672
+ end
673
+
674
+ @native local function decodeDateTime32(buff: buffer, offset: number, arg: SchemaArg): (DateTime, number)
675
+ return DateTime.fromUnixTimestamp(readu32(buff, offset)), 4
676
+ end
677
+
678
+ @native local function encodeDateTime64(buff: buffer, offset: number, arg: SchemaArg, value: DateTime): number
679
+ writef64(buff, offset, value.UnixTimestampMillis)
680
+ return 8
681
+ end
682
+
683
+ @native local function decodeDateTime64(buff: buffer, offset: number, arg: SchemaArg): (DateTime, number)
684
+ return DateTime.fromUnixTimestampMillis(readf64(buff, offset)), 8
685
+ end
686
+
687
+ local tweenStyles = {
688
+ Enum.EasingStyle.Linear,
689
+ Enum.EasingStyle.Back,
690
+ Enum.EasingStyle.Quad,
691
+ Enum.EasingStyle.Bounce,
692
+ Enum.EasingStyle.Sine,
693
+ Enum.EasingStyle.Cubic,
694
+ Enum.EasingStyle.Quart,
695
+ Enum.EasingStyle.Quint,
696
+ Enum.EasingStyle.Elastic,
697
+ Enum.EasingStyle.Circular,
698
+ Enum.EasingStyle.Exponential,
699
+ }
700
+
701
+ local tweenDirections = {
702
+ Enum.EasingDirection.In,
703
+ Enum.EasingDirection.Out,
704
+ Enum.EasingDirection.InOut,
705
+ }
706
+
707
+ local function keyValueSwap(tbl: {[any]: any}): {[any]: any}
708
+ local new = {}
709
+ for k, v in tbl do
710
+ new[v] = k
711
+ end
712
+ return new
713
+ end
714
+
715
+ local tweenStylesToId: {[EnumItem]: number} = keyValueSwap(tweenStyles)
716
+ local tweenDirectionsToId: {[EnumItem]: number} = keyValueSwap(tweenDirections)
717
+
718
+ @native local function encodeTweenInfo(buff: buffer, offset: number, arg: SchemaArg, value: TweenInfo): number
719
+ local style = tweenStylesToId[value.EasingStyle]
720
+ local dir = tweenDirectionsToId[value.EasingDirection]
721
+ local reverse = value.Reverses and 1 or 0
722
+ local packed = style + dir * 16 + reverse * 128
723
+
724
+ writeu16(buff, offset, value.Time * FX16_SCALE)
725
+ writeu8(buff, offset + 2, packed)
726
+ writei8(buff, offset + 3, value.RepeatCount)
727
+ writeu16(buff, offset + 4, value.DelayTime * FX16_SCALE)
728
+ return 6
729
+ end
730
+
731
+ @native local function decodeTweenInfo(buff: buffer, offset: number, arg: SchemaArg): (TweenInfo, number)
732
+ local tweenTime = readu16(buff, offset) / FX16_SCALE
733
+ local packed = readu8(buff, offset + 2)
734
+ local repeatCount = readi8(buff, offset + 3)
735
+ local delayTime = readu16(buff, offset + 4) / FX16_SCALE
736
+
737
+ local styleId = packed % 16
738
+ local dirId = (packed // 16) % 8
739
+ local reverse = (packed // 128) == 1
740
+
741
+ local tweenInfo = TweenInfo.new(
742
+ tweenTime,
743
+ tweenStyles[styleId],
744
+ tweenDirections[dirId],
745
+ repeatCount,
746
+ reverse,
747
+ delayTime
748
+ )
749
+ return tweenInfo, 6
750
+ end
751
+
752
+ @native local function encodeColorSequence(buff: buffer, offset: number, arg: SchemaArg, value: ColorSequence)
753
+ :number
754
+ local keypoints = value.Keypoints
755
+ writeu8(buff, offset, #keypoints)
756
+ local ptr = offset + 1
757
+
758
+ for _, kp in keypoints do
759
+ local color = kp.Value
760
+ writeu8(buff, ptr, kp.Time * 255 + .5)
761
+ writeu8(buff, ptr + 1, color.R * 255 + .5)
762
+ writeu8(buff, ptr + 2, color.G * 255 + .5)
763
+ writeu8(buff, ptr + 3, color.B * 255 + .5)
764
+ ptr += 4
765
+ end
766
+
767
+ return ptr - offset
768
+ end
769
+
770
+ @native local function decodeColorSequence(buff: buffer, offset: number, arg: SchemaArg): (ColorSequence, number)
771
+ local len = readu8(buff, offset)
772
+ local ptr = offset + 1
773
+ local keypoints = table.create(len)
774
+
775
+ for i = 1, len do
776
+ keypoints[i] = ColorSequenceKeypoint.new(
777
+ readu8(buff, ptr) / 255,
778
+ Color3.fromRGB(
779
+ readu8(buff, ptr + 1),
780
+ readu8(buff, ptr + 2),
781
+ readu8(buff, ptr + 3)
782
+ )
783
+ )
784
+ ptr += 4
785
+ end
786
+ return ColorSequence.new(keypoints), ptr - offset
787
+ end
788
+
789
+ @native local function encodeNumberSequence(buff: buffer, offset: number, arg: SchemaArg, value: NumberSequence)
790
+ :number
791
+ local keypoints = value.Keypoints
792
+ writeu8(buff, offset, #keypoints)
793
+ local ptr = offset + 1
794
+
795
+ for _, kp in keypoints do
796
+ writeu8(buff, ptr, kp.Time * 255 + .5)
797
+ writeu8(buff, ptr + 1, kp.Value * 255 + .5)
798
+ writeu8(buff, ptr + 2, kp.Envelope * 255 + .5)
799
+ ptr += 3
800
+ end
801
+ return ptr - offset
802
+ end
803
+
804
+ @native local function decodeNumberSequence(buff: buffer, offset: number, arg: SchemaArg)
805
+ : (NumberSequence, number)
806
+ local len = readu8(buff, offset)
807
+ local ptr = offset + 1
808
+ local keypoints = table.create(len)
809
+
810
+ for i = 1, len do
811
+ keypoints[i] = NumberSequenceKeypoint.new(
812
+ readu8(buff, ptr) / 255,
813
+ readu8(buff, ptr + 1) / 255,
814
+ readu8(buff, ptr + 2) / 255
815
+ )
816
+ ptr += 3
817
+ end
818
+ return NumberSequence.new(keypoints), ptr - offset
819
+ end
820
+
821
+ @native local function encodeNumberRange(buff: buffer, offset: number, arg: SchemaArg, value: NumberRange)
822
+ :number
823
+ writef32(buff, offset, value.Min)
824
+ writef32(buff, offset + 4, value.Max)
825
+ return 8
826
+ end
827
+
828
+ @native local function decodeNumberRange(buff: buffer, offset: number, arg: SchemaArg): (NumberRange, number)
829
+ return NumberRange.new(readf32(buff, offset), readf32(buff, offset + 4)), 8
830
+ end
831
+
832
+ @native local function encodeUDim(buff: buffer, offset: number, arg: SchemaArg, value: UDim): number
833
+ writei16(buff, offset, value.Scale * 1000)
834
+ writei16(buff, offset + 2, value.Offset)
835
+ return 4
836
+ end
837
+
838
+ @native local function decodeUDim(buff: buffer, offset: number, arg: SchemaArg): (UDim, number)
839
+ return UDim.new(readi16(buff, offset) / 1000, readi16(buff, offset + 2)), 4
840
+ end
841
+
842
+ @native local function encodeUDim2(buff: buffer, offset: number, arg: SchemaArg, value: UDim2): number
843
+ local x, y = value.X, value.Y
844
+ writei16(buff, offset, x.Scale * 1000)
845
+ writei16(buff, offset + 2, x.Offset)
846
+ writei16(buff, offset + 4, y.Scale * 1000)
847
+ writei16(buff, offset + 6, y.Offset)
848
+ return 8
849
+ end
850
+
851
+ @native local function decodeUDim2(buff: buffer, offset: number, arg: SchemaArg): (UDim2, number)
852
+ return UDim2.new(
853
+ readi16(buff, offset) / 1000,
854
+ readi16(buff, offset + 2),
855
+ readi16(buff, offset + 4) / 1000,
856
+ readi16(buff, offset + 6)
857
+ ), 8
858
+ end
859
+
860
+ @native local function encodeRegion3(buff: buffer, offset: number, arg: SchemaArg, value: Region3): number
861
+ local halfSize = value.Size / 2
862
+ local pos = value.CFrame.Position
863
+ local min, max = pos - halfSize, pos + halfSize
864
+ writef32(buff, offset, min.X)
865
+ writef32(buff, offset + 4, min.Y)
866
+ writef32(buff, offset + 8, min.Z)
867
+ writef32(buff, offset + 12, max.X)
868
+ writef32(buff, offset + 16, max.Y)
869
+ writef32(buff, offset + 20, max.Z)
870
+ return 24
871
+ end
872
+
873
+ @native local function decodeRegion3(buff: buffer, offset: number, arg: SchemaArg): (Region3, number)
874
+ return Region3.new(
875
+ Vector3.new(
876
+ readf32(buff, offset),
877
+ readf32(buff, offset + 4),
878
+ readf32(buff, offset + 8)
879
+ ),
880
+ Vector3.new(
881
+ readf32(buff, offset + 12),
882
+ readf32(buff, offset + 16),
883
+ readf32(buff, offset + 20)
884
+ )
885
+ ), 24
886
+ end
887
+
888
+ @native local function encodePhysicalProperties(buff: buffer, offset: number, arg: SchemaArg, value: PhysicalProperties)
889
+ :number
890
+ writeu16(buff, offset, value.Density * 655.35)
891
+ writeu8(buff, offset + 2, value.Friction * 127.5)
892
+ writeu8(buff, offset + 3, value.Elasticity * 255)
893
+ writeu16(buff, offset + 4, value.FrictionWeight * 655.35)
894
+ writeu16(buff, offset + 6, value.ElasticityWeight * 655.35)
895
+ writeu8(buff, offset + 8, value.AcousticAbsorption * 255)
896
+ return 9
897
+ end
898
+
899
+ @native local function decodePhysicalProperties(buff: buffer, offset: number, arg: SchemaArg)
900
+ :(PhysicalProperties, number)
901
+ return PhysicalProperties.new(
902
+ readu16(buff, offset) / 655.35,
903
+ readu8(buff, offset + 2) / 127.5,
904
+ readu8(buff, offset + 3) / 255,
905
+ readu16(buff, offset + 4) / 655.35,
906
+ readu16(buff, offset + 6) / 655.35,
907
+ readu8(buff, offset + 8) / 255
908
+ ), 9
909
+ end
910
+
911
+ @native local function encodeRect(buff: buffer, offset: number, arg: SchemaArg, value: Rect): number
912
+ local min, max = value.Min, value.Max
913
+ writef32(buff, offset, min.X)
914
+ writef32(buff, offset + 4, min.Y)
915
+ writef32(buff, offset + 8, max.X)
916
+ writef32(buff, offset + 12, max.Y)
917
+ return 16
918
+ end
919
+
920
+ @native local function decodeRect(buff: buffer, offset: number, arg: SchemaArg): (Rect, number)
921
+ return Rect.new(
922
+ readf32(buff, offset),
923
+ readf32(buff, offset + 4),
924
+ readf32(buff, offset + 8),
925
+ readf32(buff, offset + 12)
926
+ ), 16
927
+ end
928
+
929
+ @native local function encodeBulkNumberU4Array(buff: buffer, offset: number, array: {number}): number
930
+ local ptr = offset
931
+ local arrayLen = #array
932
+ local mod = arrayLen % 2
933
+ local iters = (arrayLen - mod) / 2
934
+ local nibPtr = 1
935
+
936
+ for i = 1, iters do
937
+ writeu8(buff, ptr, array[nibPtr] + array[nibPtr + 1] * 16)
938
+ ptr += 1
939
+ nibPtr += 2
940
+ end
941
+
942
+ if mod ~= 0 then
943
+ writeu8(buff, ptr, array[arrayLen])
944
+ end
945
+ return ptr - offset
946
+ end
947
+
948
+ @native local function decodeBulkNumberU4Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
949
+ :({number}, number)
950
+ local ptr = offset
951
+ local array = tbl or table.create(arrayLen)
952
+ local mod = arrayLen % 2
953
+ local iters = (arrayLen - mod) / 2
954
+ local nibPtr = 1
955
+
956
+ for i = 1, iters do
957
+ local b = readu8(buff, ptr)
958
+ local n2 = b // 16
959
+ local n1 = b - n2 * 16
960
+ array[nibPtr] = n1
961
+ array[nibPtr + 1] = n2
962
+ ptr += 1
963
+ nibPtr += 2
964
+ end
965
+
966
+ if mod ~= 0 then
967
+ array[arrayLen] = readu8(buff, ptr)
968
+ end
969
+ return array, ptr - offset
970
+ end
971
+
972
+ @native local function encodeBulkNumberU8Array(buff: buffer, offset: number, array: {number}): number
973
+ local ptr = offset
974
+ for _, val in array do
975
+ writeu8(buff, ptr, val)
976
+ ptr += 1
977
+ end
978
+ return ptr - offset
979
+ end
980
+
981
+ @native local function decodeBulkNumberU8Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
982
+ : ({number}, number)
983
+ local ptr = offset
984
+ local array = tbl or table.create(arrayLen)
985
+ local mod = arrayLen % 4
986
+ local iters = (arrayLen - mod) / 4
987
+ local bytePtr = 1
988
+
989
+ for i = 1, iters do
990
+ local b = readu32(buff, ptr)
991
+ local b1 = b // 256
992
+ local b2 = b1 // 256
993
+ local b3 = b2 // 256
994
+ array[bytePtr] = b - b1 * 256
995
+ array[bytePtr + 1] = b1 - b2 * 256
996
+ array[bytePtr + 2] = b2 - b3 * 256
997
+ array[bytePtr + 3] = b3
998
+ ptr += 4
999
+ bytePtr += 4
1000
+ end
1001
+
1002
+ for i = arrayLen - mod + 1, arrayLen do
1003
+ array[i] = readu8(buff, ptr)
1004
+ ptr += 1
1005
+ end
1006
+ return array, ptr - offset
1007
+ end
1008
+
1009
+ @native local function encodeBulkNumberI32Array(buff: buffer, offset: number, array: {number}): number
1010
+ local ptr = offset
1011
+ for _, val in array do
1012
+ writei32(buff, ptr, val)
1013
+ ptr += 4
1014
+ end
1015
+ return ptr - offset
1016
+ end
1017
+
1018
+ @native local function decodeBulkNumberI32Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
1019
+ : ({number}, number)
1020
+ local ptr = offset
1021
+ local array = tbl or table.create(arrayLen)
1022
+ for i = 1, arrayLen do
1023
+ array[i] = readi32(buff, ptr)
1024
+ ptr += 4
1025
+ end
1026
+ return array, ptr - offset
1027
+ end
1028
+
1029
+ @native local function encodeBulkNumberF32Array(buff: buffer, offset: number, array: {number}): number
1030
+ local ptr = offset
1031
+ for _, val in array do
1032
+ writef32(buff, ptr, val)
1033
+ ptr += 4
1034
+ end
1035
+ return ptr - offset
1036
+ end
1037
+
1038
+ @native local function decodeBulkNumberF32Array(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
1039
+ : ({number}, number)
1040
+ local ptr = offset
1041
+ local array = tbl or table.create(arrayLen)
1042
+ for i = 1, arrayLen do
1043
+ array[i] = readf32(buff, ptr)
1044
+ ptr += 4
1045
+ end
1046
+ return array, ptr - offset
1047
+ end
1048
+
1049
+ @native local function encodeBulkBoolArray(buff: buffer, offset: number, array: {boolean}): number
1050
+ local ptr = offset
1051
+ local arrayLen = #array
1052
+ local mod = arrayLen % 8
1053
+ local bitIters = (arrayLen - mod) / 8
1054
+
1055
+ local bitPtr = 1
1056
+ for i = 1, bitIters do
1057
+ writeu8(buff, ptr,
1058
+ (array[bitPtr] and 1 or 0) +
1059
+ (array[bitPtr + 1] and 2 or 0) +
1060
+ (array[bitPtr + 2] and 4 or 0) +
1061
+ (array[bitPtr + 3] and 8 or 0) +
1062
+ (array[bitPtr + 4] and 16 or 0) +
1063
+ (array[bitPtr + 5] and 32 or 0) +
1064
+ (array[bitPtr + 6] and 64 or 0) +
1065
+ (array[bitPtr + 7] and 128 or 0)
1066
+ )
1067
+ bitPtr += 8
1068
+ ptr += 1
1069
+ end
1070
+
1071
+ for i = arrayLen - mod + 1, arrayLen do
1072
+ writeu8(buff, ptr, array[i] and 1 or 0)
1073
+ ptr += 1
1074
+ end
1075
+
1076
+ return ptr - offset
1077
+ end
1078
+
1079
+ local byteToBools = table.create(256)
1080
+ local function buildByteToBools()
1081
+ for byte = 0, 255 do
1082
+ local t = table.create(8)
1083
+ local val = byte
1084
+
1085
+ for i = 1, 8 do
1086
+ t[i] = (val % 2) == 1
1087
+ val = val // 2
1088
+ end
1089
+ byteToBools[byte] = t
1090
+ end
1091
+ end
1092
+
1093
+ buildByteToBools()
1094
+
1095
+ @native local function decodeBulkBoolArray(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
1096
+ : ({boolean}, number)
1097
+ local ptr = offset
1098
+ local array = tbl or table.create(arrayLen)
1099
+ local mod = arrayLen % 8
1100
+ local bitIters = (arrayLen - mod) / 8
1101
+ local bitPtr = 1
1102
+
1103
+ for i = 1, bitIters do
1104
+ local byte = readu8(buff, ptr)
1105
+ ptr += 1
1106
+
1107
+ local bits = byteToBools[byte]
1108
+ array[bitPtr] = bits[1]
1109
+ array[bitPtr + 1] = bits[2]
1110
+ array[bitPtr + 2] = bits[3]
1111
+ array[bitPtr + 3] = bits[4]
1112
+ array[bitPtr + 4] = bits[5]
1113
+ array[bitPtr + 5] = bits[6]
1114
+ array[bitPtr + 6] = bits[7]
1115
+ array[bitPtr + 7] = bits[8]
1116
+
1117
+ bitPtr += 8
1118
+ end
1119
+
1120
+ for i = arrayLen - mod + 1, arrayLen do
1121
+ array[i] = readu8(buff, ptr) == 1
1122
+ ptr += 1
1123
+ end
1124
+
1125
+ return array, ptr - offset
1126
+ end
1127
+
1128
+ @native local function encodeBulkStringArray(buff: buffer, offset: number, array: {string}): number
1129
+ local totalLen = 0
1130
+ local ptr = offset
1131
+
1132
+ for _, str in array do
1133
+ local len = stringLen(str)
1134
+ writeu8(buff, ptr, len)
1135
+ ptr += 1
1136
+ totalLen += len
1137
+ end
1138
+
1139
+ local largeStr = table.concat(array)
1140
+ writestring(buff, ptr, largeStr, totalLen)
1141
+ return ptr + totalLen - offset
1142
+ end
1143
+
1144
+ @native local function decodeBulkStringArray(buff: buffer, offset: number, arrayLen: number, tbl: {any}?)
1145
+ : ({string}, number)
1146
+ local ptr = offset
1147
+ local lens = getTable()
1148
+ local totalLen = 0
1149
+ local array = tbl or table.create(arrayLen)
1150
+ for i = 1, arrayLen do
1151
+ local len = readu8(buff, ptr)
1152
+ lens[i] = len
1153
+ ptr += 1
1154
+ totalLen += len
1155
+ end
1156
+
1157
+ local largeStr = readstring(buff, ptr, totalLen)
1158
+ local largeStrPtr = 1
1159
+
1160
+ for i, len in lens do
1161
+ local start = largeStrPtr
1162
+ largeStrPtr += len
1163
+ array[i] = stringSub(largeStr, start, largeStrPtr - 1)
1164
+ end
1165
+ recycleTable(lens)
1166
+ return array, ptr + totalLen - offset
1167
+ end
1168
+
1169
+ @native local function encodeBulkNumberU8DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
1170
+ : number
1171
+ local ptr = offset
1172
+ for _, key in keysMap do
1173
+ writeu8(buff, ptr, dict[key])
1174
+ ptr += 1
1175
+ end
1176
+ return ptr - offset
1177
+ end
1178
+
1179
+ @native local function decodeBulkNumberU8DictStatic(buff: buffer, offset: number, keysMap: {any},
1180
+ template: {[string | number]: any}): ({[any]: number}, number)
1181
+ local ptr = offset
1182
+ local dict = table.clone(template)
1183
+ for _, key in keysMap do
1184
+ dict[key] = readu8(buff, ptr)
1185
+ ptr += 1
1186
+ end
1187
+ return dict, ptr - offset
1188
+ end
1189
+
1190
+ @native local function encodeBulkNumberI32DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
1191
+ : number
1192
+ local ptr = offset
1193
+ for _, key in keysMap do
1194
+ writei32(buff, ptr, dict[key])
1195
+ ptr += 4
1196
+ end
1197
+ return ptr - offset
1198
+ end
1199
+
1200
+ @native local function decodeBulkNumberI32DictStatic(buff: buffer, offset: number, keysMap: {any},
1201
+ template: {[string | number]: any}): ({[any]: number}, number)
1202
+ local ptr = offset
1203
+ local dict = table.clone(template)
1204
+ for _, key in keysMap do
1205
+ dict[key] = readi32(buff, ptr)
1206
+ ptr += 4
1207
+ end
1208
+ return dict, ptr - offset
1209
+ end
1210
+
1211
+ @native local function encodeBulkNumberF32DictStatic(buff: buffer, offset: number, dict: {[any]: number}, keysMap: {any})
1212
+ : number
1213
+ local ptr = offset
1214
+
1215
+ for _, key in keysMap do
1216
+ writef32(buff, ptr, dict[key])
1217
+ ptr += 4
1218
+ end
1219
+ return ptr - offset
1220
+ end
1221
+
1222
+ @native local function decodeBulkNumberF32DictStatic(buff: buffer, offset: number, keysMap: {any},
1223
+ template: {[string | number]: any}): ({[any]: number}, number)
1224
+ local ptr = offset
1225
+ local dict = table.clone(template)
1226
+ for _, key in keysMap do
1227
+ dict[key] = readf32(buff, ptr)
1228
+ ptr += 4
1229
+ end
1230
+ return dict, ptr - offset
1231
+ end
1232
+
1233
+ @native local function encodeBulkBoolDictStatic(buff: buffer, offset: number, dict: {[any]: boolean}, keysMap: {any})
1234
+ : number
1235
+ local ptr = offset
1236
+ for _, key in keysMap do
1237
+ writeu8(buff, ptr, dict[key] and 1 or 0)
1238
+ ptr += 1
1239
+ end
1240
+ return ptr - offset
1241
+ end
1242
+
1243
+ @native local function decodeBulkBoolDictStatic(buff: buffer, offset: number, keysMap: {any},
1244
+ template: {[string | number]: any}): ({[any]: boolean}, number)
1245
+ local ptr = offset
1246
+ local dict = table.clone(template)
1247
+ for _, key in keysMap do
1248
+ dict[key] = readu8(buff, ptr) == 1
1249
+ ptr += 1
1250
+ end
1251
+ return dict, ptr - offset
1252
+ end
1253
+
1254
+ @native local function encodeBulkStringDictStatic(buff: buffer, offset: number, dict: {[any]: string}, keysMap: {any})
1255
+ : number
1256
+ local ptr = offset
1257
+ local str = getTable()
1258
+
1259
+ for i, key in keysMap do
1260
+ local val = dict[key]
1261
+ local strLen = stringLen(val)
1262
+ writeu8(buff, ptr, strLen)
1263
+ ptr += 1
1264
+ str[i] = val
1265
+ end
1266
+
1267
+ local largeStr = table.concat(str)
1268
+ local totalStrLen = stringLen(largeStr)
1269
+ writestring(buff, ptr, largeStr, totalStrLen)
1270
+ ptr += totalStrLen
1271
+ recycleTable(str)
1272
+ return ptr - offset
1273
+ end
1274
+
1275
+ @native local function decodeBulkStringDictStatic(buff: buffer, offset: number, keysMap: {any},
1276
+ template: {[string | number]: any}): ({[any]: string}, number)
1277
+ local ptr = offset
1278
+ local dictLen = #keysMap
1279
+ local strPtr = 1
1280
+ local totalLen = 0
1281
+ local dict = table.clone(template)
1282
+ local lens = getTable()
1283
+
1284
+ for i = 1, dictLen do
1285
+ local len = readu8(buff, ptr)
1286
+ lens[i] = len
1287
+ totalLen += len
1288
+ ptr += 1
1289
+ end
1290
+
1291
+ local largeStr = readstring(buff, offset + dictLen, totalLen)
1292
+ for i, key in keysMap do
1293
+ local start = strPtr
1294
+ strPtr += lens[i]
1295
+ dict[key] = stringSub(largeStr, start, strPtr - 1)
1296
+ end
1297
+ recycleTable(lens)
1298
+ return dict, strPtr - offset
1299
+ end
1300
+
1301
+ @native local function encodeBulkNumberU8Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean?)
1302
+ : (number, number?)
1303
+ local ptr = offset
1304
+ local len
1305
+
1306
+ if keys then
1307
+ for key, val in dict do
1308
+ writeu8(buff, ptr, key)
1309
+ ptr += 1
1310
+ end
1311
+ len = ptr - offset
1312
+ else
1313
+ for key, val in dict do
1314
+ writeu8(buff, ptr, val)
1315
+ ptr += 1
1316
+ end
1317
+ end
1318
+ return ptr - offset, len
1319
+ end
1320
+
1321
+ @native local function encodeBulkNumberI32Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean?)
1322
+ : (number, number?)
1323
+ local ptr = offset
1324
+ local len
1325
+
1326
+ if keys then
1327
+ for key, val in dict do
1328
+ writei32(buff, ptr, key)
1329
+ ptr += 4
1330
+ end
1331
+ len = ptr - offset
1332
+ else
1333
+ for key, val in dict do
1334
+ writei32(buff, ptr, val)
1335
+ ptr += 4
1336
+ end
1337
+ end
1338
+ return ptr - offset, len
1339
+ end
1340
+
1341
+ @native local function encodeBulkNumberF32Dict(buff: buffer, offset: number, dict: {[any]: number}, keys: boolean)
1342
+ : (number, number?)
1343
+ local ptr = offset
1344
+ local len
1345
+
1346
+ if keys then
1347
+ for key, val in dict do
1348
+ writef32(buff, ptr, key)
1349
+ ptr += 4
1350
+ end
1351
+ len = (ptr - offset) / 4
1352
+ else
1353
+ for key, val in dict do
1354
+ writef32(buff, ptr, val)
1355
+ ptr += 4
1356
+ end
1357
+ end
1358
+ return ptr - offset, len
1359
+ end
1360
+
1361
+ @native local function encodeBulkBoolDict(buff: buffer, offset: number, dict: {[any]: boolean}, keys: boolean?)
1362
+ : (number, number?)
1363
+ local ptr = offset
1364
+ local len
1365
+
1366
+ if keys then
1367
+ for key, val in dict do
1368
+ writeu8(buff, ptr, key and 1 or 0)
1369
+ ptr += 1
1370
+ end
1371
+ len = ptr - offset
1372
+ else
1373
+ for key, val in dict do
1374
+ writeu8(buff, ptr, val and 1 or 0)
1375
+ ptr += 1
1376
+ end
1377
+ end
1378
+ return ptr - offset, len
1379
+ end
1380
+
1381
+ @native local function encodeBulkStringDict(buff: buffer, offset: number, dict: {[any]: string}, keys: boolean?)
1382
+ : (number, number?)
1383
+ local ptr = offset
1384
+ local str = getTable()
1385
+
1386
+ local len
1387
+ if keys then
1388
+ len = 0
1389
+ for key, val in dict do
1390
+ local strLen = stringLen(key)
1391
+ writeu8(buff, ptr, strLen)
1392
+ ptr += 1
1393
+ len += 1
1394
+ str[len] = key
1395
+ end
1396
+ else
1397
+ local count = 0
1398
+ for key, val in dict do
1399
+ local strLen = stringLen(val)
1400
+ writeu8(buff, ptr, strLen)
1401
+ ptr += 1
1402
+ count += 1
1403
+ str[count] = val
1404
+ end
1405
+ end
1406
+ local largeStr = table.concat(str)
1407
+ local totalStrLen = stringLen(largeStr)
1408
+ writestring(buff, ptr, largeStr, totalStrLen)
1409
+ ptr += totalStrLen
1410
+ recycleTable(str)
1411
+ return ptr - offset, len
1412
+ end
1413
+
1414
+ local enumItems: {EnumItem} = {}
1415
+ local enumItemsByEnum: {[EnumItem]: number} = {}
1416
+ local encodeData: {[number]: (buffer, number, any, any?, any?) -> number}
1417
+ local decodeData: {[number]: (buffer, number, any?, any?) -> (any, number)}
1418
+
1419
+ @native local function encodeEnumItem(buff: buffer, offset: number, arg: SchemaArg, value: EnumItem): number
1420
+ writeu16(buff, offset, enumItemsByEnum[value] or 0)
1421
+ return 2
1422
+ end
1423
+
1424
+ @native local function decodeEnumItem(buff: buffer, offset: number, arg: SchemaArg): (EnumItem?, number)
1425
+ local idx = readu16(buff, offset)
1426
+ return enumItems[idx], 2
1427
+ end
1428
+
1429
+ @native local function encodeInstance(buff: buffer, offset: number, arg: SchemaArg, value: Instance, inst: {Instance})
1430
+ : number
1431
+ inst[#inst + 1] = value
1432
+ return 0
1433
+ end
1434
+
1435
+ @native local function decodeInstance(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance})
1436
+ : (Instance, number)
1437
+ local ptrIdx = #inst
1438
+ local ptr = inst[ptrIdx]
1439
+ inst[ptrIdx] += 1
1440
+ return inst[ptr], 0
1441
+ end
1442
+
1443
+ @native local function encodePlayer(buff: buffer, offset: number, arg: SchemaArg, value: Player): number
1444
+ writef64(buff, offset, value.UserId or 0)
1445
+ return 8
1446
+ end
1447
+
1448
+ @native local function decodePlayer(buff: buffer, offset: number, arg: SchemaArg): (Player?, number)
1449
+ local player = Players:GetPlayerByUserId(readf64(buff, offset))
1450
+ return player, 8
1451
+ end
1452
+
1453
+ @native local function encodeAny(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}): number
1454
+ local dataType = getDataType(value)
1455
+ writeu8(buff, offset, dataType)
1456
+ local bytes = 1
1457
+ local encode = encodeData[dataType] :: ((buffer, number, SchemaArg, any, {Instance}?) -> number)?
1458
+ bytes += encode(buff, offset + bytes, arg, value, inst)
1459
+ return bytes
1460
+ end
1461
+
1462
+ @native local function decodeAny(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?): (any, number)
1463
+ local dataType = readu8(buff, offset)
1464
+ local bytes = 1
1465
+ local decode = decodeData[dataType] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1466
+ if not decode then
1467
+ return nil, 1
1468
+ end
1469
+ local val, b = decode(buff, offset + bytes, arg, inst)
1470
+ return val, bytes + b
1471
+ end
1472
+
1473
+ @native local function encodeOptional(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}?)
1474
+ : number
1475
+ local isNil = value == nil
1476
+ local tag = isNil and 0 or 1
1477
+ writeu8(buff, offset, tag)
1478
+ if isNil then
1479
+ return 1
1480
+ end
1481
+
1482
+ local valArg = arg[2]
1483
+ local encode = encodeData[valArg] or encodeData[valArg[1]] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1484
+ local bytes = encode(buff, offset + 1, valArg, value, inst)
1485
+ return bytes + 1
1486
+ end
1487
+
1488
+ @native local function decodeOptional(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?)
1489
+ : (any, number)
1490
+ local isNil = readu8(buff, offset) == 0
1491
+ if isNil then return nil, 1 end
1492
+
1493
+ local valArg = arg[2]
1494
+ local decode = decodeData[valArg] or decodeData[valArg[1]] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1495
+ local val, b = decode(buff, offset + 1, valArg, inst)
1496
+ return val, b + 1
1497
+ end
1498
+
1499
+ @native local function encodeUnion(buff: buffer, offset: number, arg: SchemaArg, value: any, inst: {Instance}?)
1500
+ : number
1501
+ local dt = typeof(value)
1502
+ local valArg = arg[dt]
1503
+ local tag = dt ~= "table" and valArg or valArg[1]
1504
+ writeu8(buff, offset, tag)
1505
+
1506
+ local encode = encodeData[tag] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1507
+ local bytes = encode(buff, offset + 1, valArg, value, inst)
1508
+ return bytes + 1
1509
+ end
1510
+
1511
+ @native local function decodeUnion(buff: buffer, offset: number, arg: SchemaArg, inst: {Instance}?): (any, number)
1512
+ local tag = readu8(buff, offset)
1513
+ local valArg = arg[tag]
1514
+ local decode = decodeData[tag] :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1515
+ local val, b = decode(buff, offset + 1, valArg, inst)
1516
+ return val, b + 1
1517
+ end
1518
+
1519
+ @native local function encodeLiteral(buff: buffer, offset: number, arg: SchemaArg, value: Literal)
1520
+ :number
1521
+ local reverseMap = arg[3]
1522
+ writeu8(buff, offset, reverseMap[value])
1523
+ return 1
1524
+ end
1525
+
1526
+ @native local function decodeLiteral(buff: buffer, offset: number, arg: SchemaArg): (Literal, number)
1527
+ local map = arg[2]
1528
+ return map[readu8(buff, offset)], 1
1529
+ end
1530
+
1531
+ @native local function encodeArrayStatic(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
1532
+ : number
1533
+ local ptr = offset
1534
+ local fastPath = schema[3]
1535
+
1536
+ if fastPath then
1537
+ ptr += encodeData[fastPath](buff, ptr, array)
1538
+ return ptr - offset
1539
+ end
1540
+
1541
+ for idx, arg: SchemaArg in schema[2] do
1542
+ local encode = encodeData[arg] or encodeData[arg[1]]
1543
+ :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1544
+ ptr += encode(buff, ptr, arg, array[idx], inst)
1545
+ end
1546
+ return ptr - offset
1547
+ end
1548
+
1549
+ @native local function decodeArrayStatic(buff: buffer, offset: number, schema: {SchemaArg}, inst: {Instance}?)
1550
+ : ({any}, number)
1551
+ local ptr = offset
1552
+ local data = schema[2]
1553
+ local fastPath = schema[3]
1554
+
1555
+ if fastPath then
1556
+ local array, b = decodeData[fastPath](buff, ptr, #data)
1557
+ return array, ptr + b - offset
1558
+ end
1559
+
1560
+ local array = {}
1561
+ for i, arg: SchemaArg in data do
1562
+ local decode = decodeData[arg] or decodeData[arg[1]]
1563
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1564
+ local val, b = decode(buff, ptr, arg, inst)
1565
+ ptr += b
1566
+ array[i] = val
1567
+ end
1568
+ return array, ptr - offset
1569
+ end
1570
+
1571
+ @native local function encodeArray(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
1572
+ : number
1573
+ local len = #array
1574
+ writeu16(buff, offset, len)
1575
+ local ptr = offset + 2
1576
+
1577
+ local fastPath = schema[3]
1578
+ if fastPath then
1579
+ ptr += encodeData[fastPath](buff, ptr, array)
1580
+ return ptr - offset
1581
+ end
1582
+
1583
+ local arg = schema[2]
1584
+ local encode = encodeData[arg] or encodeData[arg[1]] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1585
+ for i, value in array do
1586
+ ptr += encode(buff, ptr, arg, value, inst)
1587
+ end
1588
+ return ptr - offset
1589
+ end
1590
+
1591
+ @native local function decodeArray(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?): ({any}, number)
1592
+ local len = readu16(buff, offset)
1593
+ local ptr = offset + 2
1594
+
1595
+ local fastPath = schema[3]
1596
+ if fastPath then
1597
+ local array, b = decodeData[fastPath](buff, ptr, len)
1598
+ return array, ptr + b - offset
1599
+ end
1600
+
1601
+ local arg = schema[2]
1602
+ local decode = decodeData[arg] or decodeData[arg[1]]
1603
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1604
+ local array = table.create(len)
1605
+
1606
+ for i = 1, len do
1607
+ local val, b = decode(buff, ptr, arg, inst)
1608
+ ptr += b
1609
+ array[i] = val
1610
+ end
1611
+ return array, ptr - offset
1612
+ end
1613
+
1614
+ @native local function encodeArrayDynamic(buff: buffer, offset: number, schema: SchemaArg, array: {any}, inst: {Instance})
1615
+ : number
1616
+ local len = #array
1617
+ writeu16(buff, offset, len)
1618
+ local ptr = offset + 2
1619
+
1620
+ for i = 1, len do
1621
+ local val = array[i]
1622
+ local dataType = getDataType(val)
1623
+ writeu8(buff, ptr, dataType)
1624
+ ptr += 1
1625
+ local encode = encodeData[dataType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1626
+ ptr += encode(buff, ptr, schema, val, inst)
1627
+ end
1628
+ return ptr - offset
1629
+ end
1630
+
1631
+ @native local function decodeArrayDynamic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
1632
+ : ({any}, number)
1633
+ local len = readu16(buff, offset)
1634
+ local ptr = offset + 2
1635
+ local array = table.create(len)
1636
+
1637
+ for i = 1, len do
1638
+ local dataType = readu8(buff, ptr)
1639
+ ptr += 1
1640
+ local decode = decodeData[dataType] or decodeData[Enums.Nil]
1641
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1642
+ local val, b = decode(buff, ptr, schema, inst)
1643
+ ptr += b
1644
+ array[i] = val
1645
+ end
1646
+ return array, ptr - offset
1647
+ end
1648
+
1649
+ @native local function encodeDictStatic(buff: buffer, offset: number, schema: SchemaArg, dict: {[string | number]: any},
1650
+ inst: {Instance}): number
1651
+ local ptr = offset
1652
+ local data = schema[2]
1653
+ local keysMap = schema[3]
1654
+ local fastPath = schema[5]
1655
+
1656
+ if fastPath then
1657
+ ptr += encodeData[fastPath](buff, ptr, dict, keysMap)
1658
+ return ptr - offset
1659
+ end
1660
+
1661
+ local idx = 0
1662
+ for i, key in keysMap do
1663
+ idx += 1
1664
+ local arg = data[idx]
1665
+ local val = dict[key]
1666
+ local encode = encodeData[arg] or encodeData[arg[1]] ::
1667
+ (buffer, number, SchemaArg, any, {Instance}?) -> number
1668
+ ptr += encode(buff, ptr, arg, val, inst)
1669
+ end
1670
+ return ptr - offset
1671
+ end
1672
+
1673
+ @native local function decodeDictStatic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
1674
+ : ({[number | string]: any}, number)
1675
+ local ptr = offset
1676
+ local data = schema[2]
1677
+ local keysMap = schema[3]
1678
+ local template = schema[4]
1679
+ local fastPath = schema[5]
1680
+
1681
+ if fastPath then
1682
+ local values, b = decodeData[fastPath](buff, ptr, keysMap, template)
1683
+ ptr += b
1684
+ return values, ptr - offset
1685
+ end
1686
+
1687
+ local dict = table.clone(template)
1688
+ for i, arg in data do
1689
+ local decode = decodeData[arg] or decodeData[arg[1]]
1690
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1691
+ local val, b = decode(buff, ptr, arg, inst)
1692
+ ptr += b
1693
+ local key = keysMap[i]
1694
+ dict[key] = val
1695
+ end
1696
+ return dict, ptr - offset
1697
+ end
1698
+
1699
+ @native local function encodeDict(buff: buffer, offset: number, schema: SchemaArg, dict: {[any]: any}, inst: {Instance})
1700
+ : number
1701
+ local len = 0
1702
+ local ptr = offset + 2
1703
+ local keyFastPath = schema[4]
1704
+ local valFastPath = schema[5]
1705
+
1706
+ if keyFastPath then
1707
+ local bytes
1708
+ bytes, len = encodeData[keyFastPath](buff, ptr, dict, true)
1709
+ ptr += bytes
1710
+ else
1711
+ local keyArg = schema[2]
1712
+ local encodeKey = encodeData[keyArg] or encodeData[keyArg[1]]
1713
+ :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1714
+ for key, val in dict do
1715
+ ptr += encodeKey(buff, ptr, keyArg, key, inst)
1716
+ len += 1
1717
+ end
1718
+ end
1719
+
1720
+ if valFastPath then
1721
+ ptr += encodeData[valFastPath](buff, ptr, dict)
1722
+ else
1723
+ local valArg = schema[3]
1724
+ local encodeVal = encodeData[valArg] or encodeData[valArg[1]]
1725
+ :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1726
+ for key, val in dict do
1727
+ ptr += encodeVal(buff, ptr, valArg, val, inst)
1728
+ end
1729
+ end
1730
+
1731
+ writeu16(buff, offset, len)
1732
+ return ptr - offset
1733
+ end
1734
+
1735
+ local dictTempCache: {[number]: {[any]: any}} = {}
1736
+
1737
+ @native local function decodeDict(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?): ({[any]: any}, number)
1738
+ local len = readu16(buff, offset)
1739
+ local ptr = offset + 2
1740
+ local keyFastPath = schema[4]
1741
+ local valFastPath = schema[5]
1742
+ local keys, vals = getTable(), getTable()
1743
+
1744
+ if keyFastPath then
1745
+ local bytes
1746
+ keys, bytes = decodeData[keyFastPath](buff, ptr, len, keys)
1747
+ ptr += bytes
1748
+ else
1749
+ local keyArg = schema[2]
1750
+ local decodeKey = decodeData[keyArg] or decodeData[keyArg[1]]
1751
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1752
+ for i = 1, len do
1753
+ local key, b = decodeKey(buff, ptr, keyArg, inst)
1754
+ ptr += b
1755
+ keys[i] = key
1756
+ end
1757
+ end
1758
+
1759
+ if valFastPath then
1760
+ local bytes
1761
+ vals, bytes = decodeData[valFastPath](buff, ptr, len, vals)
1762
+ ptr += bytes
1763
+ else
1764
+ local valArg = schema[3]
1765
+ local decodeVal = decodeData[valArg] or decodeData[valArg[1]]
1766
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1767
+ for i = 1, len do
1768
+ local val, b = decodeVal(buff, ptr, valArg, inst)
1769
+ ptr += b
1770
+ vals[i] = val
1771
+ end
1772
+ end
1773
+
1774
+ local dictId = schema[6]
1775
+ local template = dictTempCache[dictId]
1776
+ local dict
1777
+ if template then
1778
+ table.clear(template)
1779
+ dict = table.clone(template)
1780
+ else
1781
+ dict = {}
1782
+ end
1783
+
1784
+ for i, key in keys do
1785
+ dict[key] = vals[i]
1786
+ end
1787
+ recycleTable(keys)
1788
+ recycleTable(vals)
1789
+ if not template then
1790
+ dictTempCache[dictId] = table.clone(dict)
1791
+ end
1792
+ return dict, ptr - offset
1793
+ end
1794
+
1795
+ @native local function encodeDictDynamic(buff: buffer, offset: number, schema: SchemaArg, dict: {[any]: any},
1796
+ inst: {Instance}): number
1797
+ local startOffset = offset
1798
+ local ptr = offset + 2
1799
+ local idx = 0
1800
+
1801
+ for key, val in dict do
1802
+ local keyType = getDataType(key)
1803
+ local encodeKey = encodeData[keyType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1804
+ writeu8(buff, ptr, keyType)
1805
+ ptr += 1
1806
+ ptr += encodeKey(buff, ptr, schema, key, inst)
1807
+
1808
+ local valType = getDataType(val)
1809
+ local encodeVal = encodeData[valType] :: (buffer, number, SchemaArg, any, {Instance}?) -> number
1810
+ writeu8(buff, ptr, valType)
1811
+ ptr += 1
1812
+ ptr += encodeVal(buff, ptr, schema, val, inst)
1813
+ idx += 1
1814
+ end
1815
+ writeu16(buff, offset, idx)
1816
+ return ptr - offset
1817
+ end
1818
+
1819
+ @native local function decodeDictDynamic(buff: buffer, offset: number, schema: SchemaArg, inst: {Instance}?)
1820
+ : ({[any]: any}, number)
1821
+ local len = readu16(buff, offset)
1822
+ local ptr = offset + 2
1823
+ local dict = {}
1824
+
1825
+ for i = 1, len do
1826
+ local keyType = readu8(buff, ptr)
1827
+ ptr += 1
1828
+ local decodeKey = decodeData[keyType] or decodeData[Enums.Nil]
1829
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1830
+ local key, b = decodeKey(buff, ptr, schema, inst)
1831
+ ptr += b
1832
+
1833
+ local valType = readu8(buff, ptr)
1834
+ ptr += 1
1835
+ local decodeVal = decodeData[valType] or decodeData[Enums.Nil]
1836
+ :: (buffer, number, SchemaArg, {Instance}?) -> (any, number)
1837
+ local val, b = decodeVal(buff, ptr, schema, inst)
1838
+ ptr += b
1839
+ dict[key] = val
1840
+ end
1841
+ return dict, ptr - offset
1842
+ end
1843
+
1844
+ encodeData = {
1845
+ [Enums.Start] = function() end,
1846
+ [Enums.NumberU4] = encodeNumberU8,
1847
+ [Enums.NumberU8] = encodeNumberU8,
1848
+ [Enums.NumberU16] = encodeNumberU16,
1849
+ [Enums.NumberU32] = encodeNumberU32,
1850
+ [Enums.NumberI8] = encodeNumberI8,
1851
+ [Enums.NumberI16] = encodeNumberI16,
1852
+ [Enums.NumberI32] = encodeNumberI32,
1853
+ [Enums.NumberF16] = encodeNumberF16,
1854
+ [Enums.NumberF32] = encodeNumberF32,
1855
+ [Enums.NumberF64] = encodeNumberF64,
1856
+
1857
+ [Enums.CFrameFX8] = encodeCFrameFX8,
1858
+ [Enums.CFrameI16FX16] = encodeCFrameI16FX16,
1859
+ [Enums.CFrameFX16] = encodeCFrameFX16,
1860
+ [Enums.CFrameF16] = encodeCFrameF16,
1861
+ [Enums.CFrameF32Aligned] = encodeCFrameF32Aligned,
1862
+ [Enums.CFrameF32FX16] = encodeCFrameF32FX16,
1863
+ [Enums.CFrameF32] = encodeCFrameF32,
1864
+
1865
+ [Enums.Vector3FX8] = encodeVector3FX8,
1866
+ [Enums.Vector3I16] = encodeVector3I16,
1867
+ [Enums.Vector3FX16] = encodeVector3FX16,
1868
+ [Enums.Vector3F16] = encodeVector3F16,
1869
+ [Enums.Vector3F32] = encodeVector3F32,
1870
+
1871
+ [Enums.Vector2FX8] = encodeVector2FX8,
1872
+ [Enums.Vector2I16] = encodeVector2I16,
1873
+ [Enums.Vector2FX16] = encodeVector2FX16,
1874
+ [Enums.Vector2F16] = encodeVector2F16,
1875
+ [Enums.Vector2F32] = encodeVector2F32,
1876
+
1877
+ [Enums.String] = encodeString,
1878
+ [Enums.StringLong] = encodeStringLong,
1879
+ [Enums.Color3] = encodeColor,
1880
+ [Enums.BrickColor] = encodeBrickColor,
1881
+ [Enums.Boolean] = encodeBool,
1882
+ [Enums.Nil] = encodeNil,
1883
+ [Enums.Buffer] = encodeBuffer,
1884
+ [Enums.EnumItem] = encodeEnumItem,
1885
+ [Enums.Instance] = encodeInstance,
1886
+ [Enums.Player] = encodePlayer,
1887
+ [Enums.DateTime32] = encodeDateTime32,
1888
+ [Enums.DateTime64] = encodeDateTime64,
1889
+ [Enums.TweenInfo] = encodeTweenInfo,
1890
+ [Enums.ColorSequence] = encodeColorSequence,
1891
+ [Enums.NumberSequence] = encodeNumberSequence,
1892
+ [Enums.NumberRange] = encodeNumberRange,
1893
+ [Enums.UDim] = encodeUDim,
1894
+ [Enums.UDim2] = encodeUDim2,
1895
+ [Enums.Region3] = encodeRegion3,
1896
+ [Enums.PhysicalProperties] = encodePhysicalProperties,
1897
+ [Enums.Rect] = encodeRect,
1898
+
1899
+ [Enums.Any] = encodeAny,
1900
+ [Enums.Optional] = encodeOptional,
1901
+ [Enums.Union] = encodeUnion,
1902
+ [Enums.Literal] = encodeLiteral,
1903
+ [Enums.ArrayStatic] = encodeArrayStatic,
1904
+ [Enums.Array] = encodeArray,
1905
+ [Enums.ArrayDynamic] = encodeArrayDynamic,
1906
+ [Enums.DictStatic] = encodeDictStatic,
1907
+ [Enums.Dict] = encodeDict,
1908
+ [Enums.DictDynamic] = encodeDictDynamic,
1909
+
1910
+ [Enums.FastNumberU4Array] = encodeBulkNumberU4Array,
1911
+ [Enums.FastNumberU8Array] = encodeBulkNumberU8Array,
1912
+ [Enums.FastNumberI32Array] = encodeBulkNumberI32Array,
1913
+ [Enums.FastNumberF32Array] = encodeBulkNumberF32Array,
1914
+ [Enums.FastBoolArray] = encodeBulkBoolArray,
1915
+ [Enums.FastStringArray] = encodeBulkStringArray,
1916
+ [Enums.FastNumberU8DictStatic] = encodeBulkNumberU8DictStatic,
1917
+ [Enums.FastNumberI32DictStatic] = encodeBulkNumberI32DictStatic,
1918
+ [Enums.FastNumberF32DictStatic] = encodeBulkNumberF32DictStatic,
1919
+ [Enums.FastBoolDictStatic] = encodeBulkBoolDictStatic,
1920
+ [Enums.FastStringDictStatic]= encodeBulkStringDictStatic,
1921
+ [Enums.FastNumberU8Dict] = encodeBulkNumberU8Dict,
1922
+ [Enums.FastNumberI32Dict] = encodeBulkNumberI32Dict,
1923
+ [Enums.FastNumberF32Dict] = encodeBulkNumberF32Dict,
1924
+ [Enums.FastBoolDict] = encodeBulkBoolDict,
1925
+ [Enums.FastStringDict] = encodeBulkStringDict,
1926
+ }
1927
+
1928
+ decodeData = {
1929
+ [Enums.Start] = function() end,
1930
+ [Enums.NumberU4] = decodeNumberU8,
1931
+ [Enums.NumberU8] = decodeNumberU8,
1932
+ [Enums.NumberU16] = decodeNumberU16,
1933
+ [Enums.NumberU32] = decodeNumberU32,
1934
+ [Enums.NumberI8] = decodeNumberI8,
1935
+ [Enums.NumberI16] = decodeNumberI16,
1936
+ [Enums.NumberI32] = decodeNumberI32,
1937
+ [Enums.NumberF16] = decodeNumberF16,
1938
+ [Enums.NumberF32] = decodeNumberF32,
1939
+ [Enums.NumberF64] = decodeNumberF64,
1940
+
1941
+ [Enums.CFrameFX8] = decodeCFrameFX8,
1942
+ [Enums.CFrameI16FX16] = decodeCFrameI16FX16,
1943
+ [Enums.CFrameFX16] = decodeCFrameFX16,
1944
+ [Enums.CFrameF16] = decodeCFrameF16,
1945
+ [Enums.CFrameF32Aligned] = decodeCFrameF32Aligned,
1946
+ [Enums.CFrameF32FX16] = decodeCFrameF32FX16,
1947
+ [Enums.CFrameF32] = decodeCFrameF32,
1948
+
1949
+ [Enums.Vector3FX8] = decodeVector3FX8,
1950
+ [Enums.Vector3I16] = decodeVector3I16,
1951
+ [Enums.Vector3FX16] = decodeVector3FX16,
1952
+ [Enums.Vector3F16] = decodeVector3F16,
1953
+ [Enums.Vector3F32] = decodeVector3F32,
1954
+
1955
+ [Enums.Vector2FX8] = decodeVector2FX8,
1956
+ [Enums.Vector2I16] = decodeVector2I16,
1957
+ [Enums.Vector2FX16] = decodeVector2FX16,
1958
+ [Enums.Vector2F16] = decodeVector2F16,
1959
+ [Enums.Vector2F32] = decodeVector2F32,
1960
+
1961
+ [Enums.String] = decodeString,
1962
+ [Enums.StringLong] = decodeStringLong,
1963
+ [Enums.Color3] = decodeColor,
1964
+ [Enums.BrickColor] = decodeBrickColor,
1965
+ [Enums.Boolean] = decodeBool,
1966
+ [Enums.Nil] = decodeNil,
1967
+ [Enums.Buffer] = decodeBuffer,
1968
+ [Enums.EnumItem] = decodeEnumItem,
1969
+ [Enums.Instance] = decodeInstance,
1970
+ [Enums.Player] = decodePlayer,
1971
+ [Enums.DateTime32] = decodeDateTime32,
1972
+ [Enums.DateTime64] = decodeDateTime64,
1973
+ [Enums.TweenInfo] = decodeTweenInfo,
1974
+ [Enums.ColorSequence] = decodeColorSequence,
1975
+ [Enums.NumberSequence] = decodeNumberSequence,
1976
+ [Enums.NumberRange] = decodeNumberRange,
1977
+ [Enums.UDim] = decodeUDim,
1978
+ [Enums.UDim2] = decodeUDim2,
1979
+ [Enums.Region3] = decodeRegion3,
1980
+ [Enums.PhysicalProperties] = decodePhysicalProperties,
1981
+ [Enums.Rect] = decodeRect,
1982
+
1983
+ [Enums.Any] = decodeAny,
1984
+ [Enums.Optional] = decodeOptional,
1985
+ [Enums.Union] = decodeUnion,
1986
+ [Enums.Literal] = decodeLiteral,
1987
+ [Enums.ArrayStatic] = decodeArrayStatic,
1988
+ [Enums.Array] = decodeArray,
1989
+ [Enums.ArrayDynamic] = decodeArrayDynamic,
1990
+ [Enums.DictStatic] = decodeDictStatic,
1991
+ [Enums.Dict] = decodeDict,
1992
+ [Enums.DictDynamic] = decodeDictDynamic,
1993
+
1994
+ [Enums.FastNumberU4Array] = decodeBulkNumberU4Array,
1995
+ [Enums.FastNumberU8Array] = decodeBulkNumberU8Array,
1996
+ [Enums.FastNumberI32Array] = decodeBulkNumberI32Array,
1997
+ [Enums.FastNumberF32Array] = decodeBulkNumberF32Array,
1998
+ [Enums.FastBoolArray] = decodeBulkBoolArray,
1999
+ [Enums.FastStringArray] = decodeBulkStringArray,
2000
+ [Enums.FastNumberU8DictStatic] = decodeBulkNumberU8DictStatic,
2001
+ [Enums.FastNumberI32DictStatic] = decodeBulkNumberI32DictStatic,
2002
+ [Enums.FastNumberF32DictStatic] = decodeBulkNumberF32DictStatic,
2003
+ [Enums.FastBoolDictStatic] = decodeBulkBoolDictStatic,
2004
+ [Enums.FastStringDictStatic] = decodeBulkStringDictStatic,
2005
+ [Enums.FastNumberU8Dict] = decodeBulkNumberU8Array,
2006
+ [Enums.FastNumberI32Dict] = decodeBulkNumberI32Array,
2007
+ [Enums.FastNumberF32Dict] = decodeBulkNumberF32Array,
2008
+ [Enums.FastBoolDict] = decodeBulkBoolArray,
2009
+ [Enums.FastStringDict] = decodeBulkStringArray,
2010
+ }
2011
+
2012
+ local Serialize = {
2013
+ encode = encodeData,
2014
+ decode = decodeData,
2015
+ enumItems = enumItems,
2016
+ enumItemsByEnum = enumItemsByEnum,
2017
+ }
2018
+
2019
+
2020
+ return Serialize