Skip to content

Commit

Permalink
linked default css to svelte runtime when added
Browse files Browse the repository at this point in the history
revert the header with chunked

change overlay fs to  bud fs
  • Loading branch information
ralfiannor committed Sep 21, 2022
1 parent d35f4e1 commit f721555
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 9 deletions.
13 changes: 13 additions & 0 deletions framework/controller/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1286,6 +1286,7 @@ func TestViewUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err := res.Query("#bud_target")
Expand All @@ -1307,6 +1308,7 @@ func TestViewUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1328,6 +1330,7 @@ func TestViewUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1349,6 +1352,7 @@ func TestViewUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand Down Expand Up @@ -1431,6 +1435,7 @@ func TestViewNestedUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err := res.Query("#bud_target")
Expand All @@ -1452,6 +1457,7 @@ func TestViewNestedUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1473,6 +1479,7 @@ func TestViewNestedUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1494,6 +1501,7 @@ func TestViewNestedUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand Down Expand Up @@ -1579,6 +1587,7 @@ func TestViewDeepUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err := res.Query("#bud_target")
Expand All @@ -1600,6 +1609,7 @@ func TestViewDeepUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1621,6 +1631,7 @@ func TestViewDeepUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand All @@ -1642,6 +1653,7 @@ func TestViewDeepUnnamed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
el, err = res.Query("#bud_target")
Expand Down Expand Up @@ -1762,6 +1774,7 @@ func TestEmptyActionWithView(t *testing.T) {
// HTML response
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), `<h1>hello</h1>`)
Expand Down
6 changes: 6 additions & 0 deletions framework/view/ssr/ssr.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/livebud/bud/internal/gotemplate"
"github.com/livebud/bud/package/budfs"
"github.com/livebud/bud/package/gomod"
"github.com/livebud/bud/package/vfs"
)

