diff --git a/src/_site/components/Candies.svelte b/src/_site/components/Candies.svelte new file mode 100644 index 0000000..c169f5a --- /dev/null +++ b/src/_site/components/Candies.svelte @@ -0,0 +1,5 @@ + + + diff --git a/src/_site/components/Candy.island.svelte b/src/_site/components/Candy.island.svelte new file mode 100644 index 0000000..ca3d465 --- /dev/null +++ b/src/_site/components/Candy.island.svelte @@ -0,0 +1,8 @@ + + +
+ 🍭 Yum + +
diff --git a/src/_site/components/Orange.island.svelte b/src/_site/components/Orange.island.svelte new file mode 100644 index 0000000..02c63db --- /dev/null +++ b/src/_site/components/Orange.island.svelte @@ -0,0 +1,19 @@ + + +

🍊 naranja

+ + diff --git a/src/_site/routes/nested-islands.svelte b/src/_site/routes/nested-islands.svelte index 5c52bd5..207ad6f 100644 --- a/src/_site/routes/nested-islands.svelte +++ b/src/_site/routes/nested-islands.svelte @@ -1,9 +1,15 @@ Example of nested islands. + + + diff --git a/src/esbuild_plugins/svelte.ts b/src/esbuild_plugins/svelte.ts index 42db4e1..d59bc6b 100644 --- a/src/esbuild_plugins/svelte.ts +++ b/src/esbuild_plugins/svelte.ts @@ -1,8 +1,12 @@ -import { basename } from "https://deno.land/std@0.177.0/path/mod.ts"; +import { + basename, + dirname, + resolve, +} from "https://deno.land/std@0.177.0/path/mod.ts"; import type { Plugin } from "https://deno.land/x/esbuild@v0.17.16/mod.js"; import { compile, preprocess } from "npm:svelte/compiler"; -const filter = /\.svelte$/; +const filter = /\.svelte(\?\w+)?$/; interface SvelteOptions { site_dir: string; @@ -21,7 +25,15 @@ export const svelte = ( setup(build) { const generate = build.initialOptions.write ? "dom" : "ssr"; - build.onResolve({ filter }, ({ path, kind }) => { + build.onResolve({ filter }, ({ path, kind, importer }) => { + if (generate === "ssr") { + console.log("this item", { + path, + importer, + absolute: resolve(dirname(importer)), + }); + } + const is_island_entry_point = generate === "dom" && kind === "import-statement" && // matches our `components/**/*.island.svelte`, @@ -41,7 +53,7 @@ export const svelte = ( const source = await Deno.readTextFile(path); const is_island = filename.endsWith(".island.svelte"); - const processed = is_island && generate === "ssr" + const processed = is_island && generate === "ssr" && suffix !== "?clawed" ? (await preprocess(source, { markup: ({ content }) => { let processed = content; @@ -57,8 +69,7 @@ export const svelte = ( processed = non_html.join("") + `${html.trim()}`; @@ -74,7 +85,7 @@ export const svelte = ( generate, css: "injected", cssHash: ({ hash, css }) => `◖${hash(css)}◗`, - hydratable: generate === "dom", + hydratable: generate === "dom" || is_island, enableSourcemap: false, filename, });