fix: Gitea Traefik routing and connection pool optimization
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Failing after 10m14s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Has been skipped
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Has been skipped
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
Security Vulnerability Scan / Check for Dependency Changes (push) Failing after 11m25s
Security Vulnerability Scan / Composer Security Audit (push) Has been cancelled
- Remove middleware reference from Gitea Traefik labels (caused routing issues) - Optimize Gitea connection pool settings (MAX_IDLE_CONNS=30, authentication_timeout=180s) - Add explicit service reference in Traefik labels - Fix intermittent 504 timeouts by improving PostgreSQL connection handling Fixes Gitea unreachability via git.michaelschiemer.de
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "LiveComponent Action Request",
|
||||
"description": "Schema for validating LiveComponent action requests",
|
||||
"type": "object",
|
||||
"required": ["method", "params", "state", "_csrf_token"],
|
||||
"properties": {
|
||||
"method": {
|
||||
"type": "string",
|
||||
"description": "Component action method name",
|
||||
"minLength": 1,
|
||||
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"
|
||||
},
|
||||
"params": {
|
||||
"type": "object",
|
||||
"description": "Action parameters (key-value pairs)",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"state": {
|
||||
"type": "object",
|
||||
"description": "Current component state",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"_csrf_token": {
|
||||
"type": "string",
|
||||
"description": "CSRF token for security validation",
|
||||
"minLength": 1
|
||||
},
|
||||
"fragments": {
|
||||
"type": "array",
|
||||
"description": "Optional fragment names for partial rendering",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
|
||||
105
resources/js/schemas/livecomponent-action-response.schema.json
Normal file
105
resources/js/schemas/livecomponent-action-response.schema.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "LiveComponent Action Response",
|
||||
"description": "Schema for validating LiveComponent action responses",
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"title": "Full HTML Response",
|
||||
"required": ["html", "state"],
|
||||
"properties": {
|
||||
"html": {
|
||||
"type": "string",
|
||||
"description": "Rendered component HTML"
|
||||
},
|
||||
"state": {
|
||||
"$ref": "#/definitions/componentState"
|
||||
},
|
||||
"events": {
|
||||
"type": "array",
|
||||
"description": "Component events to dispatch",
|
||||
"items": {
|
||||
"$ref": "#/definitions/componentEvent"
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"title": "Fragment Response",
|
||||
"required": ["fragments", "state"],
|
||||
"properties": {
|
||||
"fragments": {
|
||||
"type": "object",
|
||||
"description": "Fragment map for partial rendering",
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"state": {
|
||||
"$ref": "#/definitions/componentState"
|
||||
},
|
||||
"events": {
|
||||
"type": "array",
|
||||
"description": "Component events to dispatch",
|
||||
"items": {
|
||||
"$ref": "#/definitions/componentEvent"
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
],
|
||||
"definitions": {
|
||||
"componentState": {
|
||||
"type": "object",
|
||||
"required": ["id", "component", "data", "version"],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"description": "Component ID (format: component-name:instance-id)",
|
||||
"pattern": "^[a-z0-9_-]+:[a-z0-9_.-]+$"
|
||||
},
|
||||
"component": {
|
||||
"type": "string",
|
||||
"description": "Component name",
|
||||
"minLength": 1
|
||||
},
|
||||
"data": {
|
||||
"type": "object",
|
||||
"description": "Component state data",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"version": {
|
||||
"type": "integer",
|
||||
"description": "State version number",
|
||||
"minimum": 1
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"componentEvent": {
|
||||
"type": "object",
|
||||
"required": ["name", "payload"],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Event name",
|
||||
"minLength": 1
|
||||
},
|
||||
"payload": {
|
||||
"type": "object",
|
||||
"description": "Event payload data",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"target": {
|
||||
"type": ["string", "null"],
|
||||
"description": "Target component ID (null for broadcast)"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
59
resources/js/schemas/livecomponent-error.schema.json
Normal file
59
resources/js/schemas/livecomponent-error.schema.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "LiveComponent Error Response",
|
||||
"description": "Schema for standardized error responses from LiveComponent API",
|
||||
"type": "object",
|
||||
"required": ["success", "error"],
|
||||
"properties": {
|
||||
"success": {
|
||||
"type": "boolean",
|
||||
"const": false
|
||||
},
|
||||
"error": {
|
||||
"type": "object",
|
||||
"required": ["code", "message"],
|
||||
"properties": {
|
||||
"code": {
|
||||
"type": "string",
|
||||
"description": "Error code identifier",
|
||||
"enum": [
|
||||
"VALIDATION_ERROR",
|
||||
"COMPONENT_NOT_FOUND",
|
||||
"ACTION_NOT_FOUND",
|
||||
"CSRF_TOKEN_INVALID",
|
||||
"RATE_LIMIT_EXCEEDED",
|
||||
"STATE_CONFLICT",
|
||||
"UPLOAD_FAILED",
|
||||
"PERMISSION_DENIED",
|
||||
"INTERNAL_ERROR"
|
||||
]
|
||||
},
|
||||
"message": {
|
||||
"type": "string",
|
||||
"description": "Human-readable error message",
|
||||
"minLength": 1
|
||||
},
|
||||
"details": {
|
||||
"type": "object",
|
||||
"description": "Additional error details",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"componentId": {
|
||||
"type": "string",
|
||||
"description": "Component ID where error occurred"
|
||||
},
|
||||
"action": {
|
||||
"type": "string",
|
||||
"description": "Action method name that caused the error"
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "number",
|
||||
"description": "Unix timestamp of error occurrence"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user