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,886 @@
1
+ local packages = script.Parent.Packages
2
+
3
+ const Signal = require(packages.signal)
4
+
5
+ const Path = require(script.Parent.Path)
6
+ const Enums = require(script.Parent.Enums)
7
+ const PackageEnum = require(script.Parent.Enum)
8
+
9
+ type SignalT = typeof(Signal.new())
10
+ type AnyConnection = RBXScriptConnection
11
+ type TypedSignal<T...> = {
12
+ Connect: (self: TypedSignal<T...>, fn: (T...) -> ()) -> AnyConnection,
13
+ Once: (self: TypedSignal<T...>, fn: (T...) -> ()) -> AnyConnection,
14
+ Wait: (self: TypedSignal<T...>) -> T...,
15
+ }
16
+
17
+ const Data = {}
18
+
19
+ --[=[
20
+ @class Data
21
+ Per-player data instance. Writable on the server, read-only on the client.
22
+ Use `Get()` for merged reads and `GetPersisted()` for saved ProfileStore values.
23
+ ]=]
24
+ const ROOT_KEY = {}
25
+ const WRITABLE_KEY = {}
26
+ const STRICT_PATHS_KEY = {}
27
+ const AUTO_CREATE_KEY = {}
28
+ const CHANGED_MAP_KEY = {}
29
+ const INDEX_CHANGED_MAP_KEY = {}
30
+ const ARRAY_INSERTED_MAP_KEY = {}
31
+ const ARRAY_REMOVED_MAP_KEY = {}
32
+ const TRANSIENT_KEY = {}
33
+
34
+ export type DataPath = Path.Path
35
+ export type DataPathLike = Path.Path | Path.PathToken<never>
36
+ export type DataOptions<T = never> = {
37
+ StrictPaths: boolean?,
38
+ AutoCreateMissingTables: boolean?,
39
+ Template: T?,
40
+ }
41
+ export type OrderedListOrder = typeof(PackageEnum.OrderList.Asc) | typeof(PackageEnum.OrderList.Desc) | "asc" | "desc"
42
+ export type OrderedListOptions = {
43
+ key: string,
44
+ order: OrderedListOrder?,
45
+ limit: number?,
46
+ }
47
+ export type OrderedListEntry<V> = {
48
+ index: number,
49
+ value: V,
50
+ priority: any,
51
+ }
52
+ type TypedPath<V> = Path.PathToken<V>
53
+ type ChangedSignal<V> = TypedSignal<V, V>
54
+ type IndexChangedSignal<V> = TypedSignal<string | number, V, V>
55
+ type ArrayInsertedSignal<V> = TypedSignal<number, V>
56
+ type ArrayRemovedSignal<V> = TypedSignal<number, V>
57
+ type DataCore<T> = {
58
+ Changed: SignalT,
59
+ Destroyed: boolean,
60
+ Typed: <V>(self: DataCore<T>, path: DataPathLike) -> TypedPath<V>,
61
+ Get: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike?) -> V,
62
+ GetPersisted: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike?) -> V,
63
+ GetTransient: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike?) -> V?,
64
+ HasTransient: (self: DataCore<T>, path: DataPathLike?) -> boolean,
65
+ Set: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike, value: V) -> (),
66
+ SetTransient: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike, value: V) -> (),
67
+ Update: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike, fn: (V) -> V) -> V,
68
+ UpdateTransient: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike, fn: (V) -> V) -> V,
69
+ ClearTransient: (self: DataCore<T>, path: DataPathLike?) -> (),
70
+ ArrayInsert: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike, value: V, index: number?) -> (),
71
+ ArrayInsertTransient: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike, value: V, index: number?) -> (),
72
+ ArrayRemove: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike, index: number) -> V,
73
+ ArrayRemoveTransient: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike, index: number) -> V,
74
+ GetOrderedList: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike, options: OrderedListOptions) -> { OrderedListEntry<V> },
75
+ GetOrderedListWithPriority: <V>(
76
+ self: DataCore<T>,
77
+ path: TypedPath<{ V }> | DataPathLike,
78
+ key: string,
79
+ order: OrderedListOrder?
80
+ ) -> { OrderedListEntry<V> },
81
+ GetChangedSignal: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike) -> ChangedSignal<V>,
82
+ GetPathChangedSignal: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike) -> ChangedSignal<V>,
83
+ GetIndexChangedSignal: <V>(self: DataCore<T>, path: TypedPath<V> | DataPathLike) -> IndexChangedSignal<V>,
84
+ GetArrayInsertedSignal: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike) -> ArrayInsertedSignal<V>,
85
+ GetArrayRemovedSignal: <V>(self: DataCore<T>, path: TypedPath<{ V }> | DataPathLike) -> ArrayRemovedSignal<V>,
86
+ Destroy: (self: DataCore<T>) -> (),
87
+ }
88
+ export type Data<T> = DataCore<T>
89
+
90
+ const READ_ONLY_ERROR = "DataService: Data on the client is read-only. Mutations are server-driven."
91
+ const INVALID_PATH_ERROR = "DataService: invalid data path %q"
92
+
93
+ const pathToString = function(path: DataPath): string
94
+ if #path == 0 then
95
+ return "<root>"
96
+ end
97
+ local parts = table.create(#path)
98
+ for i, segment in path do
99
+ parts[i] = tostring(segment)
100
+ end
101
+ return table.concat(parts, ".")
102
+ end
103
+
104
+ const normalizePath = function(pathLike: DataPathLike?, allowNil: boolean?): DataPath?
105
+ local resolved = Path.toArray(pathLike)
106
+ if resolved == nil then
107
+ if allowNil then
108
+ return nil
109
+ end
110
+ error("DataService: path is required")
111
+ end
112
+ if not Path.validate(resolved) then
113
+ error(string.format(INVALID_PATH_ERROR, pathToString(resolved)))
114
+ end
115
+ return resolved
116
+ end
117
+
118
+ const pathFromKey = function(key: string): DataPath
119
+ if key == "" then
120
+ return {}
121
+ end
122
+ local path = table.create(4)
123
+ for part in string.gmatch(key, "[^\0]+") do
124
+ local kind = string.sub(part, 1, 1)
125
+ local value = string.sub(part, 3)
126
+ if kind == "s" then
127
+ path[#path + 1] = value
128
+ elseif kind == "n" then
129
+ path[#path + 1] = tonumber(value)
130
+ end
131
+ end
132
+ return path
133
+ end
134
+
135
+ const isDescendantPath = function(childKey: string, parentKey: string): boolean
136
+ if parentKey == "" then
137
+ return childKey ~= ""
138
+ end
139
+ return childKey == parentKey or string.sub(childKey, 1, #parentKey + 1) == parentKey .. "\0"
140
+ end
141
+
142
+ local function deepCopyTable(value: any): any
143
+ if type(value) ~= "table" then
144
+ return value
145
+ end
146
+ local out = {}
147
+ for k, v in value do
148
+ out[k] = deepCopyTable(v)
149
+ end
150
+ return out
151
+ end
152
+
153
+ const setAtPath = function(root: any, path: DataPath, value: any)
154
+ if #path == 0 then
155
+ return
156
+ end
157
+ local parent = root
158
+ for i = 1, #path - 1 do
159
+ local k = path[i]
160
+ local nextValue = rawget(parent, k)
161
+ if type(nextValue) ~= "table" then
162
+ nextValue = {}
163
+ rawset(parent, k, nextValue)
164
+ end
165
+ parent = nextValue
166
+ end
167
+ rawset(parent, path[#path], value)
168
+ end
169
+
170
+ const getPersistedAt = function(root: any, path: DataPath?): any
171
+ if not path or #path == 0 then
172
+ return root
173
+ end
174
+ local cur: any = root
175
+ for _, k in path do
176
+ if type(cur) ~= "table" then
177
+ return nil
178
+ end
179
+ cur = rawget(cur, k)
180
+ end
181
+ return cur
182
+ end
183
+
184
+ const getMergedValue = function(self: any, path: DataPath): any
185
+ local transient = self[TRANSIENT_KEY]
186
+ local key = Path.toKey(path)
187
+ local direct = transient[key]
188
+ if direct ~= nil then
189
+ return direct
190
+ end
191
+
192
+ if #path == 0 then
193
+ local persisted = self[ROOT_KEY]
194
+ local out = if type(persisted) == "table" then deepCopyTable(persisted) else {}
195
+ for tKey, tVal in transient do
196
+ setAtPath(out, pathFromKey(tKey), tVal)
197
+ end
198
+ return out
199
+ end
200
+
201
+ local persisted = getPersistedAt(self[ROOT_KEY], path)
202
+ local hasDescendant = false
203
+ for tKey in transient do
204
+ if isDescendantPath(tKey, key) then
205
+ hasDescendant = true
206
+ break
207
+ end
208
+ end
209
+ if not hasDescendant then
210
+ return persisted
211
+ end
212
+
213
+ local out = if type(persisted) == "table" then deepCopyTable(persisted) else {}
214
+ for tKey, tVal in transient do
215
+ if isDescendantPath(tKey, key) then
216
+ local tPath = pathFromKey(tKey)
217
+ local relative = table.create(math.max(#tPath - #path, 0))
218
+ for i = #path + 1, #tPath do
219
+ relative[#relative + 1] = tPath[i]
220
+ end
221
+ if #relative > 0 then
222
+ setAtPath(out, relative, tVal)
223
+ end
224
+ end
225
+ end
226
+ return out
227
+ end
228
+
229
+ const copyArray = function(value: any): { any }
230
+ local out = table.create(#value)
231
+ for index, item in value do
232
+ out[index] = if type(item) == "table" then deepCopyTable(item) else item
233
+ end
234
+ return out
235
+ end
236
+
237
+ function Data.new<T>(initial: T, writable: boolean?, options: DataOptions<T>?): Data<T>
238
+ local self: any
239
+ self = {
240
+ Get = function(a, b)
241
+ local path = if a == self then b else a
242
+ return Data.Get(self, path)
243
+ end,
244
+ GetPersisted = function(a, b)
245
+ local path = if a == self then b else a
246
+ return Data.GetPersisted(self, path)
247
+ end,
248
+ GetTransient = function(a, b)
249
+ local path = if a == self then b else a
250
+ return Data.GetTransient(self, path)
251
+ end,
252
+ HasTransient = function(a, b)
253
+ local path = if a == self then b else a
254
+ return Data.HasTransient(self, path)
255
+ end,
256
+ Set = function(a, b, c)
257
+ local path = if a == self then b else a
258
+ local value = if a == self then c else b
259
+ return Data.Set(self, path, value)
260
+ end,
261
+ SetTransient = function(a, b, c)
262
+ local path = if a == self then b else a
263
+ local value = if a == self then c else b
264
+ return Data.SetTransient(self, path, value)
265
+ end,
266
+ Update = function(a, b, c)
267
+ local path = if a == self then b else a
268
+ local fn = if a == self then c else b
269
+ return Data.Update(self, path, fn)
270
+ end,
271
+ UpdateTransient = function(a, b, c)
272
+ local path = if a == self then b else a
273
+ local fn = if a == self then c else b
274
+ return Data.UpdateTransient(self, path, fn)
275
+ end,
276
+ ClearTransient = function(a, b)
277
+ local path = if a == self then b else a
278
+ return Data.ClearTransient(self, path)
279
+ end,
280
+ ArrayInsert = function(a, b, c, d)
281
+ local path = if a == self then b else a
282
+ local value = if a == self then c else b
283
+ local index = if a == self then d else c
284
+ return Data.ArrayInsert(self, path, value, index)
285
+ end,
286
+ ArrayInsertTransient = function(a, b, c, d)
287
+ local path = if a == self then b else a
288
+ local value = if a == self then c else b
289
+ local index = if a == self then d else c
290
+ return Data.ArrayInsertTransient(self, path, value, index)
291
+ end,
292
+ ArrayRemove = function(a, b, c)
293
+ local path = if a == self then b else a
294
+ local index = if a == self then c else b
295
+ return Data.ArrayRemove(self, path, index)
296
+ end,
297
+ ArrayRemoveTransient = function(a, b, c)
298
+ local path = if a == self then b else a
299
+ local index = if a == self then c else b
300
+ return Data.ArrayRemoveTransient(self, path, index)
301
+ end,
302
+ GetOrderedList = function(a, b, c)
303
+ local path = if a == self then b else a
304
+ local options = if a == self then c else b
305
+ return Data.GetOrderedList(self, path, options)
306
+ end,
307
+ GetOrderedListWithPriority = function(a, b, c, d)
308
+ local path = if a == self then b else a
309
+ local key = if a == self then c else b
310
+ local order = if a == self then d else c
311
+ return Data.GetOrderedListWithPriority(self, path, key, order)
312
+ end,
313
+ GetChangedSignal = function(a, b)
314
+ local path = if a == self then b else a
315
+ return Data.GetChangedSignal(self, path)
316
+ end,
317
+ GetPathChangedSignal = function(a, b)
318
+ local path = if a == self then b else a
319
+ return Data.GetPathChangedSignal(self, path)
320
+ end,
321
+ GetIndexChangedSignal = function(a, b)
322
+ local path = if a == self then b else a
323
+ return Data.GetIndexChangedSignal(self, path)
324
+ end,
325
+ GetArrayInsertedSignal = function(a, b)
326
+ local path = if a == self then b else a
327
+ return Data.GetArrayInsertedSignal(self, path)
328
+ end,
329
+ GetArrayRemovedSignal = function(a, b)
330
+ local path = if a == self then b else a
331
+ return Data.GetArrayRemovedSignal(self, path)
332
+ end,
333
+ Typed = function(a, b)
334
+ local path = if a == self then b else a
335
+ return Data.Typed(self, path)
336
+ end,
337
+ Destroy = function()
338
+ return Data.Destroy(self)
339
+ end,
340
+ [ROOT_KEY] = initial,
341
+ [WRITABLE_KEY] = writable ~= false,
342
+ [STRICT_PATHS_KEY] = if options and options.StrictPaths ~= nil then options.StrictPaths else true,
343
+ [AUTO_CREATE_KEY] = if options and options.AutoCreateMissingTables ~= nil then options.AutoCreateMissingTables else false,
344
+ [CHANGED_MAP_KEY] = {} :: { [string]: SignalT },
345
+ [INDEX_CHANGED_MAP_KEY] = {} :: { [string]: SignalT },
346
+ [ARRAY_INSERTED_MAP_KEY] = {} :: { [string]: SignalT },
347
+ [ARRAY_REMOVED_MAP_KEY] = {} :: { [string]: SignalT },
348
+ [TRANSIENT_KEY] = {} :: { [string]: any },
349
+ Changed = Signal.new(),
350
+ Destroyed = false,
351
+ }
352
+
353
+ return (self :: any) :: Data<T>
354
+ end
355
+
356
+ const descend = function(root: any, path: DataPath?, ensureLeaf: boolean): (any?, any?)
357
+ if not path or #path == 0 then
358
+ return nil, nil
359
+ end
360
+ local parent = root
361
+ for i = 1, #path - 1 do
362
+ local k = path[i]
363
+ local nextValue = rawget(parent, k)
364
+ if type(nextValue) ~= "table" then
365
+ if ensureLeaf then
366
+ rawset(parent, k, {})
367
+ nextValue = rawget(parent, k)
368
+ else
369
+ return nil, nil
370
+ end
371
+ end
372
+ parent = nextValue
373
+ end
374
+ return parent, path[#path]
375
+ end
376
+
377
+ --[=[
378
+ @method Get
379
+ @within Data
380
+ @param path PathToken? -- Path tipado ou array legado. Omita para a raiz merged.
381
+ @return any
382
+ Reads the merged value (persisted + transient overlay). Omit path for the full root.
383
+ ]=]
384
+ function Data:Get(path: DataPathLike?): any
385
+ local normalized = normalizePath(path, true) or {}
386
+ return getMergedValue(self, normalized)
387
+ end
388
+
389
+ --[=[
390
+ @method GetPersisted
391
+ @within Data
392
+ @tag Query
393
+ @param path PathToken?
394
+ @return any
395
+ Reads the saved ProfileStore value only (ignores transient overlay).
396
+ ]=]
397
+ function Data:GetPersisted(path: DataPathLike?): any
398
+ local normalized = normalizePath(path, true)
399
+ if not normalized or #normalized == 0 then
400
+ return self[ROOT_KEY]
401
+ end
402
+ return getPersistedAt(self[ROOT_KEY], normalized)
403
+ end
404
+
405
+ --[=[
406
+ @method GetTransient
407
+ @within Data
408
+ @tag Query
409
+ @param path PathToken?
410
+ @return any?
411
+ Reads the transient overlay at path, if present.
412
+ ]=]
413
+ function Data:GetTransient(path: DataPathLike?): any
414
+ local normalized = normalizePath(path, true) or {}
415
+ return self[TRANSIENT_KEY][Path.toKey(normalized)]
416
+ end
417
+
418
+ --[=[
419
+ @method HasTransient
420
+ @within Data
421
+ @tag Query
422
+ @param path PathToken?
423
+ @return boolean
424
+ Returns whether a transient overlay exists at or below the path.
425
+ ]=]
426
+ function Data:HasTransient(path: DataPathLike?): boolean
427
+ local normalized = normalizePath(path, true) or {}
428
+ local key = Path.toKey(normalized)
429
+ local transient = self[TRANSIENT_KEY]
430
+ if transient[key] ~= nil then
431
+ return true
432
+ end
433
+ for tKey in transient do
434
+ if isDescendantPath(tKey, key) then
435
+ return true
436
+ end
437
+ end
438
+ return false
439
+ end
440
+
441
+ --[=[
442
+ @method Typed
443
+ @within Data
444
+ @param path PathToken
445
+ @return PathToken
446
+ Type helper for stronger inference in signals and read/write calls.
447
+ ]=]
448
+ function Data:Typed(path: DataPathLike): any
449
+ return path :: any
450
+ end
451
+
452
+ function Data:_fireChanged(path: DataPath, newValue: any, oldValue: any)
453
+ if newValue == oldValue then
454
+ return
455
+ end
456
+ local key = Path.toKey(path)
457
+ local sig = self[CHANGED_MAP_KEY][key]
458
+ if sig then
459
+ sig:Fire(newValue, oldValue)
460
+ end
461
+ if #path > 0 then
462
+ local parentKey = Path.toKey(Path.parent(path))
463
+ local idx = self[INDEX_CHANGED_MAP_KEY][parentKey]
464
+ if idx then
465
+ idx:Fire(path[#path], newValue, oldValue)
466
+ end
467
+ end
468
+ end
469
+
470
+ function Data:_applySet(path: DataPath, value: any)
471
+ assert(path and #path > 0, "Data: path must be non-empty")
472
+ local parent, key = descend(self[ROOT_KEY], path, self[AUTO_CREATE_KEY])
473
+ assert(parent ~= nil and key ~= nil, string.format(INVALID_PATH_ERROR, pathToString(path)))
474
+ local old = rawget(parent, key)
475
+ if self[STRICT_PATHS_KEY] and not self[AUTO_CREATE_KEY] and old == nil and type(key) ~= "number" then
476
+ error(string.format(INVALID_PATH_ERROR, pathToString(path)))
477
+ end
478
+ rawset(parent, key, value)
479
+ Data._fireChanged(self, path, value, old)
480
+ end
481
+
482
+ function Data._applyTransientSet(self: any, path: DataPath, value: any)
483
+ local oldMerged = Data.Get(self, path)
484
+ self[TRANSIENT_KEY][Path.toKey(path)] = value
485
+ local newMerged = Data.Get(self, path)
486
+ Data._fireChanged(self, path, newMerged, oldMerged)
487
+ end
488
+
489
+ function Data._applyTransientArrayInsert(self: any, path: DataPath, value: any, index: number?)
490
+ local current = Data.Get(self, path)
491
+ local arr = if type(current) == "table" then copyArray(current) else {}
492
+ if index then
493
+ table.insert(arr, index, value)
494
+ else
495
+ table.insert(arr, value)
496
+ index = #arr
497
+ end
498
+ Data._applyTransientSet(self, path, arr)
499
+ local sig = self[ARRAY_INSERTED_MAP_KEY][Path.toKey(path)]
500
+ if sig then
501
+ sig:Fire(index, value)
502
+ end
503
+ end
504
+
505
+ function Data._applyTransientArrayRemove(self: any, path: DataPath, index: number): any
506
+ local current = Data.Get(self, path)
507
+ local arr = if type(current) == "table" then copyArray(current) else {}
508
+ local removed = table.remove(arr, index)
509
+ Data._applyTransientSet(self, path, arr)
510
+ local sig = self[ARRAY_REMOVED_MAP_KEY][Path.toKey(path)]
511
+ if sig then
512
+ sig:Fire(index, removed)
513
+ end
514
+ return removed
515
+ end
516
+
517
+ function Data._applyTransientClear(self: any, path: DataPath?)
518
+ if path then
519
+ local key = Path.toKey(path)
520
+ if self[TRANSIENT_KEY][key] == nil then
521
+ return
522
+ end
523
+ local oldMerged = Data.Get(self, path)
524
+ self[TRANSIENT_KEY][key] = nil
525
+ local newMerged = Data.Get(self, path)
526
+ Data._fireChanged(self, path, newMerged, oldMerged)
527
+ return
528
+ end
529
+
530
+ if next(self[TRANSIENT_KEY]) == nil then
531
+ return
532
+ end
533
+ table.clear(self[TRANSIENT_KEY])
534
+ end
535
+
536
+ function Data:_applyArrayInsert(path: DataPath, value: any, index: number?)
537
+ local arr = getPersistedAt(self[ROOT_KEY], path)
538
+ assert(type(arr) == "table", "Data: ArrayInsert requires an array path")
539
+ if index then
540
+ table.insert(arr, index, value)
541
+ else
542
+ table.insert(arr, value)
543
+ index = #arr
544
+ end
545
+ local sig = self[ARRAY_INSERTED_MAP_KEY][Path.toKey(path)]
546
+ if sig then
547
+ sig:Fire(index, value)
548
+ end
549
+ end
550
+
551
+ function Data:_applyArrayRemove(path: DataPath, index: number): any
552
+ local arr = getPersistedAt(self[ROOT_KEY], path)
553
+ assert(type(arr) == "table", "Data: ArrayRemove requires an array path")
554
+ local removed = table.remove(arr, index)
555
+ local sig = self[ARRAY_REMOVED_MAP_KEY][Path.toKey(path)]
556
+ if sig then
557
+ sig:Fire(index, removed)
558
+ end
559
+ return removed
560
+ end
561
+
562
+ --[=[
563
+ @method Set
564
+ @within Data
565
+ @tag Mutation
566
+ @param path PathToken
567
+ @param value any
568
+ Writes and persists to ProfileStore. **Server only.**
569
+ ]=]
570
+ function Data:Set(path: DataPathLike, value: any)
571
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
572
+ local normalized = normalizePath(path, false) :: DataPath
573
+ Data._applySet(self, normalized, value)
574
+ self.Changed:Fire(Enums.Set, normalized, value)
575
+ end
576
+
577
+ --[=[
578
+ @method SetTransient
579
+ @within Data
580
+ @tag Mutation
581
+ @param path PathToken
582
+ @param value any
583
+ Writes a transient overlay visible in `Get()` but **not saved**. **Server only.**
584
+ ]=]
585
+ function Data:SetTransient(path: DataPathLike, value: any)
586
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
587
+ local normalized = normalizePath(path, false) :: DataPath
588
+ Data._applyTransientSet(self, normalized, value)
589
+ self.Changed:Fire(Enums.SetTransient, normalized, value)
590
+ end
591
+
592
+ --[=[
593
+ @method Update
594
+ @within Data
595
+ @tag Mutation
596
+ @param path PathToken
597
+ @param fn (any) -> any
598
+ Updates the persisted value using a callback. **Server only.**
599
+ ]=]
600
+ function Data:Update(path: DataPathLike, fn: (any) -> any): any
601
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
602
+ local normalized = normalizePath(path, false) :: DataPath
603
+ local current = self:GetPersisted(normalized)
604
+ local new = fn(current)
605
+ self:Set(normalized, new)
606
+ return new
607
+ end
608
+
609
+ --[=[
610
+ @method UpdateTransient
611
+ @within Data
612
+ @tag Mutation
613
+ @param path PathToken
614
+ @param fn (any) -> any
615
+ Updates the merged value through a transient overlay. **Server only.**
616
+ ]=]
617
+ function Data:UpdateTransient(path: DataPathLike, fn: (any) -> any): any
618
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
619
+ local normalized = normalizePath(path, false) :: DataPath
620
+ local current = self:Get(normalized)
621
+ local new = fn(current)
622
+ self:SetTransient(normalized, new)
623
+ return new
624
+ end
625
+
626
+ --[=[
627
+ @method ClearTransient
628
+ @within Data
629
+ @tag Mutation
630
+ @param path PathToken?
631
+ Clears transient overlay at path, or all overlays when `path` is omitted. **Server only.**
632
+ ]=]
633
+ function Data:ClearTransient(path: DataPathLike?)
634
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
635
+ if path ~= nil then
636
+ local normalized = normalizePath(path, false) :: DataPath
637
+ Data._applyTransientClear(self, normalized)
638
+ self.Changed:Fire(Enums.ClearTransient, normalized)
639
+ return
640
+ end
641
+ Data._applyTransientClear(self, nil)
642
+ self.Changed:Fire(Enums.ClearTransient, nil)
643
+ end
644
+
645
+ --[=[
646
+ @method ArrayInsert
647
+ @within Data
648
+ @tag Mutation
649
+ @param path PathToken
650
+ @param value any
651
+ @param index number?
652
+ Inserts into a persisted array. **Server only.**
653
+ ]=]
654
+ function Data:ArrayInsert(path: DataPathLike, value: any, index: number?)
655
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
656
+ local normalized = normalizePath(path, false) :: DataPath
657
+ local arr = getPersistedAt(self[ROOT_KEY], normalized)
658
+ assert(type(arr) == "table", "Data:ArrayInsert requires an array path")
659
+ if index then
660
+ table.insert(arr, index, value)
661
+ else
662
+ table.insert(arr, value)
663
+ index = #arr
664
+ end
665
+ local sig = self[ARRAY_INSERTED_MAP_KEY][Path.toKey(normalized)]
666
+ if sig then
667
+ sig:Fire(index, value)
668
+ end
669
+ self.Changed:Fire(Enums.ArrayInsert, normalized, value, index)
670
+ end
671
+
672
+ --[=[
673
+ @method ArrayInsertTransient
674
+ @within Data
675
+ @tag Mutation
676
+ Inserts into an array through transient overlay. **Server only.**
677
+ ]=]
678
+ function Data:ArrayInsertTransient(path: DataPathLike, value: any, index: number?)
679
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
680
+ local normalized = normalizePath(path, false) :: DataPath
681
+ Data._applyTransientArrayInsert(self, normalized, value, index)
682
+ self.Changed:Fire(Enums.ArrayInsertTransient, normalized, value, index)
683
+ end
684
+
685
+ --[=[
686
+ @method ArrayRemove
687
+ @within Data
688
+ @tag Mutation
689
+ @param path PathToken
690
+ @param index number
691
+ Removes from a persisted array and returns the removed value. **Server only.**
692
+ ]=]
693
+ function Data:ArrayRemove(path: DataPathLike, index: number): any
694
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
695
+ local normalized = normalizePath(path, false) :: DataPath
696
+ local arr = getPersistedAt(self[ROOT_KEY], normalized)
697
+ assert(type(arr) == "table", "Data:ArrayRemove requires an array path")
698
+ local removed = table.remove(arr, index)
699
+ local sig = self[ARRAY_REMOVED_MAP_KEY][Path.toKey(normalized)]
700
+ if sig then
701
+ sig:Fire(index, removed)
702
+ end
703
+ self.Changed:Fire(Enums.ArrayRemove, normalized, index)
704
+ return removed
705
+ end
706
+
707
+ --[=[
708
+ @method ArrayRemoveTransient
709
+ @within Data
710
+ @tag Mutation
711
+ Removes from an array through transient overlay. **Server only.**
712
+ ]=]
713
+ function Data:ArrayRemoveTransient(path: DataPathLike, index: number): any
714
+ assert(self[WRITABLE_KEY], READ_ONLY_ERROR)
715
+ local normalized = normalizePath(path, false) :: DataPath
716
+ local removed = Data._applyTransientArrayRemove(self, normalized, index)
717
+ self.Changed:Fire(Enums.ArrayRemoveTransient, normalized, index)
718
+ return removed
719
+ end
720
+
721
+ const normalizeOrder = function(order: OrderedListOrder?): string
722
+ if order == nil then
723
+ return PackageEnum.OrderList.Desc
724
+ end
725
+ if order == PackageEnum.OrderList.Asc or order == "asc" then
726
+ return PackageEnum.OrderList.Asc
727
+ end
728
+ return PackageEnum.OrderList.Desc
729
+ end
730
+
731
+ --[=[
732
+ @method GetOrderedList
733
+ @within Data
734
+ @tag Query
735
+ @param path PathToken
736
+ @param options OrderedListOptions
737
+ @return { OrderedListEntry }
738
+ Collects and sorts table entries by `options.key`. Supports `order` and `limit`.
739
+ ]=]
740
+ function Data:GetOrderedList(path: DataPathLike, options: OrderedListOptions): { OrderedListEntry<any> }
741
+ local normalized = normalizePath(path, false) :: DataPath
742
+ local list = self:Get(normalized)
743
+ assert(type(list) == "table", "Data:GetOrderedList requires a table path")
744
+
745
+ local key = options.key
746
+ local order = normalizeOrder(options.order)
747
+ local entries = table.create(#list)
748
+
749
+ for index, item in list do
750
+ if type(item) == "table" then
751
+ entries[#entries + 1] = {
752
+ index = index,
753
+ value = item,
754
+ priority = item[key],
755
+ }
756
+ end
757
+ end
758
+
759
+ table.sort(entries, function(a, b)
760
+ local left = a.priority
761
+ local right = b.priority
762
+ if order == PackageEnum.OrderList.Desc then
763
+ return (left or 0) > (right or 0)
764
+ end
765
+ return (left or 0) < (right or 0)
766
+ end)
767
+
768
+ local limit = options.limit
769
+ if limit and limit < #entries then
770
+ local trimmed = table.create(limit)
771
+ for i = 1, limit do
772
+ trimmed[i] = entries[i]
773
+ end
774
+ return trimmed
775
+ end
776
+
777
+ return entries
778
+ end
779
+
780
+ --[=[
781
+ @method GetOrderedListWithPriority
782
+ @within Data
783
+ @tag Query
784
+ @param path PathToken
785
+ @param key string
786
+ @param order OrderedListOrder?
787
+ Shortcut for `GetOrderedList` sorted by one field. Default order: `Enum.OrderList.Desc`.
788
+ ]=]
789
+ function Data:GetOrderedListWithPriority(path: DataPathLike, key: string, order: OrderedListOrder?): { OrderedListEntry<any> }
790
+ return self:GetOrderedList(path, {
791
+ key = key,
792
+ order = order or PackageEnum.OrderList.Desc,
793
+ })
794
+ end
795
+
796
+ const ensureSignal = function(map: { [string]: SignalT }, key: string): SignalT
797
+ if not map[key] then
798
+ map[key] = Signal.new()
799
+ end
800
+ return map[key]
801
+ end
802
+
803
+ --[=[
804
+ @method GetChangedSignal
805
+ @within Data
806
+ @tag Signals
807
+ @param path PathToken
808
+ @return Signal
809
+ Fires when the merged value at path changes `(newValue, oldValue)`.
810
+ ]=]
811
+ function Data:GetChangedSignal<V>(path: TypedPath<V> | DataPathLike): ChangedSignal<V>
812
+ local normalized = normalizePath(path, false) :: DataPath
813
+ return ensureSignal(self[CHANGED_MAP_KEY], Path.toKey(normalized)) :: ChangedSignal<V>
814
+ end
815
+
816
+ --[=[
817
+ @method GetPathChangedSignal
818
+ @within Data
819
+ @tag Signals
820
+ Alias of `GetChangedSignal`.
821
+ ]=]
822
+ function Data:GetPathChangedSignal<V>(path: TypedPath<V> | DataPathLike): ChangedSignal<V>
823
+ return self:GetChangedSignal(path)
824
+ end
825
+
826
+ --[=[
827
+ @method GetIndexChangedSignal
828
+ @within Data
829
+ @tag Signals
830
+ Fires when a direct child changes `(key, newValue, oldValue)`.
831
+ ]=]
832
+ function Data:GetIndexChangedSignal<V>(path: TypedPath<V> | DataPathLike): IndexChangedSignal<V>
833
+ local normalized = normalizePath(path, false) :: DataPath
834
+ return ensureSignal(self[INDEX_CHANGED_MAP_KEY], Path.toKey(normalized)) :: IndexChangedSignal<V>
835
+ end
836
+
837
+ --[=[
838
+ @method GetArrayInsertedSignal
839
+ @within Data
840
+ @tag Signals
841
+ Fires when an item is inserted `(index, value)`.
842
+ ]=]
843
+ function Data:GetArrayInsertedSignal<V>(path: TypedPath<{ V }> | DataPathLike): ArrayInsertedSignal<V>
844
+ local normalized = normalizePath(path, false) :: DataPath
845
+ return ensureSignal(self[ARRAY_INSERTED_MAP_KEY], Path.toKey(normalized)) :: ArrayInsertedSignal<V>
846
+ end
847
+
848
+ --[=[
849
+ @method GetArrayRemovedSignal
850
+ @within Data
851
+ @tag Signals
852
+ Fires when an item is removed `(index, removedValue)`.
853
+ ]=]
854
+ function Data:GetArrayRemovedSignal<V>(path: TypedPath<{ V }> | DataPathLike): ArrayRemovedSignal<V>
855
+ local normalized = normalizePath(path, false) :: DataPath
856
+ return ensureSignal(self[ARRAY_REMOVED_MAP_KEY], Path.toKey(normalized)) :: ArrayRemovedSignal<V>
857
+ end
858
+
859
+ --[=[
860
+ @method Destroy
861
+ @within Data
862
+ @tag Lifecycle
863
+ Destroys internal signals and clears transient state.
864
+ ]=]
865
+ function Data:Destroy()
866
+ if self.Destroyed then
867
+ return
868
+ end
869
+ self.Destroyed = true
870
+ table.clear(self[TRANSIENT_KEY])
871
+ for _, s in self[CHANGED_MAP_KEY] do
872
+ s:Destroy()
873
+ end
874
+ for _, s in self[INDEX_CHANGED_MAP_KEY] do
875
+ s:Destroy()
876
+ end
877
+ for _, s in self[ARRAY_INSERTED_MAP_KEY] do
878
+ s:Destroy()
879
+ end
880
+ for _, s in self[ARRAY_REMOVED_MAP_KEY] do
881
+ s:Destroy()
882
+ end
883
+ self.Changed:Destroy()
884
+ end
885
+
886
+ return Data