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,20 @@
1
+ local FormatNumber = { }
2
+
3
+ FormatNumber.Version = require(script.Version)
4
+
5
+ FormatNumber.Main = require(script.Main)
6
+ FormatNumber.Simple = require(script.Simple)
7
+
8
+ function FormatNumber.Abbreviate(value: number, digits: number?): string
9
+ return FormatNumber.Simple.FormatCompact(value)
10
+ end
11
+
12
+ function FormatNumber.Comma(value: number): string
13
+ return FormatNumber.Simple.Format(value, "group-on")
14
+ end
15
+
16
+ function FormatNumber.Compact(value: number): string
17
+ return FormatNumber.Simple.FormatCompact(value)
18
+ end
19
+
20
+ return FormatNumber
@@ -0,0 +1,20 @@
1
+ --!strict
2
+ -- Cluaupp FormatNumber — typed border. Compact/Abbreviate are number -> string.
3
+
4
+ --[=[
5
+ @class FormatNumber
6
+ Abbreviate, Comma, and Compact number formatters.
7
+ ]=]
8
+
9
+ local Impl = require(script._impl)
10
+
11
+ export type FormatNumber = {
12
+ Abbreviate: (value: number, digits: number?) -> string,
13
+ Comma: (value: number) -> string,
14
+ Compact: (value: number) -> string,
15
+ Main: typeof(Impl.Main),
16
+ Simple: typeof(Impl.Simple),
17
+ Version: typeof(Impl.Version),
18
+ }
19
+
20
+ return Impl :: FormatNumber
@@ -0,0 +1,84 @@
1
+ --!strict
2
+ --!nolint LocalUnused
3
+ --!nolint LocalShadow
4
+ local task = nil -- Disable usage of Roblox's task scheduler
5
+
6
+ --[[
7
+ Outputs the current external time as a state object.
8
+ ]]
9
+
10
+ local Package = script.Parent.Parent
11
+ local Types = require(Package.Types)
12
+ local External = require(Package.External)
13
+ -- Graph
14
+ local change = require(Package.Graph.change)
15
+ -- Utility
16
+ local nicknames = require(Package.Utility.nicknames)
17
+
18
+ type ExternalTime = Types.StateObject<number>
19
+
20
+ type Self = ExternalTime
21
+
22
+ local class = {}
23
+ class.type = "State"
24
+ class.kind = "ExternalTime"
25
+ class.timeliness = "lazy"
26
+ class.dependencySet = table.freeze {}
27
+ class._EXTREMELY_DANGEROUS_usedAsValue = External.lastUpdateStep()
28
+
29
+ local METATABLE = table.freeze {__index = class}
30
+
31
+ local allTimers: {Self} = {}
32
+
33
+ local function ExternalTime(
34
+ scope: Types.Scope<unknown>
35
+ ): ExternalTime
36
+ local createdAt = os.clock()
37
+ local self: Self = setmetatable(
38
+ {
39
+ createdAt = createdAt,
40
+ dependentSet = {},
41
+ lastChange = nil,
42
+ scope = scope,
43
+ validity = "invalid"
44
+ },
45
+ METATABLE
46
+ ) :: any
47
+ local destroy = function()
48
+ self.scope = nil
49
+ local index = table.find(allTimers, self)
50
+ if index ~= nil then
51
+ table.remove(allTimers, index)
52
+ end
53
+ end
54
+ self.oldestTask = destroy
55
+ nicknames[self.oldestTask] = "ExternalTime"
56
+ table.insert(scope, destroy)
57
+ table.insert(allTimers, self)
58
+ return self
59
+ end
60
+
61
+ function class._evaluate(
62
+ self: Self
63
+ ): boolean
64
+ -- While someone else could call `change()` on this object, it wouldn't be
65
+ -- idiomatic. So, since the only idiomatic time this function runs is when
66
+ -- the external update step runs, it's safe enough to assume that the result
67
+ -- has always meaningfully changed. The worst that can happen is unexpected
68
+ -- refreshing for people doing unorthodox shenanigans, which is an OK trade.
69
+ return true
70
+ end
71
+
72
+ External.bindToUpdateStep(function(
73
+ externalNow: number
74
+ ): ()
75
+ class._EXTREMELY_DANGEROUS_usedAsValue = External.lastUpdateStep()
76
+ for _, timer in allTimers do
77
+ change(timer)
78
+ end
79
+ end)
80
+
81
+ -- Do *not* freeze the class table, because it stores the shared value of all
82
+ -- external time objects, and is updated every frame because of that.
83
+ -- table.freeze(class)
84
+ return ExternalTime
@@ -0,0 +1,313 @@
1
+ --!strict
2
+ --!nolint LocalUnused
3
+ --!nolint LocalShadow
4
+ local task = nil -- Disable usage of Roblox's task scheduler
5
+
6
+ --[[
7
+ A specialised state object for following a goal state smoothly over time,
8
+ using physics to shape the motion.
9
+
10
+ https://elttob.uk/Fusion/0.3/api-reference/animation/types/spring/
11
+ ]]
12
+
13
+ local Package = script.Parent.Parent
14
+ local Types = require(Package.Types)
15
+ local External = require(Package.External)
16
+ -- Memory
17
+ local checkLifetime = require(Package.Memory.checkLifetime)
18
+ -- Graph
19
+ local depend = require(Package.Graph.depend)
20
+ local change = require(Package.Graph.change)
21
+ local evaluate = require(Package.Graph.evaluate)
22
+ -- State
23
+ local castToState = require(Package.State.castToState)
24
+ local peek = require(Package.State.peek)
25
+ -- Animation
26
+ local ExternalTime = require(Package.Animation.ExternalTime)
27
+ local Stopwatch = require(Package.Animation.Stopwatch)
28
+ local packType = require(Package.Animation.packType)
29
+ local unpackType = require(Package.Animation.unpackType)
30
+ local springCoefficients = require(Package.Animation.springCoefficients)
31
+ -- Utility
32
+ local nicknames = require(Package.Utility.nicknames)
33
+
34
+ local EPSILON = 0.00001
35
+
36
+ type Self<T> = Types.Spring<T> & {
37
+ _activeDamping: number,
38
+ _activeGoal: T,
39
+ _activeLatestP: {number},
40
+ _activeLatestV: {number},
41
+ _activeNumSprings: number,
42
+ _activeSpeed: number,
43
+ _activeStartP: {number},
44
+ _activeStartV: {number},
45
+ _activeTargetP: {number},
46
+ _activeType: string,
47
+ _speed: Types.UsedAs<number>,
48
+ _damping: Types.UsedAs<number>,
49
+ _goal: Types.UsedAs<T>,
50
+ _stopwatch: Stopwatch.Stopwatch
51
+ }
52
+
53
+ local class = {}
54
+ class.type = "State"
55
+ class.kind = "Spring"
56
+ class.timeliness = "eager"
57
+
58
+ local METATABLE = table.freeze {__index = class}
59
+
60
+ local function Spring<T>(
61
+ scope: Types.Scope<unknown>,
62
+ goal: Types.UsedAs<T>,
63
+ speed: Types.UsedAs<number>?,
64
+ damping: Types.UsedAs<number>?
65
+ ): Types.Spring<T>
66
+ local createdAt = os.clock()
67
+
68
+ local goalState = castToState(goal)
69
+ local stopwatch = nil
70
+ if goalState ~= nil then
71
+ stopwatch = Stopwatch(scope, ExternalTime(scope))
72
+ stopwatch:unpause()
73
+ end
74
+
75
+ local speed = speed or 10
76
+ local damping = damping or 1
77
+
78
+ local self: Self<T> = setmetatable(
79
+ {
80
+ createdAt = createdAt,
81
+ dependencySet = {},
82
+ dependentSet = {},
83
+ lastChange = nil,
84
+ scope = scope,
85
+ validity = "invalid",
86
+ _activeDamping = -1,
87
+ _activeGoal = nil,
88
+ _activeLatestP = {},
89
+ _activeLatestV = {},
90
+ _activeNumSprings = 0,
91
+ _activeSpeed = -1,
92
+ _activeStartP = {},
93
+ _activeStartV = {},
94
+ _activeTargetP = {},
95
+ _activeType = "",
96
+ _damping = damping,
97
+ _EXTREMELY_DANGEROUS_usedAsValue = peek(goal),
98
+ _goal = goal,
99
+ _speed = speed,
100
+ _stopwatch = stopwatch
101
+ },
102
+ METATABLE
103
+ ) :: any
104
+ local destroy = function()
105
+ self.scope = nil
106
+ for dependency in pairs(self.dependencySet) do
107
+ dependency.dependentSet[self] = nil
108
+ end
109
+ end
110
+ self.oldestTask = destroy
111
+ nicknames[self.oldestTask] = "Spring"
112
+ table.insert(scope, destroy)
113
+
114
+ if goalState ~= nil then
115
+ checkLifetime.bOutlivesA(
116
+ scope, self.oldestTask,
117
+ goalState.scope, goalState.oldestTask,
118
+ checkLifetime.formatters.animationGoal
119
+ )
120
+ end
121
+ local speedState = castToState(speed)
122
+ if speedState ~= nil then
123
+ checkLifetime.bOutlivesA(
124
+ scope, self.oldestTask,
125
+ speedState.scope, speedState.oldestTask,
126
+ checkLifetime.formatters.parameter, "speed"
127
+ )
128
+ end
129
+ local dampingState = castToState(damping)
130
+ if dampingState ~= nil then
131
+ checkLifetime.bOutlivesA(
132
+ scope, self.oldestTask,
133
+ dampingState.scope, dampingState.oldestTask,
134
+ checkLifetime.formatters.parameter, "damping"
135
+ )
136
+ end
137
+
138
+ -- Eagerly evaluated objects need to evaluate themselves so that they're
139
+ -- valid at all times.
140
+ evaluate(self, true)
141
+
142
+ return self
143
+ end
144
+
145
+ function class.addVelocity<T>(
146
+ self: Self<T>,
147
+ deltaValue: T
148
+ ): ()
149
+ evaluate(self, false) -- ensure the _active params are up to date
150
+ local deltaType = typeof(deltaValue)
151
+ if deltaType ~= self._activeType then
152
+ External.logError("springTypeMismatch", nil, deltaType, self._activeType)
153
+ end
154
+ local newStartV = unpackType(deltaValue, deltaType)
155
+ for index, velocity in self._activeLatestV do
156
+ newStartV[index] += velocity
157
+ end
158
+ self._activeStartP = table.clone(self._activeLatestP)
159
+ self._activeStartV = newStartV
160
+ self._stopwatch:zero()
161
+ self._stopwatch:unpause()
162
+ change(self)
163
+ end
164
+
165
+ function class.setPosition<T>(
166
+ self: Self<T>,
167
+ newValue: T
168
+ ): ()
169
+ evaluate(self, false) -- ensure the _active params are up to date
170
+ local newType = typeof(newValue)
171
+ if newType ~= self._activeType then
172
+ External.logError("springTypeMismatch", nil, newType, self._activeType)
173
+ end
174
+ self._activeStartP = unpackType(newValue, newType)
175
+ self._activeStartV = table.clone(self._activeLatestV)
176
+ self._stopwatch:zero()
177
+ self._stopwatch:unpause()
178
+ change(self)
179
+ end
180
+
181
+ function class.setVelocity<T>(
182
+ self: Self<T>,
183
+ newValue: T
184
+ ): ()
185
+ evaluate(self, false) -- ensure the _active params are up to date
186
+ local newType = typeof(newValue)
187
+ if newType ~= self._activeType then
188
+ External.logError("springTypeMismatch", nil, newType, self._activeType)
189
+ end
190
+ self._activeStartP = table.clone(self._activeLatestP)
191
+ self._activeStartV = unpackType(newValue, newType)
192
+ self._stopwatch:zero()
193
+ self._stopwatch:unpause()
194
+ change(self)
195
+ end
196
+
197
+ function class._evaluate<T>(
198
+ self: Self<T>
199
+ ): boolean
200
+ local goal = castToState(self._goal)
201
+ -- Allow non-state goals to pass through transparently.
202
+ if goal == nil then
203
+ self._EXTREMELY_DANGEROUS_usedAsValue = self._goal :: T
204
+ return false
205
+ end
206
+ -- depend(self, goal)
207
+ local nextFrameGoal = peek(goal)
208
+ -- Protect against NaN goals.
209
+ if nextFrameGoal ~= nextFrameGoal then
210
+ External.logWarn("springNanGoal")
211
+ return false
212
+ end
213
+ local nextFrameGoalType = typeof(nextFrameGoal)
214
+ local discontinuous = nextFrameGoalType ~= self._activeType
215
+
216
+ local stopwatch = self._stopwatch :: Stopwatch.Stopwatch
217
+ local elapsed = peek(stopwatch)
218
+ depend(self, stopwatch)
219
+
220
+ local oldValue = self._EXTREMELY_DANGEROUS_usedAsValue
221
+ local newValue: T
222
+
223
+ if discontinuous then
224
+ -- Propagate changes in type instantly throughout the whole reactive
225
+ -- graph, even if simulation is logically one frame behind, because it
226
+ -- makes the whole graph behave more consistently.
227
+ newValue = nextFrameGoal
228
+ elseif elapsed <= 0 then
229
+ newValue = oldValue
230
+ else
231
+ -- Calculate spring motion.
232
+ -- IMPORTANT: use the parameters from last frame, not this frame. We're
233
+ -- integrating the motion that happened over the last frame, after all.
234
+ -- The stopwatch will have captured the length of time needed correctly.
235
+ local posPos, posVel, velPos, velVel = springCoefficients(
236
+ elapsed,
237
+ self._activeDamping,
238
+ self._activeSpeed
239
+ )
240
+ local isMoving = false
241
+ for index = 1, self._activeNumSprings do
242
+ local startP = self._activeStartP[index]
243
+ local targetP = self._activeTargetP[index]
244
+ local startV = self._activeStartV[index]
245
+ local startD = startP - targetP
246
+ local latestD = startD * posPos + startV * posVel
247
+ local latestV = startD * velPos + startV * velVel
248
+ if latestD ~= latestD or latestV ~= latestV then
249
+ External.logWarn("springNanMotion")
250
+ latestD, latestV = 0, 0
251
+ end
252
+ if math.abs(latestD) > EPSILON or math.abs(latestV) > EPSILON then
253
+ isMoving = true
254
+ end
255
+ local latestP = latestD + targetP
256
+ self._activeLatestP[index] = latestP
257
+ self._activeLatestV[index] = latestV
258
+ end
259
+ -- Sleep and snap to goal if the motion has decayed to a negligible amount.
260
+ if not isMoving then
261
+ for index = 1, self._activeNumSprings do
262
+ self._activeLatestP[index] = self._activeTargetP[index]
263
+ end
264
+ -- TODO: figure out how to do sleeping correctly for single frame
265
+ -- changes
266
+ -- stopwatch:pause()
267
+ -- stopwatch:zero()
268
+ end
269
+ -- Pack springs into final value.
270
+ newValue = packType(self._activeLatestP, self._activeType) :: any
271
+ end
272
+
273
+ -- Reconfigure spring when any of its parameters are changed.
274
+ -- This should happen after integrating the last frame's motion.
275
+ -- NOTE: don't need to add a dependency on these objects! they do not cause
276
+ -- a spring to wake from sleep, so the stopwatch dependency is sufficient.
277
+ local nextFrameSpeed = peek(self._speed) :: number
278
+ local nextFrameDamping = peek(self._damping) :: number
279
+ if
280
+ discontinuous or
281
+ nextFrameGoal ~= self._activeGoal or
282
+ nextFrameSpeed ~= self._activeSpeed or
283
+ nextFrameDamping ~= self._activeDamping
284
+ then
285
+ self._activeTargetP = unpackType(nextFrameGoal, nextFrameGoalType)
286
+ self._activeNumSprings = #self._activeTargetP
287
+ if discontinuous then
288
+ self._activeStartP = table.clone(self._activeTargetP)
289
+ self._activeLatestP = table.clone(self._activeTargetP)
290
+ self._activeStartV = table.create(self._activeNumSprings, 0)
291
+ self._activeLatestV = table.create(self._activeNumSprings, 0)
292
+ else
293
+ self._activeStartP = table.clone(self._activeLatestP)
294
+ self._activeStartV = table.clone(self._activeLatestV)
295
+ end
296
+ self._activeType = nextFrameGoalType
297
+ self._activeGoal = nextFrameGoal
298
+ self._activeDamping = nextFrameDamping
299
+ self._activeSpeed = nextFrameSpeed
300
+ stopwatch:zero()
301
+ stopwatch:unpause()
302
+ end
303
+
304
+ -- Push update and check for similarity.
305
+ -- Don't need to use the similarity test here because this code doesn't
306
+ -- deal with tables, and NaN is already guarded against, so the similarity
307
+ -- test doesn't actually add any new safety here.
308
+ self._EXTREMELY_DANGEROUS_usedAsValue = newValue
309
+ return oldValue ~= newValue
310
+ end
311
+
312
+ table.freeze(class)
313
+ return Spring :: Types.SpringConstructor
@@ -0,0 +1,128 @@
1
+ --!strict
2
+ --!nolint LocalUnused
3
+ --!nolint LocalShadow
4
+ local task = nil -- Disable usage of Roblox's task scheduler
5
+
6
+ --[[
7
+ State object for measuring time since an event using a reference timer.
8
+
9
+ TODO: this should not be exposed to users until it has a proper reactive API
10
+ surface
11
+ ]]
12
+
13
+ local Package = script.Parent.Parent
14
+ local Types = require(Package.Types)
15
+ -- Memory
16
+ local checkLifetime = require(Package.Memory.checkLifetime)
17
+ -- Graph
18
+ local depend = require(Package.Graph.depend)
19
+ local change = require(Package.Graph.change)
20
+ -- State
21
+ local peek = require(Package.State.peek)
22
+ -- Utility
23
+ local nicknames = require(Package.Utility.nicknames)
24
+
25
+ export type Stopwatch = Types.StateObject<number> & {
26
+ zero: (Stopwatch) -> (),
27
+ pause: (Stopwatch) -> (),
28
+ unpause: (Stopwatch) -> ()
29
+ }
30
+
31
+ type Self = Stopwatch & {
32
+ _measureTimeSince: number,
33
+ _playing: boolean,
34
+ _timer: Types.StateObject<number>
35
+ }
36
+
37
+ local class = {}
38
+ class.type = "State"
39
+ class.kind = "Stopwatch"
40
+ class.timeliness = "lazy"
41
+
42
+ local METATABLE = table.freeze {__index = class}
43
+
44
+ local function Stopwatch(
45
+ scope: Types.Scope<unknown>,
46
+ timer: Types.StateObject<number>
47
+ ): Stopwatch
48
+ local createdAt = os.clock()
49
+ local self: Self = setmetatable(
50
+ {
51
+ awake = true,
52
+ createdAt = createdAt,
53
+ dependencySet = {},
54
+ dependentSet = {},
55
+ lastChange = nil,
56
+ scope = scope,
57
+ validity = "invalid",
58
+ _EXTREMELY_DANGEROUS_usedAsValue = 0,
59
+ _measureTimeSince = 0, -- this should be set on unpause
60
+ _playing = false,
61
+ _timer = timer
62
+ },
63
+ METATABLE
64
+ ) :: any
65
+ local destroy = function()
66
+ self.scope = nil
67
+ end
68
+ self.oldestTask = destroy
69
+ nicknames[self.oldestTask] = "Stopwatch"
70
+ table.insert(scope, destroy)
71
+
72
+ checkLifetime.bOutlivesA(
73
+ scope, self.oldestTask,
74
+ timer.scope, timer.oldestTask,
75
+ checkLifetime.formatters.parameter, "timer"
76
+ )
77
+ depend(self, timer)
78
+ return self
79
+ end
80
+
81
+ function class.zero(
82
+ self: Self
83
+ ): ()
84
+ local newTimepoint = peek(self._timer)
85
+ if newTimepoint ~= self._measureTimeSince then
86
+ self._measureTimeSince = newTimepoint
87
+ self._EXTREMELY_DANGEROUS_usedAsValue = 0
88
+ change(self)
89
+ end
90
+ end
91
+
92
+ function class.pause(
93
+ self: Self
94
+ ): ()
95
+ if self._playing == true then
96
+ self._playing = false
97
+ change(self)
98
+ end
99
+ end
100
+
101
+ function class.unpause(
102
+ self: Self
103
+ ): ()
104
+ if self._playing == false then
105
+ self._playing = true
106
+ self._measureTimeSince = peek(self._timer) - self._EXTREMELY_DANGEROUS_usedAsValue
107
+ change(self)
108
+ end
109
+ end
110
+
111
+ function class._evaluate(
112
+ self: Self
113
+ ): boolean
114
+ if self._playing then
115
+ depend(self, self._timer)
116
+ local currentTime = peek(self._timer)
117
+ local oldValue = self._EXTREMELY_DANGEROUS_usedAsValue
118
+ local newValue = currentTime - self._measureTimeSince
119
+ self._EXTREMELY_DANGEROUS_usedAsValue = newValue
120
+ return oldValue ~= newValue
121
+ else
122
+ return false
123
+ end
124
+
125
+ end
126
+
127
+ table.freeze(class)
128
+ return Stopwatch