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,
});