package runner import ( "sync" "github.com/valyala/fasthttp" ) // Response represents a unified response from script execution type Response struct { // Basic properties Body any // Body content (any type) Metadata map[string]any // Additional metadata // HTTP specific properties Status int // HTTP status code Headers map[string]string // HTTP headers Cookies []*fasthttp.Cookie // HTTP cookies // Session information SessionData map[string]any } // Response pool to reduce allocations var responsePool = sync.Pool{ New: func() any { return &Response{ Status: 200, Headers: make(map[string]string, 8), Metadata: make(map[string]any, 8), Cookies: make([]*fasthttp.Cookie, 0, 4), SessionData: make(map[string]any, 8), } }, } // NewResponse creates a new response object from the pool func NewResponse() *Response { return responsePool.Get().(*Response) } // Release returns a response to the pool after cleaning it func ReleaseResponse(resp *Response) { if resp == nil { return } resp.Body = nil resp.Status = 200 resp.Headers = make(map[string]string, 8) resp.Metadata = make(map[string]any, 8) resp.Cookies = resp.Cookies[:0] resp.SessionData = make(map[string]any, 8) responsePool.Put(resp) }