Added css minify

This commit is contained in:
2026-06-13 04:00:52 +08:00
parent 55541a5930
commit 803bd80557
10 changed files with 259 additions and 142 deletions
-87
View File
@@ -1,87 +0,0 @@
package closure
import (
"context"
"errors"
"log"
"time"
)
func NewCompileCache(workers int) *CompileCache {
c := &CompileCache{
client: NewClientFromEnv(),
states: make(map[string]CompileState),
results: make(map[string][]byte),
errors: make(map[string]error),
jobs: make(chan CompileJob, 128),
}
for i := 0; i < workers; i++ {
go c.worker()
}
return c
}
func (c *CompileCache) Get(hash string) ([]byte, bool) {
c.mu.Lock()
defer c.mu.Unlock()
if c.states[hash] != CompileReady {
return nil, false
}
return c.results[hash], true
}
func (c *CompileCache) Enqueue(job CompileJob) {
c.mu.Lock()
switch c.states[job.Hash] {
case CompilePending, CompileReady:
c.mu.Unlock()
return
}
c.states[job.Hash] = CompilePending
c.mu.Unlock()
select {
case c.jobs <- job:
default:
// Queue full. Don't block request path.
c.mu.Lock()
c.states[job.Hash] = CompileMissing
c.errors[job.Hash] = errors.New("compile queue full")
c.mu.Unlock()
}
}
func (c *CompileCache) worker() {
for job := range c.jobs {
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
req := CompileRequest{
ExternSources: job.ExternSources,
JSSources: job.JSSources,
Defines: job.Defines,
}
c.client.DebugPrintCurl(ctx, req)
out, err := c.client.Compile(ctx, req)
cancel()
c.mu.Lock()
if err == nil {
c.states[job.Hash] = CompileReady
c.results[job.Hash] = out
delete(c.errors, job.Hash)
} else {
log.Printf("compile failed: %v", err)
c.states[job.Hash] = CompileFailed
c.errors[job.Hash] = err
}
c.mu.Unlock()
}
}
+31
View File
@@ -0,0 +1,31 @@
package closure
import (
"context"
"fmt"
"github.com/tgckpg/resolver-go/internal/compilecache"
)
type Compiler struct {
client *Client
}
func NewCompiler() *Compiler {
return &Compiler{client: NewClientFromEnv()}
}
func (c *Compiler) Compile(ctx context.Context, job compilecache.Job) ([]byte, error) {
payload, ok := job.Payload.(CompilePayload)
if !ok {
return nil, fmt.Errorf("closure compiler got invalid payload type %T", job.Payload)
}
req := CompileRequest{
ExternSources: payload.ExternSources,
JSSources: payload.JSSources,
Defines: payload.Defines,
}
return c.client.Compile(ctx, req)
}
+8 -31
View File
@@ -1,20 +1,9 @@
package closure
import "sync"
type CompileState int
const (
CompileMissing CompileState = iota
CompilePending
CompileReady
CompileFailed
)
type CompileRequest struct {
ExternSources []SourceInput `json:"externSources,omitempty"`
JSSources []SourceInput `json:"jsSources"`
Defines map[string]any `json:"defines,omitempty"`
type CompilePayload struct {
ExternSources []SourceInput
JSSources []SourceInput
Defines map[string]any
}
type SourceInput struct {
@@ -22,22 +11,10 @@ type SourceInput struct {
Source string `json:"source"`
}
type CompileJob struct {
Hash string
Mode string
ExternSources []SourceInput
JSSources []SourceInput
Defines map[string]any
}
type CompileCache struct {
client *Client
mu sync.Mutex
states map[string]CompileState
results map[string][]byte
errors map[string]error
jobs chan CompileJob
type CompileRequest struct {
ExternSources []SourceInput `json:"externSources,omitempty"`
JSSources []SourceInput `json:"jsSources"`
Defines map[string]any `json:"defines,omitempty"`
}
type CompileResponse struct {