Add redis support for distributed caching (#83)

* Add redis support for distributed caching

* Move towards the self-provided Redis connection pool and RESP protocol implementation.
Official redis client library won't work with yaegi.

* fixup! Move towards the self-provided Redis connection pool and RESP protocol implementation. Official redis client library won't work with yaegi.

* fixup! fixup! Move towards the self-provided Redis connection pool and RESP protocol implementation. Official redis client library won't work with yaegi.

* fixup! fixup! fixup! Move towards the self-provided Redis connection pool and RESP protocol implementation. Official redis client library won't work with yaegi.

* fixup! fixup! fixup! fixup! Move towards the self-provided Redis connection pool and RESP protocol implementation. Official redis client library won't work with yaegi.

* fixup! fixup! fixup! fixup! fixup! Move towards the self-provided Redis connection pool and RESP protocol implementation. Official redis client library won't work with yaegi.

* ... and another all nighter.

* fixup! ... and another all nighter.

* fixup! fixup! ... and another all nighter.

* fixup! fixup! fixup! ... and another all nighter.

* Resolve issue #85 by adding ability to set custom claims in JWT tokens

* Remove redundant validation in auth middleware ( issue #89 )

* Add ability to set cookie prefix for session cookies ( #87 )

* fixup! Add ability to set cookie prefix for session cookies ( #87 )

* Add ability to set cookie max age - issue #91

* Potential fix for code scanning alert no. 10: Size computation for allocation may overflow

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* fixup! Merge main into 0.8.0-redis: resolve conflicts

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
This commit is contained in:
2025-11-30 02:18:46 +00:00
committed by GitHub
parent 5fcbd54955
commit e64fc7f730
318 changed files with 100989 additions and 948 deletions
+29
View File
@@ -0,0 +1,29 @@
package ast
type PositionHolder interface {
Line() int
SetLine(int)
LastLine() int
SetLastLine(int)
}
type Node struct {
line int
lastline int
}
func (self *Node) Line() int {
return self.line
}
func (self *Node) SetLine(line int) {
self.line = line
}
func (self *Node) LastLine() int {
return self.lastline
}
func (self *Node) SetLastLine(line int) {
self.lastline = line
}
+138
View File
@@ -0,0 +1,138 @@
package ast
type Expr interface {
PositionHolder
exprMarker()
}
type ExprBase struct {
Node
}
func (expr *ExprBase) exprMarker() {}
/* ConstExprs {{{ */
type ConstExpr interface {
Expr
constExprMarker()
}
type ConstExprBase struct {
ExprBase
}
func (expr *ConstExprBase) constExprMarker() {}
type TrueExpr struct {
ConstExprBase
}
type FalseExpr struct {
ConstExprBase
}
type NilExpr struct {
ConstExprBase
}
type NumberExpr struct {
ConstExprBase
Value string
}
type StringExpr struct {
ConstExprBase
Value string
}
/* ConstExprs }}} */
type Comma3Expr struct {
ExprBase
AdjustRet bool
}
type IdentExpr struct {
ExprBase
Value string
}
type AttrGetExpr struct {
ExprBase
Object Expr
Key Expr
}
type TableExpr struct {
ExprBase
Fields []*Field
}
type FuncCallExpr struct {
ExprBase
Func Expr
Receiver Expr
Method string
Args []Expr
AdjustRet bool
}
type LogicalOpExpr struct {
ExprBase
Operator string
Lhs Expr
Rhs Expr
}
type RelationalOpExpr struct {
ExprBase
Operator string
Lhs Expr
Rhs Expr
}
type StringConcatOpExpr struct {
ExprBase
Lhs Expr
Rhs Expr
}
type ArithmeticOpExpr struct {
ExprBase
Operator string
Lhs Expr
Rhs Expr
}
type UnaryMinusOpExpr struct {
ExprBase
Expr Expr
}
type UnaryNotOpExpr struct {
ExprBase
Expr Expr
}
type UnaryLenOpExpr struct {
ExprBase
Expr Expr
}
type FunctionExpr struct {
ExprBase
ParList *ParList
Stmts []Stmt
}
+17
View File
@@ -0,0 +1,17 @@
package ast
type Field struct {
Key Expr
Value Expr
}
type ParList struct {
HasVargs bool
Names []string
}
type FuncName struct {
Func Expr
Receiver Expr
Method string
}
+107
View File
@@ -0,0 +1,107 @@
package ast
type Stmt interface {
PositionHolder
stmtMarker()
}
type StmtBase struct {
Node
}
func (stmt *StmtBase) stmtMarker() {}
type AssignStmt struct {
StmtBase
Lhs []Expr
Rhs []Expr
}
type LocalAssignStmt struct {
StmtBase
Names []string
Exprs []Expr
}
type FuncCallStmt struct {
StmtBase
Expr Expr
}
type DoBlockStmt struct {
StmtBase
Stmts []Stmt
}
type WhileStmt struct {
StmtBase
Condition Expr
Stmts []Stmt
}
type RepeatStmt struct {
StmtBase
Condition Expr
Stmts []Stmt
}
type IfStmt struct {
StmtBase
Condition Expr
Then []Stmt
Else []Stmt
}
type NumberForStmt struct {
StmtBase
Name string
Init Expr
Limit Expr
Step Expr
Stmts []Stmt
}
type GenericForStmt struct {
StmtBase
Names []string
Exprs []Expr
Stmts []Stmt
}
type FuncDefStmt struct {
StmtBase
Name *FuncName
Func *FunctionExpr
}
type ReturnStmt struct {
StmtBase
Exprs []Expr
}
type BreakStmt struct {
StmtBase
}
type LabelStmt struct {
StmtBase
Name string
}
type GotoStmt struct {
StmtBase
Label string
}
+22
View File
@@ -0,0 +1,22 @@
package ast
import (
"fmt"
)
type Position struct {
Source string
Line int
Column int
}
type Token struct {
Type int
Name string
Str string
Pos Position
}
func (self *Token) String() string {
return fmt.Sprintf("<type:%v, str:%v>", self.Name, self.Str)
}