Skip to main content

Middleware

Middleware singleton utility

Types

MiddlewareArgs<TArgs>

type MiddlewareArgs<TArgs> = TArgs & {[string]any}

MiddlewareResult<TRes,TArgs>

type MiddlewareResult<TRes,TArgs> = TRes & {
nextMiddlewareArgs<TArgs>?,
[string]any
}

Middleware<TArgs,TRes>

type Middleware<TArgs,TRes> = (MiddlewareArgs<TArgs>) → MiddlewareResult<TRes,TArgs>

Middlewares<TArgs,TRes>

type Middlewares<TArgs,TRes> = Middleware<TArgs,TRes> | {Middleware<TArgs;TRes>}

Functions

Call

Middleware.Call(
handlerMiddlewareHandler<TArgs,TRes>,
middlewaresMiddlewares<TArgs,TRes>,
argsMiddlewareArgs<TArgs>
) → TRes

Call a raw function with specified middleware and arguments

Examples

--!strict
--!optimize 2

-- type PrintSomethingArgs = { Message: string }
-- type PrintSomethingRet = {}

local function printSometing(args: PrintSomethingArgs): PrintSomethingRet
	print(args.Message)
	return {}
end

local loggerMiddleware: Middleware.Middleware<PrintSomethingArgs, PrintSomethingRet> = function(args)
	args.Message = "[INFO]: " .. args.Message
	return {
		next = args
	}
end

Middleware.Call(printSometing, loggerMiddleware, { Message = "Hello" })

Wrap

Middleware.Wrap(
handlerMiddlewareHandler<TArgs,TRes>,
middlewaresMiddlewares<TArgs,TRes>
) → (MiddlewareArgs<TArgs>) → TRes

Wrap a raw function to always be called with the specified middleware(s)

Examples

-- ...

local printNew = Middleware.Wrap(printSometing, loggerMiddleware)

printNew { Message = "Wassup" }
Show raw api
{
    "functions": [
        {
            "name": "Call",
            "desc": "Call a raw function with specified middleware and arguments\n\n#### Examples\n\n```lua\n--!strict\n--!optimize 2\n\n-- type PrintSomethingArgs = { Message: string }\n-- type PrintSomethingRet = {}\n\nlocal function printSometing(args: PrintSomethingArgs): PrintSomethingRet\n\tprint(args.Message)\n\treturn {}\nend\n\nlocal loggerMiddleware: Middleware.Middleware<PrintSomethingArgs, PrintSomethingRet> = function(args)\n\targs.Message = \"[INFO]: \" .. args.Message\n\treturn {\n\t\tnext = args\n\t}\nend\n\nMiddleware.Call(printSometing, loggerMiddleware, { Message = \"Hello\" })\n```",
            "params": [
                {
                    "name": "handler",
                    "desc": "",
                    "lua_type": "MiddlewareHandler<TArgs, TRes>"
                },
                {
                    "name": "middlewares",
                    "desc": "",
                    "lua_type": "Middlewares<TArgs, TRes>"
                },
                {
                    "name": "args",
                    "desc": "",
                    "lua_type": "MiddlewareArgs<TArgs>\n"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TRes\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 121,
                "path": "src/roket/module/Middleware.luau"
            }
        },
        {
            "name": "Wrap",
            "desc": "Wrap a raw function to always be called with the specified middleware(s)\n\n#### Examples\n\n```lua\n-- ...\n\nlocal printNew = Middleware.Wrap(printSometing, loggerMiddleware)\n\nprintNew { Message = \"Wassup\" }\n```",
            "params": [
                {
                    "name": "handler",
                    "desc": "",
                    "lua_type": "MiddlewareHandler<TArgs, TRes>"
                },
                {
                    "name": "middlewares",
                    "desc": "",
                    "lua_type": "Middlewares<TArgs, TRes>\n"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "(MiddlewareArgs<TArgs>) -> TRes\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 164,
                "path": "src/roket/module/Middleware.luau"
            }
        }
    ],
    "properties": [],
    "types": [
        {
            "name": "MiddlewareArgs<TArgs>",
            "desc": "",
            "lua_type": "TArgs & { [string]: any }",
            "source": {
                "line": 31,
                "path": "src/roket/module/Middleware.luau"
            }
        },
        {
            "name": "MiddlewareResult<TRes,TArgs>",
            "desc": "",
            "lua_type": "TRes & { next: MiddlewareArgs<TArgs>?, [string]: any }",
            "source": {
                "line": 40,
                "path": "src/roket/module/Middleware.luau"
            }
        },
        {
            "name": "Middleware<TArgs,TRes>",
            "desc": "",
            "lua_type": "(MiddlewareArgs<TArgs>) -> MiddlewareResult<TRes, TArgs>",
            "source": {
                "line": 51,
                "path": "src/roket/module/Middleware.luau"
            }
        },
        {
            "name": "Middlewares<TArgs,TRes>",
            "desc": "",
            "lua_type": "Middleware<TArgs,TRes> | { Middleware<TArgs;TRes> }",
            "source": {
                "line": 57,
                "path": "src/roket/module/Middleware.luau"
            }
        }
    ],
    "name": "Middleware",
    "desc": "Middleware singleton utility",
    "source": {
        "line": 9,
        "path": "src/roket/module/Middleware.luau"
    }
}