@@ -2,7 +2,6 @@ package server
22
33import (
44 "bytes"
5- "embed"
65 "io/fs"
76 "net/http"
87 "net/url"
@@ -20,14 +19,6 @@ import (
2019 "google.golang.org/protobuf/encoding/protojson"
2120)
2221
23- // TODO(jlewi): I think we should get rid of embedded assets. Now that we publish and download assets
24- // via OCI not sure its worth it to have another code path. The problem with embedded assets is that its
25- // difficult to layer on additional static assets like configs. If we pull them from the filesystem then
26- // users can just add their own assets to subdirectories.
27-
28- //go:embed dist/*
29- var embeddedAssets embed.FS
30-
3122// AssetsFileSystemProvider is an interface for providing asset filesystems.
3223// This allows the server to be decoupled from how assets are constructed.
3324type AssetsFileSystemProvider interface {
@@ -57,38 +48,6 @@ func (s *staticAssetsFileSystemProvider) GetAssetsFileSystem() (fs.FS, error) {
5748 return os .DirFS (s .staticAssets ), nil
5849}
5950
60- // embeddedAssetsFileSystemProvider provides assets from embedded files.
61- type embeddedAssetsFileSystemProvider struct {
62- embeddedFS embed.FS
63- subPath string
64- }
65-
66- // NewEmbeddedAssetsFileSystemProvider creates a provider that serves assets from embedded files.
67- // The subPath parameter specifies the subdirectory within the embedded filesystem (e.g., "dist").
68- func NewEmbeddedAssetsFileSystemProvider (embeddedFS embed.FS , subPath string ) AssetsFileSystemProvider {
69- return & embeddedAssetsFileSystemProvider {
70- embeddedFS : embeddedFS ,
71- subPath : subPath ,
72- }
73- }
74-
75- // GetAssetsFileSystem implements AssetsFileSystemProvider by returning a filesystem
76- // for the embedded assets.
77- func (e * embeddedAssetsFileSystemProvider ) GetAssetsFileSystem () (fs.FS , error ) {
78- log := zapr .NewLogger (zap .L ())
79- distFS , err := fs .Sub (e .embeddedFS , e .subPath )
80- if err != nil {
81- return nil , errors .Wrapf (err , "failed to create sub filesystem for embedded assets" )
82- }
83- // Verify that index.html exists
84- _ , err = distFS .Open ("index.html" )
85- if err != nil {
86- return nil , errors .Wrapf (err , "embedded assets not available: index.html not found" )
87- }
88- log .Info ("Serving embedded assets" )
89- return distFS , nil
90- }
91-
9251// fallbackAssetsFileSystemProvider tries multiple providers in order until one succeeds.
9352type fallbackAssetsFileSystemProvider struct {
9453 providers []AssetsFileSystemProvider
@@ -119,39 +78,25 @@ func (f *fallbackAssetsFileSystemProvider) GetAssetsFileSystem() (fs.FS, error)
11978 return nil , errors .Wrapf (lastErr , "all asset providers failed" )
12079}
12180
122- // defaultAssetsFileSystemProvider is the default implementation that tries
123- // static assets first, then falls back to embedded assets.
81+ // defaultAssetsFileSystemProvider is the default implementation that serves
82+ // assets from the static assets directory .
12483type defaultAssetsFileSystemProvider struct {
12584 staticAssets string
12685}
12786
12887// NewDefaultAssetsFileSystemProvider creates a new default asset filesystem provider
129- // that tries static assets first, then embedded assets as a fallback.
130- // This preserves the original behavior of getAssetsFileSystem.
88+ // that serves assets from the static assets directory.
13189func NewDefaultAssetsFileSystemProvider (staticAssets string ) AssetsFileSystemProvider {
13290 return & defaultAssetsFileSystemProvider {
13391 staticAssets : staticAssets ,
13492 }
13593}
13694
137- // GetAssetsFileSystem implements AssetsFileSystemProvider by trying static assets first,
138- // then falling back to embedded assets. This preserves the original behavior.
95+ // GetAssetsFileSystem implements AssetsFileSystemProvider by serving static assets.
13996func (d * defaultAssetsFileSystemProvider ) GetAssetsFileSystem () (fs.FS , error ) {
140- var providers []AssetsFileSystemProvider
141-
142- // If static assets directory is specified, try it first
143- if d .staticAssets != "" {
144- providers = append (providers , NewStaticAssetsFileSystemProvider (d .staticAssets ))
145- }
146-
147- // Always try embedded assets as fallback
148- providers = append (providers , NewEmbeddedAssetsFileSystemProvider (embeddedAssets , "dist" ))
149-
150- // Use fallback provider to try them in order
151- fallback := NewFallbackAssetsFileSystemProvider (providers ... )
152- fs , err := fallback .GetAssetsFileSystem ()
97+ fs , err := NewStaticAssetsFileSystemProvider (d .staticAssets ).GetAssetsFileSystem ()
15398 if err != nil {
154- return nil , errors .New ("no assets available: neither staticAssets directory is configured nor embedded assets could be found " )
99+ return nil , errors .New ("no assets available: staticAssets directory is not configured " )
155100 }
156101 return fs , nil
157102}
@@ -200,7 +145,7 @@ func (s *Server) processIndexHTMLWithConfig(assetsFS fs.FS) ([]byte, error) {
200145 return content , nil
201146}
202147
203- // singlePageAppHandler serves a single-page app from static or embedded assets,
148+ // singlePageAppHandler serves a single-page app from static assets,
204149// falling back to index for client-side routing when files don't exist.
205150func (s * Server ) singlePageAppHandler () (http.Handler , error ) {
206151 if s .assetsFS == nil {
0 commit comments