mirror of
https://github.com/imezx/Warp.git
synced 2025-04-24 07:00:03 +00:00
46 lines
No EOL
857 B
Lua
46 lines
No EOL
857 B
Lua
--!strict
|
|
--!native
|
|
--!optimize 2
|
|
local Middleware = {}
|
|
Middleware.__index = Middleware
|
|
|
|
local function wrap(middleware: (...any) -> (...any)): (...any) -> boolean
|
|
return function(...): boolean
|
|
local obj: any = { ... }
|
|
local s, r = pcall(function()
|
|
return middleware(table.unpack(obj))
|
|
end)
|
|
if not s and r then
|
|
warn(r)
|
|
r = nil
|
|
table.clear(obj)
|
|
obj = nil
|
|
end
|
|
return s
|
|
end
|
|
end
|
|
|
|
function Middleware.new(key: string)
|
|
return setmetatable({
|
|
root = key,
|
|
bridge = function(...: any?): any?
|
|
return true
|
|
end,
|
|
}, Middleware)
|
|
end
|
|
|
|
function Middleware:middleware(middleware: (...any) -> (...any))
|
|
self.bridge = wrap(middleware)
|
|
return self
|
|
end
|
|
|
|
function Middleware:key(): string
|
|
return self.root
|
|
end
|
|
|
|
function Middleware:destroy()
|
|
table.clear(self)
|
|
setmetatable(self, nil)
|
|
end
|
|
|
|
return Middleware.new :: typeof(Middleware.new) |