Download internal/engine/engine.go from AUXteam/pinch: direct link, hf CLI and curl.
- Browser
- Download file 2.33 kB
-
https://huggingface.co/spaces/AUXteam/pinch/resolve/main/internal/engine/engine.go
- Command line
-
hf download hf://spaces/AUXteam/pinch/internal/engine/engine.go
-
curl -L -o engine.go https://huggingface.co/spaces/AUXteam/pinch/resolve/main/internal/engine/engine.go
2.33 kB
| // Package engine provides a routing layer that decides whether to fulfil | |
| // a request using the lightweight Gost-DOM engine ("lite") or Chrome (via CDP). | |
| // | |
| // The Router is the single entry point for handler code. Route rules are | |
| // pluggable: callers add / remove rules without touching handlers, bridge, | |
| // or any other package. | |
| package engine | |
| import "context" | |
| // Capability identifies an operation the engine may handle. | |
| type Capability string | |
| const ( | |
| CapNavigate Capability = "navigate" | |
| CapSnapshot Capability = "snapshot" | |
| CapText Capability = "text" | |
| CapClick Capability = "click" | |
| CapType Capability = "type" | |
| CapScreenshot Capability = "screenshot" | |
| CapPDF Capability = "pdf" | |
| CapEvaluate Capability = "evaluate" | |
| CapCookies Capability = "cookies" | |
| ) | |
| // Mode controls the engine selection strategy. | |
| type Mode string | |
| const ( | |
| ModeChrome Mode = "chrome" // always Chrome (default) | |
| ModeLite Mode = "lite" // always lite (screenshot/pdf return 501) | |
| ModeAuto Mode = "auto" // per-request routing via rules | |
| ) | |
| // Decision is the routing verdict returned by a RouteRule. | |
| type Decision int | |
| const ( | |
| Undecided Decision = iota // rule has no opinion | |
| UseLite // route to Gost-DOM | |
| UseChrome // route to Chrome | |
| ) | |
| // NavigateResult is the response from a navigation. | |
| type NavigateResult struct { | |
| TabID string `json:"tabId"` | |
| URL string `json:"url"` | |
| Title string `json:"title"` | |
| } | |
| // SnapshotNode represents a single node in the accessibility-style snapshot. | |
| type SnapshotNode struct { | |
| Ref string `json:"ref"` | |
| Role string `json:"role"` | |
| Name string `json:"name"` | |
| Tag string `json:"tag,omitempty"` | |
| Value string `json:"value,omitempty"` | |
| Depth int `json:"depth"` | |
| Interactive bool `json:"interactive,omitempty"` | |
| } | |
| // Engine is the minimal interface both lite and chrome wrappers implement. | |
| type Engine interface { | |
| Name() string | |
| Navigate(ctx context.Context, url string) (*NavigateResult, error) | |
| Snapshot(ctx context.Context, tabID, filter string) ([]SnapshotNode, error) | |
| Text(ctx context.Context, tabID string) (string, error) | |
| Click(ctx context.Context, tabID, ref string) error | |
| Type(ctx context.Context, tabID, ref, text string) error | |
| Capabilities() []Capability | |
| Close() error | |
| } | |