-- Compiled with roblox-ts v1.2.7 local TS = _G[script] local t = TS.import(script, TS.getModule(script, "@rbxts", "t").lib.ts) local ZirconEnum = TS.import(script, script.Parent, "ZirconEnum").ZirconEnum local BuiltInValidators = TS.import(script, script.Parent, "ZirconTypeValidator").BuiltInValidators local isArray = t.array(t.any) local function ZirconGetValidatorType(validatorLike) local validator if type(validatorLike) == "string" then validator = BuiltInValidators[validatorLike] elseif TS.instanceof(validatorLike, ZirconEnum) then validator = validatorLike:getValidator() else validator = validatorLike end return validator end local ZirconUnionValidator local function ZirconTypeUnion(...) local validators = { ... } -- ▼ ReadonlyArray.map ▼ local _newValue = table.create(#validators) for _k, _v in ipairs(validators) do _newValue[_k] = ZirconGetValidatorType(_v, _k - 1, validators) end -- ▲ ReadonlyArray.map ▲ local result = _newValue return ZirconUnionValidator(result) end local function ZirconArrayType(validator) local arrayType = ZirconGetValidatorType(validator) local _arg0 = { Type = arrayType.Type .. "[]", Validate = function(self, value, player) local _condition = isArray(value) if _condition then local _arg0_1 = function(value) return arrayType:Validate(value, player) end -- ▼ ReadonlyArray.every ▼ local _result = true for _k, _v in ipairs(value) do if not _arg0_1(_v, _k - 1, value) then _result = false break end end -- ▲ ReadonlyArray.every ▲ _condition = _result end return _condition end, } return _arg0 end function ZirconUnionValidator(validators) local _object = {} local _left = "Type" local _arg0 = function(v) return v.Type end -- ▼ ReadonlyArray.map ▼ local _newValue = table.create(#validators) for _k, _v in ipairs(validators) do _newValue[_k] = _arg0(_v, _k - 1, validators) end -- ▲ ReadonlyArray.map ▲ _object[_left] = table.concat(_newValue, " | ") function _object:Validate(value, player) local _arg0_1 = function(v) return v:Validate(value, player) end -- ▼ ReadonlyArray.some ▼ local _result = false for _k, _v in ipairs(validators) do if _arg0_1(_v, _k - 1, validators) then _result = true break end end -- ▲ ReadonlyArray.some ▲ return _result end function _object:Transform(value, player) for _, validator in ipairs(validators) do if validator:Validate(value) then if validator.Transform ~= nil then return validator:Transform(value, player) else return value end end end return nil end return _object end return { ZirconGetValidatorType = ZirconGetValidatorType, ZirconTypeUnion = ZirconTypeUnion, ZirconArrayType = ZirconArrayType, ZirconUnionValidator = ZirconUnionValidator, }