Skip to content

Constants & Errors

Default Configuration Constants

ConstantTypeValueDescription
DefaultMaxInputSizeint52428800Maximum input size (50MB)
DefaultMaxCacheEntriesint2000Maximum cache entries
DefaultWorkerPoolSizeint4Worker pool size
DefaultCacheTTLtime.Duration1hCache expiration time
DefaultCacheCleanuptime.Duration5mCache cleanup interval
DefaultMaxDepthint500Maximum DOM depth
DefaultProcessingTimeouttime.Duration30sProcessing timeout

Audit Constants

Audit Event Types

ConstantValueDescription
AuditEventBlockedTag"blocked_tag"Blocked tag
AuditEventBlockedAttr"blocked_attr"Blocked attribute
AuditEventBlockedURL"blocked_url"Blocked URL
AuditEventInputViolation"input_violation"Input violation
AuditEventDepthViolation"depth_violation"Depth violation
AuditEventTimeout"timeout"Processing timeout
AuditEventEncodingIssue"encoding_issue"Encoding issue
AuditEventPathTraversal"path_traversal"Path traversal attempt

Audit Levels

ConstantTypeValueDescription
AuditLevelInfoAuditLevel"info"Information level
AuditLevelWarningAuditLevel"warning"Warning level
AuditLevelCriticalAuditLevel"critical"Critical level

INFO

For detailed audit system usage and Sink types, see Audit System.

Sentinel Errors

ErrorMessageDescription
ErrInputTooLargehtml: input size exceeds maximumInput exceeds size limit
ErrInvalidHTMLhtml: invalid HTMLInvalid HTML content
ErrProcessorClosedhtml: processor closedProcessor is closed
ErrMaxDepthExceededhtml: max depth exceededMaximum depth exceeded
ErrInvalidConfightml: invalid configInvalid configuration
ErrProcessingTimeouthtml: processing timeout exceededProcessing timeout
ErrFileNotFoundhtml: file not foundFile not found
ErrInvalidFilePathhtml: invalid file pathInvalid file path
ErrInternalPanichtml: internal panic recoveredInternal panic recovered
ErrMultipleConfigshtml: at most one Config may be providedAt most one Config

Error Types

InputError

Input-related error carrying size information.

go
type InputError struct {
    Op       string // Operation name
    Size     int    // Actual size
    MaxSize  int    // Maximum limit
    InputErr error  // Original error
}

func (e *InputError) Error() string
func (e *InputError) Unwrap() error // → InputErr (if non-nil) or ErrInputTooLarge

ConfigError

Configuration validation error carrying field information.

go
type ConfigError struct {
    Field   string // Field name
    Value   any    // Invalid value
    Message string // Error description
}

func (e *ConfigError) Error() string
func (e *ConfigError) Unwrap() error // → ErrInvalidConfig

FileError

File operation error with automatic path truncation to prevent leakage.

go
type FileError struct {
    Op      string // Operation name
    Path    string // File path
    FileErr error  // Original error
}

func (e *FileError) Error() string        // Safe output (truncated path)
func (e *FileError) SafePath() string     // Returns filename only
func (e *FileError) Unwrap() error        // → ErrFileNotFound | original error | ErrInvalidFilePath
func (e *FileError) MarshalJSON() ([]byte, error) // also truncates the path during JSON marshalling (prevents leakage via API responses)

Safe Paths

Both FileError.Error() and SafePath() return truncated paths (filename only) to prevent path leakage. Access the Path field directly for internal debugging when the full path is needed.

Error Handling Patterns

go
result, err := html.Extract(data)
if err != nil {
    var inputErr *html.InputError
    var configErr *html.ConfigError
    var fileErr *html.FileError

    switch {
    case errors.Is(err, html.ErrInputTooLarge):
        // Input too large
    case errors.Is(err, html.ErrInvalidHTML):
        // Invalid HTML
    case errors.Is(err, html.ErrFileNotFound):
        // File not found
    case errors.As(err, &inputErr):
        fmt.Printf("Size %d exceeds limit %d\n", inputErr.Size, inputErr.MaxSize)
    case errors.As(err, &configErr):
        fmt.Printf("Config field %s invalid: %s\n", configErr.Field, configErr.Message)
    case errors.As(err, &fileErr):
        fmt.Printf("File: %s\n", fileErr.SafePath())
    }
}