mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore]: Bump github.com/tdewolff/minify/v2 from 2.20.14 to 2.20.16 (#2631)
Bumps [github.com/tdewolff/minify/v2](https://github.com/tdewolff/minify) from 2.20.14 to 2.20.16. - [Release notes](https://github.com/tdewolff/minify/releases) - [Commits](https://github.com/tdewolff/minify/compare/v2.20.14...v2.20.16) --- updated-dependencies: - dependency-name: github.com/tdewolff/minify/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
73
vendor/github.com/tdewolff/minify/v2/minify.go
generated
vendored
73
vendor/github.com/tdewolff/minify/v2/minify.go
generated
vendored
@ -29,7 +29,7 @@ var Warning = log.New(os.Stderr, "WARNING: ", 0)
|
||||
var ErrNotExist = errors.New("minifier does not exist for mimetype")
|
||||
|
||||
// ErrClosedWriter is returned when writing to a closed writer.
|
||||
var ErrClosedWriter = errors.New("write on closed writer")
|
||||
var ErrClosedWriter = errors.New("write on closed writer") // TODO: DEPRECATED, remove
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -253,32 +253,24 @@ func (m *M) Reader(mediatype string, r io.Reader) io.Reader {
|
||||
|
||||
// writer makes sure that errors from the minifier are passed down through Close (can be blocking).
|
||||
type writer struct {
|
||||
pw *io.PipeWriter
|
||||
io.WriteCloser
|
||||
wg sync.WaitGroup
|
||||
err error
|
||||
closed bool
|
||||
}
|
||||
|
||||
// Write intercepts any writes to the writer.
|
||||
func (w *writer) Write(b []byte) (int, error) {
|
||||
if w.closed {
|
||||
return 0, ErrClosedWriter
|
||||
}
|
||||
n, err := w.pw.Write(b)
|
||||
if w.err != nil {
|
||||
err = w.err
|
||||
}
|
||||
return n, err
|
||||
err error
|
||||
}
|
||||
|
||||
// Close must be called when writing has finished. It returns the error from the minifier.
|
||||
func (w *writer) Close() error {
|
||||
if !w.closed {
|
||||
w.pw.Close()
|
||||
w.wg.Wait()
|
||||
w.closed = true
|
||||
func (z *writer) Close() error {
|
||||
if z.closed {
|
||||
return nil
|
||||
}
|
||||
return w.err
|
||||
z.closed = true
|
||||
err := z.WriteCloser.Close()
|
||||
z.wg.Wait()
|
||||
if z.err == nil {
|
||||
return err
|
||||
}
|
||||
return z.err
|
||||
}
|
||||
|
||||
// Writer wraps a Writer interface and minifies the stream.
|
||||
@ -286,17 +278,16 @@ func (w *writer) Close() error {
|
||||
// The writer must be closed explicitly.
|
||||
func (m *M) Writer(mediatype string, w io.Writer) io.WriteCloser {
|
||||
pr, pw := io.Pipe()
|
||||
mw := &writer{pw, sync.WaitGroup{}, nil, false}
|
||||
mw.wg.Add(1)
|
||||
z := &writer{pw, sync.WaitGroup{}, false, nil}
|
||||
z.wg.Add(1)
|
||||
go func() {
|
||||
defer mw.wg.Done()
|
||||
|
||||
defer z.wg.Done()
|
||||
defer pr.Close()
|
||||
if err := m.Minify(mediatype, w, pr); err != nil {
|
||||
mw.err = err
|
||||
z.err = err
|
||||
}
|
||||
pr.Close()
|
||||
}()
|
||||
return mw
|
||||
return z
|
||||
}
|
||||
|
||||
// responseWriter wraps an http.ResponseWriter and makes sure that errors from the minifier are passed down through Close (can be blocking).
|
||||
@ -305,7 +296,7 @@ func (m *M) Writer(mediatype string, w io.Writer) io.WriteCloser {
|
||||
type responseWriter struct {
|
||||
http.ResponseWriter
|
||||
|
||||
writer *writer
|
||||
z io.Writer
|
||||
m *M
|
||||
mediatype string
|
||||
}
|
||||
@ -319,20 +310,34 @@ func (w *responseWriter) WriteHeader(status int) {
|
||||
// Write intercepts any writes to the response writer.
|
||||
// The first write will extract the Content-Type as the mediatype. Otherwise it falls back to the RequestURI extension.
|
||||
func (w *responseWriter) Write(b []byte) (int, error) {
|
||||
if w.writer == nil {
|
||||
if w.z == nil {
|
||||
// first write
|
||||
if mediatype := w.ResponseWriter.Header().Get("Content-Type"); mediatype != "" {
|
||||
w.mediatype = mediatype
|
||||
}
|
||||
w.writer = w.m.Writer(w.mediatype, w.ResponseWriter).(*writer)
|
||||
if _, params, minifier := w.m.Match(w.mediatype); minifier != nil {
|
||||
pr, pw := io.Pipe()
|
||||
z := &writer{pw, sync.WaitGroup{}, false, nil}
|
||||
z.wg.Add(1)
|
||||
go func() {
|
||||
defer z.wg.Done()
|
||||
defer pr.Close()
|
||||
if err := minifier(w.m, w.ResponseWriter, pr, params); err != nil {
|
||||
z.err = err
|
||||
}
|
||||
}()
|
||||
w.z = z
|
||||
} else {
|
||||
w.z = w.ResponseWriter
|
||||
}
|
||||
}
|
||||
return w.writer.Write(b)
|
||||
return w.z.Write(b)
|
||||
}
|
||||
|
||||
// Close must be called when writing has finished. It returns the error from the minifier.
|
||||
func (w *responseWriter) Close() error {
|
||||
if w.writer != nil {
|
||||
return w.writer.Close()
|
||||
if closer, ok := w.z.(interface{ Close() error }); ok {
|
||||
return closer.Close()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user