Skip to content

Commit 7c5c5e2

Browse files
committed
feat: Generated routes for all test fixtures
1 parent 653c2cf commit 7c5c5e2

6 files changed

Lines changed: 69 additions & 11 deletions

File tree

src/lib/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/// <reference types="./global" />
2+
23
export { default as hooks } from "./hooks.js";
34
export { default as reactify } from "./reactify.js";
45
export { default as sveltify } from "./sveltify.svelte.js";

src/routes/fixtures/+page.svelte

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script lang="ts">
2+
function getFiles() {
3+
const modules = import.meta.glob("../../tests/fixtures/*.svelte");
4+
return Object.keys(modules).map(
5+
(path) => path.match(/([^/]+)\.svelte$/)?.[1],
6+
);
7+
}
8+
</script>
9+
10+
<ul>
11+
{#each getFiles() as file}
12+
<li><a href="/fixtures/{file}">{file}</a></li>
13+
{/each}
14+
</ul>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<script lang="ts">
2+
let { data } = $props();
3+
</script>
4+
5+
<header>
6+
<h1>{data.title}</h1>
7+
</header>
8+
<data.Fixture />
9+
10+
<style>
11+
header {
12+
background: #5c1eba;
13+
color: white;
14+
padding: 0.6em;
15+
border-radius: 8px;
16+
text-align: center;
17+
margin-bottom: 2em;
18+
}
19+
20+
h1 {
21+
font: 24px/1.1 sans-serif;
22+
margin: 0;
23+
}
24+
</style>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { Component } from "svelte";
2+
3+
export async function load({ params }) {
4+
return {
5+
title: params.fixture,
6+
Fixture: await getModule(params.fixture),
7+
};
8+
}
9+
10+
async function getModule(name: string) {
11+
const modules = import.meta.glob("../../../tests/fixtures/*.svelte");
12+
const loader = Object.entries(modules).find(
13+
([path]) => path.match(/([^/]+)\.svelte$/)?.[1] === name,
14+
);
15+
if (!loader) {
16+
throw new Error(`Fixture not found: ${name}`);
17+
}
18+
const module = await loader[1]();
19+
return (module as { default: Component }).default;
20+
}

src/routes/listitem/+page.svelte

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script lang="ts">
2+
import type React from "react";
3+
4+
const props: React.JSX.IntrinsicElements["div"] = {
5+
style: { backgroundColor: "#4c80db" },
6+
onClick: () => console.info("clicked"),
7+
};
8+
</script>
9+
10+
<react.div {...props}><span>Hi</span></react.div>

0 commit comments

Comments
 (0)