// Response from evaluating SSR files
Expand Down Expand Up @@ -49,6 +50,11 @@ type Compiler struct {

func (c *Compiler) Compile(ctx context.Context, fsys budfs.FS) ([]byte, error) {
dir := c.module.Directory()

if existCss := vfs.Exist(fsys, "public/default.css"); nil == existCss {
svelteRuntime = strings.Replace(svelteRuntime, `<!-- default css -->`, `<link rel="stylesheet" href="default.css">`, 1)
}

result := esbuild.Build(esbuild.BuildOptions{
EntryPointsAdvanced: []esbuild.EntryPoint{
{
Expand Down
75 changes: 75 additions & 0 deletions framework/view/ssr/ssr_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,81 @@ func TestSvelteHello(t *testing.T) {
is.True(strings.Contains(res.Body, `<h1>hi world</h1>`))
}

func TestSvelteRemoveDefaultCss(t *testing.T) {
is := is.New(t)
log := testlog.New()
ctx := context.Background()
dir := t.TempDir()
td := testdir.New(dir)
td.Files["view/index.svelte"] = `<h1>hi world</h1>`
td.NodeModules["svelte"] = versions.Svelte
is.NoErr(td.Write(ctx))
vm, err := v8.Load()
is.NoErr(err)
svelteCompiler, err := svelte.Load(vm)
is.NoErr(err)
transformer := transformrt.MustLoad(svelte.NewTransformable(svelteCompiler))
module, err := gomod.Find(dir)
is.NoErr(err)
bfs := budfs.New(module, log)
is.NoErr(err)
bfs.FileGenerator("bud/view/_ssr.js", ssr.New(module, transformer.SSR))
// Read the wrapped version of index.svelte with node_modules rewritten
code, err := fs.ReadFile(bfs, "bud/view/_ssr.js")
is.NoErr(err)
is.True(strings.Contains(string(code), `create_ssr_component(`))
is.True(strings.Contains(string(code), `<h1>hi world</h1>`))
is.True(strings.Contains(string(code), `views["/"] = `))
result, err := vm.Eval("render.js", string(code)+`; bud.render("/", {})`)
is.NoErr(err)
var res ssr.Response
err = json.Unmarshal([]byte(result), &res)
is.NoErr(err)
is.Equal(res.Status, 200)
is.Equal(len(res.Headers), 1)
is.Equal(res.Headers["Content-Type"], "text/html")
// svelte must not linked to default.css when removed
is.True(!strings.Contains(res.Body, `<link rel="stylesheet" href="default.css">`))
is.True(strings.Contains(res.Body, `<!-- default css -->`))
}

func TestSvelteDefaultCss(t *testing.T) {
is := is.New(t)
log := testlog.New()
ctx := context.Background()
dir := t.TempDir()
td := testdir.New(dir)
td.Files["view/index.svelte"] = `<h1>hi world</h1>`
td.Files["public/default.css"] = `.body{}`
td.NodeModules["svelte"] = versions.Svelte
is.NoErr(td.Write(ctx))
vm, err := v8.Load()
is.NoErr(err)
svelteCompiler, err := svelte.Load(vm)
is.NoErr(err)
transformer := transformrt.MustLoad(svelte.NewTransformable(svelteCompiler))
module, err := gomod.Find(dir)
is.NoErr(err)
bfs := budfs.New(module, log)
is.NoErr(err)
bfs.FileGenerator("bud/view/_ssr.js", ssr.New(module, transformer.SSR))
// Read the wrapped version of index.svelte with node_modules rewritten
code, err := fs.ReadFile(bfs, "bud/view/_ssr.js")
is.NoErr(err)
is.True(strings.Contains(string(code), `create_ssr_component(`))
is.True(strings.Contains(string(code), `<h1>hi world</h1>`))
is.True(strings.Contains(string(code), `views["/"] = `))
result, err := vm.Eval("render.js", string(code)+`; bud.render("/", {})`)
is.NoErr(err)
var res ssr.Response
err = json.Unmarshal([]byte(result), &res)
is.NoErr(err)
is.Equal(res.Status, 200)
is.Equal(len(res.Headers), 1)
is.Equal(res.Headers["Content-Type"], "text/html")
is.True(strings.Contains(res.Body, `<link rel="stylesheet" href="default.css">`))
}

func TestSvelteAwait(t *testing.T) {
is := is.New(t)
log := testlog.New()
Expand Down
4 changes: 2 additions & 2 deletions framework/view/ssr/svelte.js
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,8 @@ var defaultLayout = {
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="default.css" />
<meta charset="utf-8" />
<!-- default css -->
${slots.head(props)}
</head>
<body>${slots.default(props)}</body>
Expand Down
4 changes: 2 additions & 2 deletions framework/view/ssr/svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ const defaultLayout = {
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="default.css" />
<meta charset="utf-8" />
<!-- default css -->
${slots.head(props)}
</head>
<body>${slots.default(props)}</body>
Expand Down
10 changes: 10 additions & 0 deletions framework/view/view_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func TestHello(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>hello</h1>")
Expand All @@ -62,6 +63,7 @@ func TestHello(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>hi</h1>")
Expand Down Expand Up @@ -115,6 +117,7 @@ func TestHelloEmbed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>hello</h1>")
Expand All @@ -135,6 +138,7 @@ func TestHelloEmbed(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>hello</h1>")
Expand Down Expand Up @@ -185,6 +189,7 @@ func TestChunks(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>index</h1>")
Expand All @@ -202,6 +207,7 @@ func TestChunks(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>show</h1>")
Expand Down Expand Up @@ -255,6 +261,7 @@ func TestConsoleLog(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>hello</h1>")
Expand Down Expand Up @@ -299,6 +306,7 @@ func TestRenameView(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>10</h1>")
Expand Down Expand Up @@ -375,6 +383,7 @@ func TestAddView(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<h1>10</h1>")
Expand Down Expand Up @@ -407,6 +416,7 @@ func TestSvelteImportFromNodeModule(t *testing.T) {
is.NoErr(err)
is.NoErr(res.DiffHeaders(`
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
`))
is.In(res.Body().String(), "<time datetime=\"2022-07-19 10:19:00\">Jul 19, 2022</time>")
Expand Down
5 changes: 0 additions & 5 deletions internal/embedded/embedded.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,3 @@ func Favicon() []byte {
func NormalizeCss() []byte {
return normalize
}

// EmptyCss reset the default css data
func EmptyCss() []byte {
return []byte("/* No Default CSS Loaded */")
}

0 comments on commit f721555

Please sign in to comment.