-- Compiled with roblox-ts v3.0.0 local TS = _G[script] local _centurion = TS.import(script, TS.getModule(script, "@rbxts", "centurion").out) local ImmutableRegistryPath = _centurion.ImmutableRegistryPath local RegistryPath = _centurion.RegistryPath local IS_EDIT = TS.import(script, script.Parent.Parent.Parent, "constants", "util").IS_EDIT local function formatPartsAsPath(parts) return string.lower(table.concat(parts, "/")) end local function getValidPath(registry, text) if #text == 0 then return nil end local textPath = formatPartsAsPath(text) if registry:getCommandByString(textPath) ~= nil or registry:getGroupByString(textPath) ~= nil then return ImmutableRegistryPath:fromString(textPath) end local path = RegistryPath:empty() for _, part in text do path:append(string.lower(part)) if registry:getCommand(path) == nil and registry:getGroup(path) == nil and #registry:getChildPaths(path) == 0 then path:remove(path:size() - 1) break end end if registry:getCommand(path) ~= nil or registry:getGroup(path) ~= nil then return ImmutableRegistryPath:fromPath(path) end end local function getArgumentNames(registry, path) if IS_EDIT then return {} end local command = registry:getCommand(path) if command == nil or command.options.arguments == nil then return {} end local _exp = command.options.arguments -- ▼ ReadonlyArray.map ▼ local _newValue = table.create(#_exp) local _callback = function(arg) return arg.name end for _k, _v in _exp do _newValue[_k] = _callback(_v, _k - 1, _exp) end -- ▲ ReadonlyArray.map ▲ return _newValue end local function getMissingArgs(command, text) if command.options.arguments == nil or #command.options.arguments == 0 then return {} end local lastPartIndex = #text - command:getPath():size() - 1 local missingArgs = {} local index = 0 for _, arg in command.options.arguments do if arg.optional then break end if index > lastPartIndex then local _name = arg.name table.insert(missingArgs, _name) end index += 1 end return missingArgs end return { formatPartsAsPath = formatPartsAsPath, getValidPath = getValidPath, getArgumentNames = getArgumentNames, getMissingArgs = getMissingArgs, }