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.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/bin/cluau.js +4 -0
- package/bin/cluaupp.js +4 -0
- package/docs/README.md +20 -0
- package/docs/architecture.md +110 -0
- package/docs/cli.md +69 -0
- package/docs/comparison.md +37 -0
- package/docs/config.md +31 -0
- package/docs/cpp-advanced.md +71 -0
- package/docs/cpp-const.md +52 -0
- package/docs/cpp-organization.md +61 -0
- package/docs/cpp-safety.md +58 -0
- package/docs/cpp-types.md +66 -0
- package/docs/getting-started.md +169 -0
- package/docs/intro.md +37 -0
- package/docs/libraries.md +77 -0
- package/docs/roblox-api.md +81 -0
- package/docs/syntax.md +131 -0
- package/include/cluaupp/datatypes.hpp +581 -0
- package/include/cluaupp/generated/enums.hpp +4920 -0
- package/include/cluaupp/generated/instances.hpp +12489 -0
- package/include/cluaupp/libs/chrono.hpp +26 -0
- package/include/cluaupp/libs/cmdr.hpp +16 -0
- package/include/cluaupp/libs/dataservice.hpp +141 -0
- package/include/cluaupp/libs/display.hpp +13 -0
- package/include/cluaupp/libs/ezvisual.hpp +18 -0
- package/include/cluaupp/libs/formatnumber.hpp +15 -0
- package/include/cluaupp/libs/fusion.hpp +41 -0
- package/include/cluaupp/libs/iris.hpp +40 -0
- package/include/cluaupp/libs/janitor.hpp +35 -0
- package/include/cluaupp/libs/math.hpp +14 -0
- package/include/cluaupp/libs/module3d.hpp +25 -0
- package/include/cluaupp/libs/net.hpp +42 -0
- package/include/cluaupp/libs/promise.hpp +30 -0
- package/include/cluaupp/libs/spring.hpp +18 -0
- package/include/cluaupp/libs/statemachine.hpp +19 -0
- package/include/cluaupp/libs/stickybillboard.hpp +14 -0
- package/include/cluaupp/libs/topbarplus.hpp +29 -0
- package/include/cluaupp/libs/twinkle.hpp +15 -0
- package/include/cluaupp/libs/vfx.hpp +13 -0
- package/include/cluaupp/libs.hpp +25 -0
- package/include/cluaupp/roblox.hpp +28 -0
- package/package.json +65 -0
- package/runtime/ArrayIndexer/init.luau +144 -0
- package/runtime/Chrono/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/Client/Player.luau +113 -0
- package/runtime/Chrono/Client/Receiver.luau +395 -0
- package/runtime/Chrono/Client/Replicate.luau +333 -0
- package/runtime/Chrono/Client/Sender.luau +205 -0
- package/runtime/Chrono/LICENSE +21 -0
- package/runtime/Chrono/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/Server/Player.luau +141 -0
- package/runtime/Chrono/Server/Receiver.luau +287 -0
- package/runtime/Chrono/Server/Replicate.luau +415 -0
- package/runtime/Chrono/Server/Sender.luau +306 -0
- package/runtime/Chrono/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/Shared/Bin.luau +31 -0
- package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/Shared/Config.luau +264 -0
- package/runtime/Chrono/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/Shared/Events.luau +39 -0
- package/runtime/Chrono/Shared/Holder.luau +210 -0
- package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/Shared/Signal.luau +219 -0
- package/runtime/Chrono/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/Shared/Stats.luau +204 -0
- package/runtime/Chrono/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/Shared/Types.luau +247 -0
- package/runtime/Chrono/Shared/Warn.luau +33 -0
- package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/_impl/Client/Player.luau +113 -0
- package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
- package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
- package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
- package/runtime/Chrono/_impl/LICENSE +21 -0
- package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/_impl/Server/Player.luau +141 -0
- package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
- package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
- package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
- package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
- package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
- package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
- package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
- package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
- package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
- package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
- package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
- package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/init.luau +96 -0
- package/runtime/Chrono/init.luau +14 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/LICENSE +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/_impl/LICENSE +21 -0
- package/runtime/Cmdr/_impl/init.luau +178 -0
- package/runtime/Cmdr/init.luau +8 -0
- package/runtime/DataService/Client.luau +209 -0
- package/runtime/DataService/Data.luau +886 -0
- package/runtime/DataService/Enum.luau +6 -0
- package/runtime/DataService/Enums.luau +10 -0
- package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
- package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
- package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
- package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
- package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
- package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
- package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
- package/runtime/DataService/Packages/quicknet/init.luau +1 -0
- package/runtime/DataService/Packages/signal/init.luau +433 -0
- package/runtime/DataService/Path.luau +236 -0
- package/runtime/DataService/ProfileStore.luau +2243 -0
- package/runtime/DataService/Replicator.luau +172 -0
- package/runtime/DataService/Server.luau +412 -0
- package/runtime/DataService/init.luau +204 -0
- package/runtime/Display/LICENSE +201 -0
- package/runtime/Display/_impl/LICENSE +201 -0
- package/runtime/Display/_impl/init.luau +269 -0
- package/runtime/Display/_impl/option.luau +237 -0
- package/runtime/Display/init.luau +10 -0
- package/runtime/Display/option.luau +237 -0
- package/runtime/EzVisualz/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/Gradient.luau +452 -0
- package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/LICENSE.md +21 -0
- package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/Presets/init.luau +9 -0
- package/runtime/EzVisualz/Stroke.luau +167 -0
- package/runtime/EzVisualz/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
- package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
- package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
- package/runtime/EzVisualz/_impl/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/init.luau +319 -0
- package/runtime/EzVisualz/_impl/wally.lock +8 -0
- package/runtime/EzVisualz/_impl/wally.toml +8 -0
- package/runtime/EzVisualz/init.luau +9 -0
- package/runtime/EzVisualz/wally.lock +8 -0
- package/runtime/EzVisualz/wally.toml +8 -0
- package/runtime/FormatNumber/LICENSE.md +25 -0
- package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/Main/init.lua +199 -0
- package/runtime/FormatNumber/Simple/init.lua +76 -0
- package/runtime/FormatNumber/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
- package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
- package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
- package/runtime/FormatNumber/_impl/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/_impl/init.lua +20 -0
- package/runtime/FormatNumber/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/init.lua +20 -0
- package/runtime/FormatNumber/init.luau +20 -0
- package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/Animation/Spring.luau +313 -0
- package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/Animation/Tween.luau +178 -0
- package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/Animation/packType.luau +100 -0
- package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/External.luau +156 -0
- package/runtime/Fusion/ExternalDebug.luau +70 -0
- package/runtime/Fusion/Graph/Observer.luau +111 -0
- package/runtime/Fusion/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/Graph/change.luau +81 -0
- package/runtime/Fusion/Graph/depend.luau +33 -0
- package/runtime/Fusion/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/Instances/Child.luau +21 -0
- package/runtime/Fusion/Instances/Children.luau +148 -0
- package/runtime/Fusion/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/Instances/New.luau +48 -0
- package/runtime/Fusion/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/Instances/Out.luau +69 -0
- package/runtime/Fusion/Instances/Tag.luau +61 -0
- package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/LICENSE +21 -0
- package/runtime/Fusion/Logging/formatError.luau +49 -0
- package/runtime/Fusion/Logging/messages.luau +46 -0
- package/runtime/Fusion/Logging/parseError.luau +25 -0
- package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/Memory/insert.luau +22 -0
- package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/Memory/scoped.luau +24 -0
- package/runtime/Fusion/RobloxExternal.luau +98 -0
- package/runtime/Fusion/State/Computed.luau +122 -0
- package/runtime/Fusion/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/State/For/init.luau +101 -0
- package/runtime/Fusion/State/ForKeys.luau +88 -0
- package/runtime/Fusion/State/ForPairs.luau +91 -0
- package/runtime/Fusion/State/ForValues.luau +88 -0
- package/runtime/Fusion/State/Value.luau +76 -0
- package/runtime/Fusion/State/castToState.luau +26 -0
- package/runtime/Fusion/State/peek.luau +31 -0
- package/runtime/Fusion/State/updateAll.luau +1 -0
- package/runtime/Fusion/Types.luau +318 -0
- package/runtime/Fusion/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/Utility/Safe.luau +23 -0
- package/runtime/Fusion/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/Utility/merge.luau +35 -0
- package/runtime/Fusion/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/Utility/never.luau +14 -0
- package/runtime/Fusion/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
- package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
- package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
- package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/_impl/External.luau +156 -0
- package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
- package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
- package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/_impl/Graph/change.luau +81 -0
- package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
- package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
- package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
- package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/_impl/Instances/New.luau +48 -0
- package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
- package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
- package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/_impl/LICENSE +21 -0
- package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
- package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
- package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
- package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
- package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
- package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
- package/runtime/Fusion/_impl/State/Computed.luau +122 -0
- package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/_impl/State/For/init.luau +101 -0
- package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
- package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
- package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
- package/runtime/Fusion/_impl/State/Value.luau +76 -0
- package/runtime/Fusion/_impl/State/castToState.luau +26 -0
- package/runtime/Fusion/_impl/State/peek.luau +31 -0
- package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
- package/runtime/Fusion/_impl/Types.luau +318 -0
- package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
- package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
- package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/_impl/Utility/never.luau +14 -0
- package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/init.luau +83 -0
- package/runtime/Fusion/init.luau +27 -0
- package/runtime/Iris/API.lua +2085 -0
- package/runtime/Iris/Internal.lua +895 -0
- package/runtime/Iris/LICENSE.txt +21 -0
- package/runtime/Iris/PubTypes.lua +43 -0
- package/runtime/Iris/Types.lua +660 -0
- package/runtime/Iris/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/API.lua +2085 -0
- package/runtime/Iris/_impl/Internal.lua +895 -0
- package/runtime/Iris/_impl/LICENSE.txt +21 -0
- package/runtime/Iris/_impl/PubTypes.lua +43 -0
- package/runtime/Iris/_impl/Types.lua +660 -0
- package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/config.lua +305 -0
- package/runtime/Iris/_impl/init.lua +696 -0
- package/runtime/Iris/_impl/widgets/Button.lua +90 -0
- package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
- package/runtime/Iris/_impl/widgets/Format.lua +140 -0
- package/runtime/Iris/_impl/widgets/Image.lua +155 -0
- package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
- package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
- package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
- package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/_impl/widgets/Root.lua +143 -0
- package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
- package/runtime/Iris/_impl/widgets/Table.lua +635 -0
- package/runtime/Iris/_impl/widgets/Text.lua +132 -0
- package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
- package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
- package/runtime/Iris/_impl/widgets/init.lua +447 -0
- package/runtime/Iris/config.lua +305 -0
- package/runtime/Iris/init.lua +696 -0
- package/runtime/Iris/init.luau +12 -0
- package/runtime/Iris/widgets/Button.lua +90 -0
- package/runtime/Iris/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/widgets/Combo.lua +492 -0
- package/runtime/Iris/widgets/Format.lua +140 -0
- package/runtime/Iris/widgets/Image.lua +155 -0
- package/runtime/Iris/widgets/Input.lua +1232 -0
- package/runtime/Iris/widgets/Menu.lua +599 -0
- package/runtime/Iris/widgets/Plot.lua +639 -0
- package/runtime/Iris/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/widgets/Root.lua +143 -0
- package/runtime/Iris/widgets/Tab.lua +333 -0
- package/runtime/Iris/widgets/Table.lua +635 -0
- package/runtime/Iris/widgets/Text.lua +132 -0
- package/runtime/Iris/widgets/Tree.lua +287 -0
- package/runtime/Iris/widgets/Window.lua +1075 -0
- package/runtime/Iris/widgets/init.lua +447 -0
- package/runtime/Janitor/FastDefer.luau +33 -0
- package/runtime/Janitor/LICENSE +21 -0
- package/runtime/Janitor/_impl/FastDefer.luau +33 -0
- package/runtime/Janitor/_impl/LICENSE +21 -0
- package/runtime/Janitor/_impl/init.luau +999 -0
- package/runtime/Janitor/init.luau +45 -0
- package/runtime/MathUtils/init.luau +100 -0
- package/runtime/Module3D/LICENSE +21 -0
- package/runtime/Module3D/_impl/LICENSE +21 -0
- package/runtime/Module3D/_impl/init.luau +269 -0
- package/runtime/Module3D/init.luau +14 -0
- package/runtime/Net/init.luau +125 -0
- package/runtime/Net/src/codec.luau +153 -0
- package/runtime/Occlude/init.luau +54 -0
- package/runtime/Promise/LICENSE +21 -0
- package/runtime/Promise/_impl/LICENSE +21 -0
- package/runtime/Promise/_impl/init.lua +1991 -0
- package/runtime/Promise/init.lua +1990 -0
- package/runtime/Promise/init.luau +13 -0
- package/runtime/Promise/types.luau +46 -0
- package/runtime/SOURCES.md +22 -0
- package/runtime/Spring/LICENSE +201 -0
- package/runtime/Spring/_impl/LICENSE +201 -0
- package/runtime/Spring/_impl/init.luau +111 -0
- package/runtime/Spring/init.luau +24 -0
- package/runtime/StateMachine/Classes/State.lua +375 -0
- package/runtime/StateMachine/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/LICENSE +19 -0
- package/runtime/StateMachine/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
- package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/_impl/LICENSE +19 -0
- package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/init.lua +595 -0
- package/runtime/StateMachine/init.lua +595 -0
- package/runtime/StateMachine/init.luau +10 -0
- package/runtime/StickyBillboard/init.luau +167 -0
- package/runtime/TopbarPlus/Attribute.lua +35 -0
- package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/LICENSE +381 -0
- package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/Reference.lua +30 -0
- package/runtime/TopbarPlus/Types.lua +477 -0
- package/runtime/TopbarPlus/Utility.lua +462 -0
- package/runtime/TopbarPlus/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
- package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/_impl/LICENSE +381 -0
- package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
- package/runtime/TopbarPlus/_impl/Types.lua +477 -0
- package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
- package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/init.lua +1249 -0
- package/runtime/TopbarPlus/init.lua +1249 -0
- package/runtime/TopbarPlus/init.luau +8 -0
- package/runtime/Twinkle/init.luau +157 -0
- package/runtime/VfxUtil/init.luau +164 -0
- package/src/api.generated.js +3675 -0
- package/src/api.js +57 -0
- package/src/architecture.js +393 -0
- package/src/cli.js +192 -0
- package/src/compile.js +40 -0
- package/src/emit.js +213 -0
- package/src/lex.js +149 -0
- package/src/libs.js +355 -0
- package/src/parse.js +421 -0
- package/src/preprocess.js +80 -0
- package/src/understand.js +453 -0
- package/templates/game/.clangd +5 -0
- package/templates/game/.vscode/c_cpp_properties.json +23 -0
- package/templates/game/.vscode/settings.json +12 -0
- package/templates/game/Packages/.gitkeep +0 -0
- package/templates/game/cluaupp.config.json +6 -0
- package/templates/game/compile_flags.txt +3 -0
- package/templates/game/default.project.json +39 -0
- package/templates/game/package.json +9 -0
- package/templates/game/src/client/init.client.cpp +5 -0
- package/templates/game/src/server/leaderstats.server.cpp +28 -0
- package/templates/game/src/shared/config.cpp +5 -0
- package/templates/game/src/shared/config.h +3 -0
- package/templates/game/wally.toml +11 -0
|
@@ -0,0 +1,717 @@
|
|
|
1
|
+
const RunService = game:GetService("RunService")
|
|
2
|
+
|
|
3
|
+
const Util = require("./Util")
|
|
4
|
+
|
|
5
|
+
const IS_SERVER = RunService:IsServer()
|
|
6
|
+
const IS_CLIENT = RunService:IsClient()
|
|
7
|
+
|
|
8
|
+
const TYPE_METHODS = Util.MakeDictionary({
|
|
9
|
+
"Transform",
|
|
10
|
+
"Validate",
|
|
11
|
+
"Autocomplete",
|
|
12
|
+
"Parse",
|
|
13
|
+
"DisplayName",
|
|
14
|
+
"Listable",
|
|
15
|
+
"ValidateOnce",
|
|
16
|
+
"Prefixes",
|
|
17
|
+
"Default",
|
|
18
|
+
"ArgumentOperatorAliases",
|
|
19
|
+
})
|
|
20
|
+
const COMMAND_METHODS = Util.MakeDictionary({
|
|
21
|
+
"Name",
|
|
22
|
+
"Aliases",
|
|
23
|
+
"AutoExec",
|
|
24
|
+
"Description",
|
|
25
|
+
"Args",
|
|
26
|
+
"Run",
|
|
27
|
+
"ClientRun",
|
|
28
|
+
"Data",
|
|
29
|
+
"Group",
|
|
30
|
+
"Guards",
|
|
31
|
+
"_scriptInstance",
|
|
32
|
+
})
|
|
33
|
+
const COMMAND_ARGUMENT_PROPERTIES = Util.MakeDictionary({ "Name", "Type", "Description", "Optional", "Default" })
|
|
34
|
+
|
|
35
|
+
const NIL_PROPERTIES = { "_autoExecFlushConnection" }
|
|
36
|
+
|
|
37
|
+
--[=[
|
|
38
|
+
@class Registry
|
|
39
|
+
The registry keeps track of all the commands and types that Cmdr knows about.
|
|
40
|
+
]=]
|
|
41
|
+
|
|
42
|
+
--[=[
|
|
43
|
+
@within Registry
|
|
44
|
+
@type HookType "BeforeRun" | "AfterRun" | "BeforeCommandRegister"
|
|
45
|
+
]=]
|
|
46
|
+
|
|
47
|
+
--[=[
|
|
48
|
+
@within Registry
|
|
49
|
+
@interface ArgumentDefinition
|
|
50
|
+
.Type string | TypeDefinition -- The argument type (case sensitive), or an [inline TypeDefinition object](/docs/commands#dynamic-arguments-and-inline-types).
|
|
51
|
+
.Name string -- The argument name, this is displayed to the user as they type.
|
|
52
|
+
.Description string? -- A description of what the argument is, this is also displayed to the user.
|
|
53
|
+
.Optional boolean? -- If this is set to `true`, then the user can run the command without filling out the value. In which case, the argument will be sent to implementations as `nil`.
|
|
54
|
+
.Default any? -- If present, the argument will be automatically made optional, so if the user doesn't supply a value, implementations will receive whatever the value of `Default` is.
|
|
55
|
+
|
|
56
|
+
The `table` definition, usually contained in a [CommandDefinition](#CommandDefinition), which 'defines' the argument.
|
|
57
|
+
]=]
|
|
58
|
+
|
|
59
|
+
--[=[
|
|
60
|
+
@within Registry
|
|
61
|
+
@interface CommandDefinition
|
|
62
|
+
.Name string -- The name of the command
|
|
63
|
+
.Aliases {string}? -- Aliases which aren't part of auto-complete, but if matched will run this command just the same. For example, `m` might be an alias of `announce`.
|
|
64
|
+
.Description string? -- A description of the command, displayed to the user in the `help` command and auto-complete menu.
|
|
65
|
+
.Group string? -- This property is intended to be used in hooks, so that you can categorise commands and decide if you want a specific user to be able to run them or not. But the `help` command will use them as headings.
|
|
66
|
+
.Args {ArgumentDefinition | (CommandContext) -> (ArgumentDefinition)} -- Arguments for the command; this is technically optional but if you have no args, set it to `{}` or you may experience some interface weirdness.
|
|
67
|
+
.Data (CommandContext, ...) -> any -- If your command needs to gather some extra data from the client that's only available on the client, then you can define this function. It should accept the command context and tuple of transformed arguments, and return a single value which will be available in the command with [CommandContext:GetData](/api/CommandContext#GetData).
|
|
68
|
+
.ClientRun (CommandContext, ...) -> string? -- If you want your command to run on the client, you can add this function to the command definition itself. It works exactly like the function that you would return from the Server module. If this function returns a string, the command will run entirely on the client and won't touch the server (which means server-only hooks won't run). If this function doesn't return anything, it will fall back to executing the Server module on the server.
|
|
69
|
+
.Run (CommandContext, ...) -> string? -- An older version of ClientRun. There are very few scenarios where this is preferred to ClientRun (so, in other words, don't use it!). These days, `Run` is only used for some dark magic involving server-sided command objects.
|
|
70
|
+
._isDefault boolean -- Whether this command is provided by Cmdr itself rather than registered by the developer.
|
|
71
|
+
._isHidden boolean -- Whether this command is hidden from the command list, help, and auto-complete.
|
|
72
|
+
]=]
|
|
73
|
+
|
|
74
|
+
--[=[
|
|
75
|
+
@within Registry
|
|
76
|
+
@interface TypeDefinition
|
|
77
|
+
.Prefixes string? -- String containing [prefixed union types](/docs/commands#prefixed-union-types) for this type. This property should omit the inital type, so the string should begin with a prefix character, e.g. `Prefixes = "# integer ! boolean"`
|
|
78
|
+
.DisplayName string? -- Overrides the user-facing name of this type in the autocomplete menu. Otherwise, the registered name of the type will be used.
|
|
79
|
+
.Default ((Player) -> string)? -- Should return the "default" value for this type as a string. For example, the default value of the `player` type is the name of the player who ran the command.
|
|
80
|
+
.Listable boolean? -- If true, this will tell Cmdr that comma-separated lists are allowed for this type. Cmdr will automatically split the list and parse each segment through your `Transform`, `Validate`, `Autocomplete` and `Parse` functions individually, so you don't have to change the logic of your type at all. The only limitation is that your `Parse` function **must return a table**, the tables from each individual segment's `Parse` functions will be merged into one table at the end of the parsing step. The uniqueness of values is ensured upon merging, so even if the user lists the same value several times, it will only appear once in the final table.
|
|
81
|
+
.Transform (string, Player) -> T? -- Transform is an optional function that is passed two values: the raw text, and the player running the command. Then, whatever values this function returns will be passed to all other functions in the type (`Validate`, `Autocomplete` and `Parse`).
|
|
82
|
+
.Validate (T) -> (boolean, string?) -- The `Validate` function is passed whatever is returned from the `Transform` function (or the raw value if there is no `Transform` function). If the value is valid for the type, it should return `true`. If the value is invalid, it should return two values: `false` and a string containing an error message. If this function is omitted, anything will be considered valid.
|
|
83
|
+
.ValidateOnce (T) -> (boolean, string?) -- This function works exactly the same as the normal `Validate` function, except it only runs once (after the user presses Enter). This should only be used if the validation process is relatively expensive or needs to yield. For example, the `playerId` type uses this because it needs to call `GetUserIdFromNameAsync` in order to validate. For the vast majority of types, you should just use `Validate` instead.
|
|
84
|
+
.Autocomplete (T) -> ({string}, {IsPartial: boolean?}?)? -- Should only be present for types that are possible to be auto-completed. It should return an array of strings that will be displayed in the auto-complete menu. It can also return a second value, containing a dictionary of options (currently, `IsPartial`: if true then pressing Tab to auto-complete won't continue onwards to the next argument.)
|
|
85
|
+
.Parse (T) -> any -- Parse is the only required function in a type definition. It is the final step before the value is considered finalised. This function should return the actual parsed value that will be sent to implementations.
|
|
86
|
+
|
|
87
|
+
The `table` definition, contained in an [ArgumentDefinition](#ArgumentDefinition) or [registered](#RegisterType), which 'defines' the argument.
|
|
88
|
+
]=]
|
|
89
|
+
|
|
90
|
+
--[=[
|
|
91
|
+
@within Registry
|
|
92
|
+
@readonly
|
|
93
|
+
|
|
94
|
+
@prop Cmdr Cmdr | CmdrClient
|
|
95
|
+
|
|
96
|
+
A reference to Cmdr. This may either be the server or client version of Cmdr depending on where the code is running.
|
|
97
|
+
]=]
|
|
98
|
+
|
|
99
|
+
--[=[
|
|
100
|
+
@within Registry
|
|
101
|
+
@readonly
|
|
102
|
+
@private
|
|
103
|
+
|
|
104
|
+
@prop _types table
|
|
105
|
+
|
|
106
|
+
A collection of all types.
|
|
107
|
+
]=]
|
|
108
|
+
|
|
109
|
+
--[=[
|
|
110
|
+
@within Registry
|
|
111
|
+
@readonly
|
|
112
|
+
@private
|
|
113
|
+
|
|
114
|
+
@prop _typeAliases table
|
|
115
|
+
|
|
116
|
+
A collection of all types and their names.
|
|
117
|
+
]=]
|
|
118
|
+
|
|
119
|
+
--[=[
|
|
120
|
+
@within Registry
|
|
121
|
+
@readonly
|
|
122
|
+
@private
|
|
123
|
+
|
|
124
|
+
@prop _commands table
|
|
125
|
+
|
|
126
|
+
A collection of all registered commands.
|
|
127
|
+
]=]
|
|
128
|
+
|
|
129
|
+
--[=[
|
|
130
|
+
@within Registry
|
|
131
|
+
@readonly
|
|
132
|
+
@private
|
|
133
|
+
|
|
134
|
+
@prop _commandsArray table
|
|
135
|
+
|
|
136
|
+
An array of all command objects.
|
|
137
|
+
]=]
|
|
138
|
+
|
|
139
|
+
--[=[
|
|
140
|
+
@within Registry
|
|
141
|
+
@readonly
|
|
142
|
+
@private
|
|
143
|
+
|
|
144
|
+
@prop _hooks { [HookType]: table }
|
|
145
|
+
|
|
146
|
+
A collection of all registered hooks.
|
|
147
|
+
]=]
|
|
148
|
+
|
|
149
|
+
--[=[
|
|
150
|
+
@within Registry
|
|
151
|
+
@readonly
|
|
152
|
+
@private
|
|
153
|
+
|
|
154
|
+
@prop _autoExecBuffer table
|
|
155
|
+
|
|
156
|
+
A buffer containing pending auto-execute commands waiting to be flushed.
|
|
157
|
+
]=]
|
|
158
|
+
|
|
159
|
+
--[=[
|
|
160
|
+
@within Registry
|
|
161
|
+
@readonly
|
|
162
|
+
@private
|
|
163
|
+
|
|
164
|
+
@prop _autoExecFlushConnection RBXScriptConnection?
|
|
165
|
+
|
|
166
|
+
A connection used to defer flushing the auto-execute buffer until the end of the frame.
|
|
167
|
+
]=]
|
|
168
|
+
|
|
169
|
+
--[=[
|
|
170
|
+
@prop _stores table
|
|
171
|
+
@within Registry
|
|
172
|
+
@readonly
|
|
173
|
+
@private
|
|
174
|
+
]=]
|
|
175
|
+
|
|
176
|
+
const Registry = {
|
|
177
|
+
Cmdr = nil :: any,
|
|
178
|
+
|
|
179
|
+
_types = {},
|
|
180
|
+
_typeAliases = {},
|
|
181
|
+
|
|
182
|
+
_commands = {},
|
|
183
|
+
_commandsArray = {},
|
|
184
|
+
|
|
185
|
+
_hooks = {
|
|
186
|
+
BeforeRun = {},
|
|
187
|
+
AfterRun = {},
|
|
188
|
+
BeforeCommandRegister = {},
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
_autoExecBuffer = {},
|
|
192
|
+
_autoExecFlushConnection = nil,
|
|
193
|
+
|
|
194
|
+
_stores = setmetatable({}, {
|
|
195
|
+
__index = function(self, key)
|
|
196
|
+
self[key] = {}
|
|
197
|
+
return self[key]
|
|
198
|
+
end,
|
|
199
|
+
}),
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
--[=[
|
|
203
|
+
@within Registry
|
|
204
|
+
|
|
205
|
+
@param name -- The name of the type, this must be unique, alphanumeric, and start with a lower-case letter or digit.
|
|
206
|
+
@param typeObject TypeDefinition
|
|
207
|
+
|
|
208
|
+
Registers a type on the current realm (server/client), this function should be called from within the type definition ModuleScript.
|
|
209
|
+
]=]
|
|
210
|
+
function Registry:RegisterType(name: string, typeObject: any)
|
|
211
|
+
assert(typeof(name) == "string", `[Cmdr] Invalid type name provided: {tostring(name)}`)
|
|
212
|
+
assert(
|
|
213
|
+
name:find("^[%d%l]%w*$") ~= nil,
|
|
214
|
+
`[Cmdr] Invalid type name provided: "{name}", type names must be alphanumeric and start with a lowercase letter or digit.`
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
for key in pairs(typeObject) do
|
|
218
|
+
assert(TYPE_METHODS[key] ~= nil, `[Cmdr] Unknown key/method in type "{name}": {key}`)
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
assert(self._types[name] == nil, `[Cmdr] Type "{name}" has already been registered.`)
|
|
222
|
+
|
|
223
|
+
typeObject.Name = name
|
|
224
|
+
typeObject.DisplayName = typeObject.DisplayName or name
|
|
225
|
+
|
|
226
|
+
self._types[name] = typeObject
|
|
227
|
+
|
|
228
|
+
if typeObject.Prefixes then
|
|
229
|
+
self:RegisterTypePrefix(name, typeObject.Prefixes)
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
--[=[
|
|
234
|
+
@within Registry
|
|
235
|
+
|
|
236
|
+
@param name -- The name of the type.
|
|
237
|
+
@param union -- The string should omit the initial type name, so this string should begin with a prefix character, e.g. `# integer ! boolean`
|
|
238
|
+
|
|
239
|
+
Registers a Prefixed Union Type string on the current realm (server/client), this function should be called from within the type definition ModuleScript.
|
|
240
|
+
If there are already type prefixes for the given type name, they will be concatenated. This allows you to add prefixes to default types, like `players`.
|
|
241
|
+
]=]
|
|
242
|
+
function Registry:RegisterTypePrefix(name: string, union: string)
|
|
243
|
+
if not self._typeAliases[name] then
|
|
244
|
+
self._typeAliases[name] = name
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
self._typeAliases[name] = `{self._typeAliases[name]} {union}`
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
--[=[
|
|
251
|
+
@within Registry
|
|
252
|
+
|
|
253
|
+
@param name -- The name of the type, this must be unique, alphanumeric, and start with a lower-case letter or digit.
|
|
254
|
+
@param alias -- The string should *include* the initial type name, e.g. `string # integer ! boolean`
|
|
255
|
+
|
|
256
|
+
Allows you to register a name which will be expanded into a longer type which can be used as a command argument type.
|
|
257
|
+
For example, if you register the alias `stringOrNumber` it could be interpreted as `string # number` when used.
|
|
258
|
+
]=]
|
|
259
|
+
function Registry:RegisterTypeAlias(name: string, alias: string)
|
|
260
|
+
assert(self._typeAliases[name] == nil, `[Cmdr] Type alias "{name}" already exists!`)
|
|
261
|
+
|
|
262
|
+
self._typeAliases[name] = alias
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
--[=[
|
|
266
|
+
@within Registry
|
|
267
|
+
@server
|
|
268
|
+
|
|
269
|
+
Registers all types from a container.
|
|
270
|
+
]=]
|
|
271
|
+
function Registry:RegisterTypesIn(container: Instance)
|
|
272
|
+
for _, object in pairs(container:GetChildren()) do
|
|
273
|
+
if object:IsA("ModuleScript") then
|
|
274
|
+
object.Parent = self.Cmdr._replicatedRoot.Types
|
|
275
|
+
|
|
276
|
+
require(object)(self)
|
|
277
|
+
else
|
|
278
|
+
self:RegisterTypesIn(object)
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
-- These are exactly the same thing. No one will notice. Except for you, dear reader.
|
|
284
|
+
--[=[
|
|
285
|
+
@within Registry
|
|
286
|
+
@method RegisterHooksIn
|
|
287
|
+
@server
|
|
288
|
+
|
|
289
|
+
@param container Instance
|
|
290
|
+
|
|
291
|
+
Registers all hooks from within a container on both the server and client.
|
|
292
|
+
If you want to add a hook only on the server or client – e.g. for logging – then you should use the Register.RegisterHook method instead.
|
|
293
|
+
]=]
|
|
294
|
+
Registry.RegisterHooksIn = Registry.RegisterTypesIn
|
|
295
|
+
|
|
296
|
+
--[=[
|
|
297
|
+
@within Registry
|
|
298
|
+
@private
|
|
299
|
+
|
|
300
|
+
@param commandObject CommandDefinition
|
|
301
|
+
|
|
302
|
+
Validates the arguments of a provided Command Object.
|
|
303
|
+
Errors if an invalid property exists.
|
|
304
|
+
]=]
|
|
305
|
+
function Registry:_validateCommandArguments(commandObject: any)
|
|
306
|
+
for index, argument in pairs(commandObject.Args) do
|
|
307
|
+
if type(argument) ~= "table" then
|
|
308
|
+
continue
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
for key in pairs(argument) do
|
|
312
|
+
assert(
|
|
313
|
+
COMMAND_ARGUMENT_PROPERTIES[key],
|
|
314
|
+
`[Cmdr] Unknown property in command "{commandObject.Name or "unknown"}" argument #{index}: {key}`
|
|
315
|
+
)
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
--[=[
|
|
321
|
+
@within Registry
|
|
322
|
+
@private
|
|
323
|
+
|
|
324
|
+
@param commandObject CommandDefinition
|
|
325
|
+
|
|
326
|
+
Validates the properties of a provided Command Object.
|
|
327
|
+
Errors if an invalid property exists.
|
|
328
|
+
]=]
|
|
329
|
+
function Registry:_validateCommand(commandObject: any)
|
|
330
|
+
for key in pairs(commandObject) do
|
|
331
|
+
assert(
|
|
332
|
+
COMMAND_METHODS[key],
|
|
333
|
+
`[Cmdr] Unknown key/method in command "{commandObject.Name or "unknown command"}": {key}`
|
|
334
|
+
)
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
if commandObject.Args then
|
|
338
|
+
self:_validateCommandArguments(commandObject)
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
--[=[
|
|
343
|
+
@within Registry
|
|
344
|
+
|
|
345
|
+
@param commandObject CommandDefinition
|
|
346
|
+
@param isDefault boolean? -- True if this is a built-in Cmdr command
|
|
347
|
+
@return boolean -- Returns true if registration succeeded or false if aborted due to a developer override
|
|
348
|
+
|
|
349
|
+
Register a command purely based on its definition.
|
|
350
|
+
Prefer using Registry:RegisterCommand for proper handling of client/server model.
|
|
351
|
+
]=]
|
|
352
|
+
function Registry:RegisterCommandObject(commandObject: any, isDefault: boolean?): boolean
|
|
353
|
+
self:_validateCommand(commandObject) -- Error if the command object isn't valid
|
|
354
|
+
|
|
355
|
+
commandObject._isDefault = isDefault == true
|
|
356
|
+
commandObject._isHidden = false
|
|
357
|
+
|
|
358
|
+
if IS_CLIENT then
|
|
359
|
+
const beforeCommandRegisterHook = self.Cmdr.Dispatcher:_runBeforeCommandRegisterHookForCommand(commandObject)
|
|
360
|
+
commandObject._isHidden = beforeCommandRegisterHook ~= nil and beforeCommandRegisterHook ~= true
|
|
361
|
+
|
|
362
|
+
if commandObject.AutoExec then
|
|
363
|
+
table.insert(self._autoExecBuffer, commandObject.AutoExec)
|
|
364
|
+
self:_flushAutoExecBufferDeferred()
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
const commandName = commandObject.Name:lower()
|
|
369
|
+
const existingCommand = self._commands[commandName]
|
|
370
|
+
if existingCommand then
|
|
371
|
+
const existingIsDefault = existingCommand._isDefault
|
|
372
|
+
|
|
373
|
+
if isDefault and not existingIsDefault then
|
|
374
|
+
warn(
|
|
375
|
+
`[Cmdr] Ignored default command "{commandObject.Name}" because a custom developer command is already registered with this name.`
|
|
376
|
+
)
|
|
377
|
+
return false
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
if not isDefault and existingIsDefault then
|
|
381
|
+
warn(`[Cmdr] Custom command "{commandObject.Name}" has replaced the default built-in command.`)
|
|
382
|
+
elseif not isDefault and not existingIsDefault then
|
|
383
|
+
warn(`[Cmdr] Custom command "{commandObject.Name}" was overwritten by a newer custom command.`)
|
|
384
|
+
else
|
|
385
|
+
warn(`[Cmdr] Default command "{commandObject.Name}" was overwritten by a newer default command.`)
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
if IS_SERVER and existingCommand._scriptInstance then
|
|
389
|
+
existingCommand._scriptInstance:Destroy()
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
const commandIndex = table.find(self._commandsArray, existingCommand)
|
|
393
|
+
if commandIndex then
|
|
394
|
+
self._commandsArray[commandIndex] = commandObject
|
|
395
|
+
else
|
|
396
|
+
table.insert(self._commandsArray, commandObject)
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
if existingCommand.Aliases then
|
|
400
|
+
for _, alias in pairs(existingCommand.Aliases) do
|
|
401
|
+
self._commands[alias:lower()] = nil
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
else
|
|
405
|
+
table.insert(self._commandsArray, commandObject)
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
self._commands[commandName] = commandObject
|
|
409
|
+
|
|
410
|
+
if commandObject.Aliases then
|
|
411
|
+
for _, alias in pairs(commandObject.Aliases) do
|
|
412
|
+
self._commands[alias:lower()] = commandObject
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
return true
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
--[=[
|
|
420
|
+
@within Registry
|
|
421
|
+
|
|
422
|
+
@param filter ((CommandDefinition) -> boolean)? -- If present, will be passed a command definition which will then only be registered if the function returns `true`.
|
|
423
|
+
|
|
424
|
+
Registers a command definition and its server equivalent.
|
|
425
|
+
Handles replicating the definition to the client.
|
|
426
|
+
]=]
|
|
427
|
+
function Registry:RegisterCommand(
|
|
428
|
+
commandScript: ModuleScript,
|
|
429
|
+
commandServerScript: ModuleScript?,
|
|
430
|
+
filter: ((any) -> boolean)?,
|
|
431
|
+
isDefault: boolean?
|
|
432
|
+
)
|
|
433
|
+
local commandObject = require(commandScript)
|
|
434
|
+
assert(
|
|
435
|
+
typeof(commandObject) == "table",
|
|
436
|
+
`[Cmdr] Invalid return value from command script "{commandScript.Name}" (CommandDefinition expected, got {typeof(
|
|
437
|
+
commandObject
|
|
438
|
+
)})`
|
|
439
|
+
)
|
|
440
|
+
|
|
441
|
+
if commandServerScript then
|
|
442
|
+
assert(IS_SERVER, "[Cmdr] The commandServerScript parameter is not valid for client usage.")
|
|
443
|
+
commandObject.Run = require(commandServerScript)
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
if filter and not filter(commandObject) then
|
|
447
|
+
return
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
commandObject._scriptInstance = commandScript
|
|
451
|
+
|
|
452
|
+
const success = self:RegisterCommandObject(commandObject, isDefault)
|
|
453
|
+
if success then
|
|
454
|
+
commandScript.Parent = self.Cmdr._replicatedRoot.Commands
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
--[=[
|
|
459
|
+
@within Registry
|
|
460
|
+
|
|
461
|
+
@param filter ((CommandDefinition) -> boolean)? -- If present, will be passed a command definition which will then only be registered if the function returns `true`.
|
|
462
|
+
|
|
463
|
+
Registers all commands from within a container on both the server and client.
|
|
464
|
+
Module scripts which include `Server` in their name will not be sent to the client.
|
|
465
|
+
]=]
|
|
466
|
+
function Registry:RegisterCommandsIn(container: Instance, filter: ((any) -> boolean)?, isDefault: boolean?)
|
|
467
|
+
local skippedServerScripts = {}
|
|
468
|
+
local usedServerScripts = {}
|
|
469
|
+
for _, commandScript in pairs(container:GetChildren()) do
|
|
470
|
+
if commandScript:IsA("ModuleScript") then
|
|
471
|
+
if not commandScript.Name:find("Server") then
|
|
472
|
+
const serverCommandScript = container:FindFirstChild(`{commandScript.Name}Server`)
|
|
473
|
+
if serverCommandScript then
|
|
474
|
+
usedServerScripts[serverCommandScript] = true
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
self:RegisterCommand(commandScript, serverCommandScript, filter, isDefault)
|
|
478
|
+
else
|
|
479
|
+
skippedServerScripts[commandScript] = true
|
|
480
|
+
end
|
|
481
|
+
else
|
|
482
|
+
self:RegisterCommandsIn(commandScript, filter, isDefault)
|
|
483
|
+
end
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
for skippedScript in pairs(skippedServerScripts) do
|
|
487
|
+
if not usedServerScripts[skippedScript] then
|
|
488
|
+
warn(
|
|
489
|
+
`[Cmdr] Command script {skippedScript.Name} was skipped because it has 'Server' in its name, and has no equivalent shared script.`
|
|
490
|
+
)
|
|
491
|
+
end
|
|
492
|
+
end
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
--[=[
|
|
496
|
+
@within Registry
|
|
497
|
+
@server
|
|
498
|
+
|
|
499
|
+
@param arrayOrFunc {string} | (CommandDefinition) -> boolean | nil
|
|
500
|
+
|
|
501
|
+
Registers the default commands on both the server and client.
|
|
502
|
+
|
|
503
|
+
The optional `arrayOrFunc` parameter can be provided with:
|
|
504
|
+
|
|
505
|
+
1. an array of strings — this will limit registration to only commands which have their `Group` property set to this
|
|
506
|
+
2. a function which takes in a CommandDefinition and returns a `boolean` — only if `true` is returned will the command be registered
|
|
507
|
+
|
|
508
|
+
If a custom developer command is registered with the same name or alias as a default command, the developer command will take precedence and replace the default built-in command.
|
|
509
|
+
]=]
|
|
510
|
+
function Registry:RegisterDefaultCommands(arrayOrFunc: { string } | (any) -> boolean | nil)
|
|
511
|
+
assert(IS_SERVER, "[Cmdr] RegisterDefaultCommands cannot be called from the client.")
|
|
512
|
+
|
|
513
|
+
const dictionary = if type(arrayOrFunc) == "table" then Util.MakeDictionary(arrayOrFunc) else nil
|
|
514
|
+
local filter
|
|
515
|
+
|
|
516
|
+
if dictionary ~= nil then
|
|
517
|
+
function filter(command)
|
|
518
|
+
return dictionary[command.Group] or false
|
|
519
|
+
end
|
|
520
|
+
else
|
|
521
|
+
filter = arrayOrFunc
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
self:RegisterCommandsIn(self.Cmdr._defaultCommandsFolder, filter, true)
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
--[=[
|
|
528
|
+
@within Registry
|
|
529
|
+
@return CommandDefinition?
|
|
530
|
+
|
|
531
|
+
Returns the CommandDefinition from the given name, or nil if no command is found. Command aliases are also accepted.
|
|
532
|
+
]=]
|
|
533
|
+
function Registry:GetCommand(name: string)
|
|
534
|
+
return self._commands[name:lower()]
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
--[=[
|
|
538
|
+
@within Registry
|
|
539
|
+
@return {CommandDefinition}
|
|
540
|
+
|
|
541
|
+
Returns an array of all registers commands, not including aliases.
|
|
542
|
+
]=]
|
|
543
|
+
function Registry:GetCommands(): { any }
|
|
544
|
+
return self._commandsArray
|
|
545
|
+
end
|
|
546
|
+
|
|
547
|
+
--[=[
|
|
548
|
+
@within Registry
|
|
549
|
+
Returns an array of containing the names of all registered commands, not including aliases.
|
|
550
|
+
]=]
|
|
551
|
+
function Registry:GetCommandNames(includeAliases: boolean?): { string }
|
|
552
|
+
local commands = {}
|
|
553
|
+
|
|
554
|
+
for _, command in pairs(self._commandsArray) do
|
|
555
|
+
if command._isHidden then
|
|
556
|
+
continue
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
if includeAliases and typeof(command.Aliases) == "table" then
|
|
560
|
+
for _, alias in pairs(command.Aliases) do
|
|
561
|
+
table.insert(commands, alias)
|
|
562
|
+
end
|
|
563
|
+
end
|
|
564
|
+
|
|
565
|
+
table.insert(commands, command.Name)
|
|
566
|
+
end
|
|
567
|
+
|
|
568
|
+
return commands
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
--[=[
|
|
572
|
+
@within Registry
|
|
573
|
+
@method GetCommandsAsStrings
|
|
574
|
+
@deprecated v1.8.0 -- This method was renamed to GetCommandNames in v1.8.0. The old name exists for backwards compatibility and should not be used for new work.
|
|
575
|
+
]=]
|
|
576
|
+
Registry.GetCommandsAsStrings = Registry.GetCommandNames
|
|
577
|
+
Util:_registerDeprecationWarning(
|
|
578
|
+
"GetCommandsAsStrings",
|
|
579
|
+
"This method was renamed to GetCommandNames in v1.8.0. The old name exists for backwards compatibility and should not be used for new work."
|
|
580
|
+
)
|
|
581
|
+
|
|
582
|
+
--[=[
|
|
583
|
+
@within Registry
|
|
584
|
+
Returns an array of containing the names of all registered types, not including aliases.
|
|
585
|
+
]=]
|
|
586
|
+
function Registry:GetTypeNames(): { string }
|
|
587
|
+
local typeNames = {}
|
|
588
|
+
|
|
589
|
+
for typeName in pairs(self._types) do
|
|
590
|
+
table.insert(typeNames, typeName)
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
return typeNames
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
--[=[
|
|
597
|
+
@within Registry
|
|
598
|
+
@return TypeDefinition?
|
|
599
|
+
|
|
600
|
+
Returns the type definition from the given name, or nil if no argument is found.
|
|
601
|
+
]=]
|
|
602
|
+
function Registry:GetType(name: string)
|
|
603
|
+
return self._types[name]
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
--[=[
|
|
607
|
+
@within Registry
|
|
608
|
+
@return TypeDefinition | string
|
|
609
|
+
|
|
610
|
+
Returns a type name taking aliases into account. If there is no alias, the name parameter is simply returned as a pass through.
|
|
611
|
+
]=]
|
|
612
|
+
function Registry:GetTypeName(name: string): string | any
|
|
613
|
+
return self._typeAliases[name] or name
|
|
614
|
+
end
|
|
615
|
+
|
|
616
|
+
--[=[
|
|
617
|
+
@within Registry
|
|
618
|
+
|
|
619
|
+
@param hookName HookType
|
|
620
|
+
@param callback (CommandContext) -> string? -- returns nil for ok, string (errorText) for cancellation
|
|
621
|
+
@param priority number? -- If unspecified, the priority will default to `0`.
|
|
622
|
+
|
|
623
|
+
Registers a hook on the current realm (server/client). This should probably be ran on the server or in a hook module script, but can also work on the client.
|
|
624
|
+
Hooks run in order of priority from lowest (running first) to highest.
|
|
625
|
+
]=]
|
|
626
|
+
function Registry:RegisterHook(hookName: string, callback: (any) -> string?, priority: number?)
|
|
627
|
+
assert(self._hooks[hookName], `[Cmdr] Invalid hook name: {hookName}`)
|
|
628
|
+
|
|
629
|
+
table.insert(self._hooks[hookName], { callback = callback, priority = priority or 0 })
|
|
630
|
+
table.sort(self._hooks[hookName], function(a, b)
|
|
631
|
+
return a.priority < b.priority
|
|
632
|
+
end)
|
|
633
|
+
end
|
|
634
|
+
|
|
635
|
+
--[=[
|
|
636
|
+
@within Registry
|
|
637
|
+
@method AddHook
|
|
638
|
+
@deprecated v1.1.2 -- This method was renamed to RegisterHook in v1.1.2. The old name exists for backwards compatibility and should not be used for new work.
|
|
639
|
+
]=]
|
|
640
|
+
Registry.AddHook = Registry.RegisterHook
|
|
641
|
+
Util:_registerDeprecationWarning(
|
|
642
|
+
"AddHook",
|
|
643
|
+
"This method was renamed to RegisterHook in v1.1.2. The old name exists for backwards compatibility and should not be used for new work."
|
|
644
|
+
)
|
|
645
|
+
|
|
646
|
+
--[=[
|
|
647
|
+
@within Registry
|
|
648
|
+
@return table
|
|
649
|
+
|
|
650
|
+
Returns a table saved with the given name. Always returns the same table on subsequent calls. Useful for commands that require persistent state, like bind or ban.
|
|
651
|
+
This is the same as CommandContext.GetStore.
|
|
652
|
+
]=]
|
|
653
|
+
function Registry:GetStore(name: string)
|
|
654
|
+
return self._stores[name]
|
|
655
|
+
end
|
|
656
|
+
|
|
657
|
+
--[=[
|
|
658
|
+
@within Registry
|
|
659
|
+
@private
|
|
660
|
+
|
|
661
|
+
Runs all pending auto exec commands in Registry.AutoExecBuffer.
|
|
662
|
+
]=]
|
|
663
|
+
function Registry:_flushAutoExecBuffer()
|
|
664
|
+
for _, commandGroup in ipairs(self._autoExecBuffer) do
|
|
665
|
+
for _, command in ipairs(commandGroup) do
|
|
666
|
+
self.Cmdr.Dispatcher:EvaluateAndRun(command)
|
|
667
|
+
end
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
self._autoExecBuffer = {}
|
|
671
|
+
end
|
|
672
|
+
|
|
673
|
+
--[=[
|
|
674
|
+
@within Registry
|
|
675
|
+
@private
|
|
676
|
+
|
|
677
|
+
Calls Registry.FlushAutoExecBuffer at the end of the frame.
|
|
678
|
+
]=]
|
|
679
|
+
function Registry:_flushAutoExecBufferDeferred()
|
|
680
|
+
if self._autoExecFlushConnection then
|
|
681
|
+
return
|
|
682
|
+
end
|
|
683
|
+
|
|
684
|
+
self._autoExecFlushConnection = RunService.Heartbeat:Connect(function()
|
|
685
|
+
self._autoExecFlushConnection:Disconnect()
|
|
686
|
+
self._autoExecFlushConnection = nil
|
|
687
|
+
self:_flushAutoExecBuffer()
|
|
688
|
+
end)
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
-- Export Registry
|
|
692
|
+
Registry.__index = Registry
|
|
693
|
+
Registry.__newindex = Registry
|
|
694
|
+
|
|
695
|
+
export type Registry = typeof(setmetatable(Registry, Registry))
|
|
696
|
+
|
|
697
|
+
return function(Cmdr): Registry
|
|
698
|
+
const ProtectedRegistry = { Cmdr = Cmdr }
|
|
699
|
+
return setmetatable(ProtectedRegistry, {
|
|
700
|
+
__index = function(_, key)
|
|
701
|
+
if Util._deprecationWarnings[key] then
|
|
702
|
+
Util:_emitDeprecationWarning(key)
|
|
703
|
+
end
|
|
704
|
+
|
|
705
|
+
const value = Registry[key]
|
|
706
|
+
assert(value or table.find(NIL_PROPERTIES, key), `[Cmdr] Registry has no method or property "{key}".`)
|
|
707
|
+
return value
|
|
708
|
+
end,
|
|
709
|
+
__newindex = function(_, key, value)
|
|
710
|
+
assert(
|
|
711
|
+
table.find(NIL_PROPERTIES, key) or Registry[key],
|
|
712
|
+
`[Cmdr] Cannot assign key "{key}"; the Registry is read-only.`
|
|
713
|
+
)
|
|
714
|
+
Registry[key] = value
|
|
715
|
+
end,
|
|
716
|
+
}) :: Registry
|
|
717
|
+
end
|