mirror of
				https://github.com/imezx/Warp.git
				synced 2025-11-03 19:49:16 +00:00 
			
		
		
		
	v1.0.12
This commit is contained in:
		
							parent
							
								
									77de85b6b8
								
							
						
					
					
						commit
						064075fbd9
					
				
					 11 changed files with 183 additions and 22 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								Warp.rbxm
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Warp.rbxm
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -33,6 +33,7 @@ function side() {
 | 
				
			||||||
            text: 'Feature',
 | 
					            text: 'Feature',
 | 
				
			||||||
            items: [
 | 
					            items: [
 | 
				
			||||||
              { text: 'Rate Limit', link: '/api/1.0/ratelimit' },
 | 
					              { text: 'Rate Limit', link: '/api/1.0/ratelimit' },
 | 
				
			||||||
 | 
					              { text: 'Middleware', link: '/api/1.0/middleware' },
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
          {
 | 
					          {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										64
									
								
								docs/api/1.0/middleware.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								docs/api/1.0/middleware.md
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,64 @@
 | 
				
			||||||
 | 
					# Middleware <Badge type="tip" text="feature" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					::: code-group
 | 
				
			||||||
 | 
					```lua [Server]
 | 
				
			||||||
 | 
					local Event1 = Warp.Server("Remote1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local storeC = Event1:Connect(function(player: Player, arg1: string, arg2: number, arg3: boolean)
 | 
				
			||||||
 | 
					    print(player, arg1, arg2, arg3)
 | 
				
			||||||
 | 
					end):middleware(function(player: Player, arg1: string, arg2: number, arg3: boolean)
 | 
				
			||||||
 | 
					    assert(type(player) == "userdata" and player:IsA("Player"), "player must be a Player.")
 | 
				
			||||||
 | 
					    assert(typeof(arg1) == "string", "arg1 must be a string.")
 | 
				
			||||||
 | 
					    assert(typeof(arg2) == "number", "arg2 must be a number.")
 | 
				
			||||||
 | 
					    assert(typeof(arg3) == "boolean", "arg3 must be a boolean.")
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print(storeC:key())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					task.delay(15, function()
 | 
				
			||||||
 | 
					    Event1:Disconnect(storeC:key())
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for _=1,5 do
 | 
				
			||||||
 | 
					    print("send incorrect values")
 | 
				
			||||||
 | 
					    Event1:Fires(true, 1e9, "hello world!")
 | 
				
			||||||
 | 
					    task.wait(0.5)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for _=1,5 do
 | 
				
			||||||
 | 
					    print("send correct values")
 | 
				
			||||||
 | 
					    Event1:Fires(true, "hello world!", 1e9)
 | 
				
			||||||
 | 
					    task.wait(0.5)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```lua [Client]
 | 
				
			||||||
 | 
					local Event1 = Warp.Client("Remote1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local storeC = Event1:Connect(function(arg1: boolean, arg2: string, arg3: number)
 | 
				
			||||||
 | 
					    print(arg1, arg2, arg3)
 | 
				
			||||||
 | 
					end):middleware(function(arg1: boolean, arg2: string, arg3: number)
 | 
				
			||||||
 | 
					    assert(typeof(arg1) == "boolean", "arg1 must be a boolean.")
 | 
				
			||||||
 | 
					    assert(typeof(arg2) == "string", "arg2 must be a string.")
 | 
				
			||||||
 | 
					    assert(typeof(arg3) == "number", "arg3 must be a number.")
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					print(storeC:key())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					task.delay(15, function()
 | 
				
			||||||
 | 
					    Event1:Disconnect(storeC:key())
 | 
				
			||||||
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for _=1,5 do
 | 
				
			||||||
 | 
					    print("send incorrect values")
 | 
				
			||||||
 | 
					    Event1:Fires("hello world!", false, 1e9)
 | 
				
			||||||
 | 
					    task.wait(0.5)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for _=1,5 do
 | 
				
			||||||
 | 
					    print("send correct values")
 | 
				
			||||||
 | 
					    Event1:Fires("hello world!", 1e9, false)
 | 
				
			||||||
 | 
					    task.wait(0.5)
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					:::
 | 
				
			||||||
| 
						 | 
					@ -67,4 +67,5 @@ Pong:Disconnect(connection1)
 | 
				
			||||||
Pong:Destroy()
 | 
					Pong:Destroy()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Yay Done!
 | 
					-- Yay Done!
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					:::
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@
 | 
				
			||||||
::: code-group
 | 
					::: code-group
 | 
				
			||||||
```toml [wally.toml]
 | 
					```toml [wally.toml]
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
warp = "imezx/warp@1.0.11"
 | 
					warp = "imezx/warp@1.0.12"
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
3. Run `wally install` in command.
 | 
					3. Run `wally install` in command.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ local Assert = require(Util.Assert)
 | 
				
			||||||
local Key = require(Util.Key)
 | 
					local Key = require(Util.Key)
 | 
				
			||||||
local Serdes = require(Util.Serdes)
 | 
					local Serdes = require(Util.Serdes)
 | 
				
			||||||
local Buffer = require(Util.Buffer)
 | 
					local Buffer = require(Util.Buffer)
 | 
				
			||||||
 | 
					local Middleware = require(Util.Middleware)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client.new(Identifier: string, conf: Type.ClientConf?)
 | 
					function Client.new(Identifier: string, conf: Type.ClientConf?)
 | 
				
			||||||
	local self = setmetatable({}, Client)
 | 
						local self = setmetatable({}, Client)
 | 
				
			||||||
| 
						 | 
					@ -21,6 +22,7 @@ function Client.new(Identifier: string, conf: Type.ClientConf?)
 | 
				
			||||||
	self._buffer:wu8(Serdes(Identifier, conf and conf.yieldWait))
 | 
						self._buffer:wu8(Serdes(Identifier, conf and conf.yieldWait))
 | 
				
			||||||
	self.id = Buffer.convert(self._buffer:build())
 | 
						self.id = Buffer.convert(self._buffer:build())
 | 
				
			||||||
	self.fn = {}
 | 
						self.fn = {}
 | 
				
			||||||
 | 
						self.middleware = {}
 | 
				
			||||||
	self._conf = table.freeze(conf or {})
 | 
						self._conf = table.freeze(conf or {})
 | 
				
			||||||
	self.IsConnected = false
 | 
						self.IsConnected = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,23 +45,39 @@ function Client:Invoke(timeout: number, ...: any): any
 | 
				
			||||||
	return ClientProcess.insertRequest(self.id, timeout, ...)
 | 
						return ClientProcess.insertRequest(self.id, timeout, ...)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client:Connect(callback: (args: any) -> ()): string
 | 
					function Client:Connect(callback: (args: any) -> ())
 | 
				
			||||||
	local key = tostring(Key())
 | 
						local key = tostring(Key())
 | 
				
			||||||
 | 
						local _middleware = Middleware(key)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	table.insert(self.fn, key)
 | 
						table.insert(self.fn, key)
 | 
				
			||||||
 | 
						self.middleware[key] = _middleware
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
	ClientProcess.addCallback(self.id, key, callback)
 | 
						ClientProcess.addCallback(self.id, key, function(...)
 | 
				
			||||||
	return key
 | 
							if _middleware.bridge(...) then
 | 
				
			||||||
 | 
								return callback(...)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						end)
 | 
				
			||||||
 | 
						return _middleware
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client:Once(callback: (args: any) -> ()): string
 | 
					function Client:Once(callback: (args: any) -> ())
 | 
				
			||||||
	local key = tostring(Key())
 | 
						local key = tostring(Key())
 | 
				
			||||||
 | 
						local _middleware = Middleware(key)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	table.insert(self.fn, key)
 | 
						table.insert(self.fn, key)
 | 
				
			||||||
 | 
						self.middleware[key] = _middleware
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
	ClientProcess.addCallback(self.id, key, function(...)
 | 
						ClientProcess.addCallback(self.id, key, function(...)
 | 
				
			||||||
		self:Disconnect(key)
 | 
							self:Disconnect(key)
 | 
				
			||||||
		task.spawn(callback, ...)
 | 
							if _middleware.bridge(...) then
 | 
				
			||||||
 | 
								return callback(...)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
	end)
 | 
						end)
 | 
				
			||||||
	return key
 | 
						return _middleware
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client:Wait()
 | 
					function Client:Wait()
 | 
				
			||||||
| 
						 | 
					@ -76,12 +94,15 @@ function Client:DisconnectAll()
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client:Disconnect(key: string): boolean
 | 
					function Client:Disconnect(key: string)
 | 
				
			||||||
	Assert(typeof(key) == "string", "Key must be a string type.")
 | 
						Assert(typeof(key) == "string", "Key must be a string type.")
 | 
				
			||||||
	ClientProcess.removeCallback(self.id, key)
 | 
						ClientProcess.removeCallback(self.id, key)
 | 
				
			||||||
	table.remove(self.fn, table.find(self.fn, key))
 | 
						table.remove(self.fn, table.find(self.fn, key))
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
	return table.find(self.fn, key) == nil
 | 
						if self.middleware[key] then
 | 
				
			||||||
 | 
							self.middleware[key]:destroy()
 | 
				
			||||||
 | 
							self.middleware[key] = nil
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Client:Destroy()
 | 
					function Client:Destroy()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ local Assert = require(Util.Assert)
 | 
				
			||||||
local Key = require(Util.Key)
 | 
					local Key = require(Util.Key)
 | 
				
			||||||
local Serdes = require(Util.Serdes)
 | 
					local Serdes = require(Util.Serdes)
 | 
				
			||||||
local Buffer = require(Util.Buffer)
 | 
					local Buffer = require(Util.Buffer)
 | 
				
			||||||
 | 
					local Middleware = require(Util.Middleware)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Server.new(Identifier: string, conf: Type.ServerConf?)
 | 
					function Server.new(Identifier: string, conf: Type.ServerConf?)
 | 
				
			||||||
	local self = setmetatable({}, Server)
 | 
						local self = setmetatable({}, Server)
 | 
				
			||||||
| 
						 | 
					@ -21,6 +22,7 @@ function Server.new(Identifier: string, conf: Type.ServerConf?)
 | 
				
			||||||
	self._buffer:wu8(Serdes(Identifier))
 | 
						self._buffer:wu8(Serdes(Identifier))
 | 
				
			||||||
	self.id = Buffer.convert(self._buffer:build())
 | 
						self.id = Buffer.convert(self._buffer:build())
 | 
				
			||||||
	self.fn = {}
 | 
						self.fn = {}
 | 
				
			||||||
 | 
						self.middleware = {}
 | 
				
			||||||
	self._conf = table.freeze(conf or {})
 | 
						self._conf = table.freeze(conf or {})
 | 
				
			||||||
	self.IsConnected = false
 | 
						self.IsConnected = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,23 +65,39 @@ function Server:Invoke(timeout: number, player: Player, ...: any): any
 | 
				
			||||||
	return ServerProcess.insertRequest(self.id, timeout, player, ...)
 | 
						return ServerProcess.insertRequest(self.id, timeout, player, ...)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Server:Connect(callback: (plyer: Player, args: any) -> ()): string
 | 
					function Server:Connect(callback: (plyer: Player, args: any) -> ())
 | 
				
			||||||
	local key = tostring(Key())
 | 
						local key = tostring(Key())
 | 
				
			||||||
 | 
						local _middleware = Middleware(key)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	table.insert(self.fn, key)
 | 
						table.insert(self.fn, key)
 | 
				
			||||||
	ServerProcess.addCallback(self.id, key, callback)
 | 
						self.middleware[key] = _middleware
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
	return key
 | 
						ServerProcess.addCallback(self.id, key, function(...)
 | 
				
			||||||
 | 
							if _middleware.bridge(...) then
 | 
				
			||||||
 | 
								return callback(...)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						end)
 | 
				
			||||||
 | 
						return _middleware
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Server:Once(callback: (plyer: Player, args: any) -> ()): string
 | 
					function Server:Once(callback: (plyer: Player, args: any) -> ())
 | 
				
			||||||
	local key = tostring(Key())
 | 
						local key = tostring(Key())
 | 
				
			||||||
 | 
						local _middleware = Middleware(key)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	table.insert(self.fn, key)
 | 
						table.insert(self.fn, key)
 | 
				
			||||||
 | 
						self.middleware[key] = _middleware
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
	ServerProcess.addCallback(self.id, key, function(...)
 | 
						ServerProcess.addCallback(self.id, key, function(...)
 | 
				
			||||||
		self:Disconnect(key)
 | 
							self:Disconnect(key)
 | 
				
			||||||
		task.spawn(callback, ...)
 | 
							if _middleware.bridge(...) then
 | 
				
			||||||
 | 
								return callback(...)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
	end)
 | 
						end)
 | 
				
			||||||
	return key
 | 
						return _middleware
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Server:Wait()
 | 
					function Server:Wait()
 | 
				
			||||||
| 
						 | 
					@ -101,6 +119,10 @@ function Server:Disconnect(key: string): boolean
 | 
				
			||||||
	ServerProcess.removeCallback(self.id, key)
 | 
						ServerProcess.removeCallback(self.id, key)
 | 
				
			||||||
	table.remove(self.fn, table.find(self.fn, key))
 | 
						table.remove(self.fn, table.find(self.fn, key))
 | 
				
			||||||
	self.IsConnected = #self.fn > 0
 | 
						self.IsConnected = #self.fn > 0
 | 
				
			||||||
 | 
						if self.middleware[key] then
 | 
				
			||||||
 | 
							self.middleware[key]:destroy()
 | 
				
			||||||
 | 
							self.middleware[key] = nil
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
	return table.find(self.fn, key) == nil
 | 
						return table.find(self.fn, key) == nil
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,11 +19,17 @@ export type ClientConf = {
 | 
				
			||||||
	logging: logging?,
 | 
						logging: logging?,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export type Middleware = {
 | 
				
			||||||
 | 
						middleware: (self: Middleware, middleware: (...any) -> (...any)) -> (),
 | 
				
			||||||
 | 
						key: (self: Middleware) -> string,
 | 
				
			||||||
 | 
						destroy: (self: Middleware) -> (),
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type Client = {
 | 
					export type Client = {
 | 
				
			||||||
	Fire: (self: Client, reliable: boolean, ...any) -> (),
 | 
						Fire: (self: Client, reliable: boolean, ...any) -> (),
 | 
				
			||||||
	Invoke: (self: Client, timeout: number, ...any) -> any,
 | 
						Invoke: (self: Client, timeout: number, ...any) -> any,
 | 
				
			||||||
	Connect: (self: Client, callback: (...any) -> ()) -> string,
 | 
						Connect: (self: Client, callback: (...any) -> ()) -> Middleware,
 | 
				
			||||||
	Once: (self: Client, callback: (player: Player, ...any) -> ()) -> string,
 | 
						Once: (self: Client, callback: (player: Player, ...any) -> ()) -> Middleware,
 | 
				
			||||||
	Disconnect: (self: Client, key: string) -> (),
 | 
						Disconnect: (self: Client, key: string) -> (),
 | 
				
			||||||
	DisconnectAll: (self: Client) -> (),
 | 
						DisconnectAll: (self: Client) -> (),
 | 
				
			||||||
	Wait: (self: Client) -> number,
 | 
						Wait: (self: Client) -> number,
 | 
				
			||||||
| 
						 | 
					@ -35,8 +41,8 @@ export type Server = {
 | 
				
			||||||
	Fire: (self: Server, reliable: boolean, player: Player, ...any) -> (),
 | 
						Fire: (self: Server, reliable: boolean, player: Player, ...any) -> (),
 | 
				
			||||||
	Fires: (self: Server, reliable: boolean, ...any) -> (),
 | 
						Fires: (self: Server, reliable: boolean, ...any) -> (),
 | 
				
			||||||
	Invoke: (self: Server, timeout: number, player: Player, ...any) -> any,
 | 
						Invoke: (self: Server, timeout: number, player: Player, ...any) -> any,
 | 
				
			||||||
	Connect: (self: Server, callback: (player: Player, ...any) -> ()) -> string,
 | 
						Connect: (self: Server, callback: (player: Player, ...any) -> ()) -> Middleware,
 | 
				
			||||||
	Once: (self: Server, callback: (player: Player, ...any) -> ()) -> string,
 | 
						Once: (self: Server, callback: (player: Player, ...any) -> ()) -> Middleware,
 | 
				
			||||||
	Disconnect: (self: Server, key: string) -> (),
 | 
						Disconnect: (self: Server, key: string) -> (),
 | 
				
			||||||
	DisconnectAll: (self: Server) -> (),
 | 
						DisconnectAll: (self: Server) -> (),
 | 
				
			||||||
	Wait: (self: Server) -> number,
 | 
						Wait: (self: Server) -> number,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										46
									
								
								src/Index/Util/Middleware.luau
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/Index/Util/Middleware.luau
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,46 @@
 | 
				
			||||||
 | 
					--!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)
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
-- Warp Library (@Eternity_Devs)
 | 
					-- Warp Library (@Eternity_Devs)
 | 
				
			||||||
-- version 1.0.11
 | 
					-- version 1.0.12
 | 
				
			||||||
--!strict
 | 
					--!strict
 | 
				
			||||||
--!native
 | 
					--!native
 | 
				
			||||||
--!optimize 2
 | 
					--!optimize 2
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
[package]
 | 
					[package]
 | 
				
			||||||
name = "imezx/warp"
 | 
					name = "imezx/warp"
 | 
				
			||||||
version = "1.0.11"
 | 
					version = "1.0.12"
 | 
				
			||||||
registry = "https://github.com/UpliftGames/wally-index"
 | 
					registry = "https://github.com/UpliftGames/wally-index"
 | 
				
			||||||
realm = "shared"
 | 
					realm = "shared"
 | 
				
			||||||
license = "MIT"
 | 
					license = "MIT"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue