create-routify 0.0.0-reserve → 1.0.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{readme.md → README.md} +0 -0
- package/package.json +18 -11
- package/src/bin.js +12 -0
- package/src/index.js +79 -0
- package/src/utils/prompts.js +10 -0
- package/src/versions/three/examples/buildtime-data/index.html +31 -0
- package/src/versions/three/examples/buildtime-data/package.json +15 -0
- package/src/versions/three/examples/buildtime-data/src/App.svelte +6 -0
- package/src/versions/three/examples/buildtime-data/src/main.js +5 -0
- package/src/versions/three/examples/buildtime-data/src/routes/index.meta.js +40 -0
- package/src/versions/three/examples/buildtime-data/src/routes/index.svelte +26 -0
- package/src/versions/three/examples/buildtime-data/vite.config.js +24 -0
- package/src/versions/three/examples/experiment/index.html +31 -0
- package/src/versions/three/examples/experiment/jsconfig.json +20 -0
- package/src/versions/three/examples/experiment/package.json +18 -0
- package/src/versions/three/examples/experiment/src/App.svelte +6 -0
- package/src/versions/three/examples/experiment/src/main.js +5 -0
- package/src/versions/three/examples/experiment/src/routes/[page].svelte +41 -0
- package/src/versions/three/examples/experiment/src/routes/_navigation.svelte +17 -0
- package/src/versions/three/examples/experiment/src/routes/index.svelte +3 -0
- package/src/versions/three/examples/experiment/src/routes/pages/contact/index.md +1 -0
- package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/foo.svelte +1 -0
- package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/index.md +3 -0
- package/src/versions/three/examples/experiment/src/routes/pages/gallery/index.svelte +15 -0
- package/src/versions/three/examples/experiment/src/routes/pages/home/index.md +1 -0
- package/src/versions/three/examples/experiment/vite.config.js +27 -0
- package/src/versions/three/examples/kitchensink/index.html +18 -0
- package/src/versions/three/examples/kitchensink/package.json +16 -0
- package/src/versions/three/examples/kitchensink/src/App.svelte +6 -0
- package/src/versions/three/examples/kitchensink/src/components/Navigation.svelte +29 -0
- package/src/versions/three/examples/kitchensink/src/main.js +5 -0
- package/src/versions/three/examples/kitchensink/src/routes/_module.svelte +8 -0
- package/src/versions/three/examples/kitchensink/src/routes/composition/index.svelte +5 -0
- package/src/versions/three/examples/kitchensink/src/routes/composition/reset/_module.svelte +2 -0
- package/src/versions/three/examples/kitchensink/src/routes/composition/reset/index.svelte +7 -0
- package/src/versions/three/examples/kitchensink/src/routes/index.md +2 -0
- package/src/versions/three/examples/kitchensink/src/routes/multi-router/_module.md +4 -0
- package/src/versions/three/examples/kitchensink/src/routes/multi-router/basic.svelte +13 -0
- package/src/versions/three/examples/kitchensink/src/routes/multi-router/index.svelte +0 -0
- package/src/versions/three/examples/kitchensink/src/routes/multi-router/rootnode.svelte +15 -0
- package/src/versions/three/examples/kitchensink/src/routes/redirect/index.svelte +10 -0
- package/src/versions/three/examples/kitchensink/vite.config.js +24 -0
- package/src/versions/three/examples/microframework/app/index.html +31 -0
- package/src/versions/three/examples/microframework/app/package.json +15 -0
- package/src/versions/three/examples/microframework/app/src/App.svelte +24 -0
- package/src/versions/three/examples/microframework/app/src/main.js +5 -0
- package/src/versions/three/examples/microframework/app/src/routes/_module.md +3 -0
- package/src/versions/three/examples/microframework/app/src/routes/index.md +1 -0
- package/src/versions/three/examples/microframework/app/src/routes/internal-module/index.md +1 -0
- package/src/versions/three/examples/microframework/app/vite.config.js +29 -0
- package/src/versions/three/examples/microframework/module/index.html +31 -0
- package/src/versions/three/examples/microframework/module/package.json +15 -0
- package/src/versions/three/examples/microframework/module/src/App.svelte +6 -0
- package/src/versions/three/examples/microframework/module/src/main.js +5 -0
- package/src/versions/three/examples/microframework/module/src/routes/external-page.md +1 -0
- package/src/versions/three/examples/microframework/module/src/routes/index.svelte +7 -0
- package/src/versions/three/examples/microframework/module/vite.config.js +24 -0
- package/src/versions/three/examples/multi-router/index.html +24 -0
- package/src/versions/three/examples/multi-router/package.json +16 -0
- package/src/versions/three/examples/multi-router/src/App.svelte +8 -0
- package/src/versions/three/examples/multi-router/src/main.js +5 -0
- package/src/versions/three/examples/multi-router/src/routes/_module.svelte +5 -0
- package/src/versions/three/examples/multi-router/src/routes/index.md +4 -0
- package/src/versions/three/examples/multi-router/src/routes/page-with-widget.svelte +7 -0
- package/src/versions/three/examples/multi-router/src/widget/_module.svelte +7 -0
- package/src/versions/three/examples/multi-router/src/widget/index.md +1 -0
- package/src/versions/three/examples/multi-router/src/widget/page1.md +1 -0
- package/src/versions/three/examples/multi-router/src/widget/page2.md +1 -0
- package/src/versions/three/examples/multi-router/vite.config.js +29 -0
- package/src/versions/three/examples/portfolio/.persistent/src/pages/2.projects/_module.svelte/fetchRepos_reponames-27-4zq41g.json +735 -0
- package/src/versions/three/examples/portfolio/package.json +23 -0
- package/src/versions/three/examples/portfolio/src/app.html +18 -0
- package/src/versions/three/examples/portfolio/src/global.d.ts +1 -0
- package/src/versions/three/examples/portfolio/src/pages/1.home/index.svelte +3 -0
- package/src/versions/three/examples/portfolio/src/pages/2.projects/[project].svelte +41 -0
- package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.meta.js +36 -0
- package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.svelte +28 -0
- package/src/versions/three/examples/portfolio/src/pages/3.about-me/_module.svelte +3 -0
- package/src/versions/three/examples/portfolio/src/pages/3.about-me/index.svelte +1 -0
- package/src/versions/three/examples/portfolio/src/pages/_loader.svelte +15 -0
- package/src/versions/three/examples/portfolio/src/pages/_module.svelte +41 -0
- package/src/versions/three/examples/portfolio/src/pages/_navigation.svelte +30 -0
- package/src/versions/three/examples/portfolio/src/pages/index.svelte +5 -0
- package/src/versions/three/examples/portfolio/src/routes/[...index].svelte +12 -0
- package/src/versions/three/examples/portfolio/src/utils/github.js +21 -0
- package/src/versions/three/examples/portfolio/static/favicon.png +0 -0
- package/src/versions/three/examples/portfolio/svelte.config.js +26 -0
- package/src/versions/three/examples/subpath/index.html +31 -0
- package/src/versions/three/examples/subpath/package.json +16 -0
- package/src/versions/three/examples/subpath/src/App.svelte +12 -0
- package/src/versions/three/examples/subpath/src/main.js +5 -0
- package/src/versions/three/examples/subpath/src/routes/foo.svelte +1 -0
- package/src/versions/three/examples/subpath/src/routes/index.svelte +7 -0
- package/src/versions/three/examples/subpath/vite.config.js +24 -0
- package/src/versions/three/examples/sveltekit/package.json +20 -0
- package/src/versions/three/examples/sveltekit/src/app.html +12 -0
- package/src/versions/three/examples/sveltekit/src/global.d.ts +1 -0
- package/src/versions/three/examples/sveltekit/src/pages/a/page.svelte +1 -0
- package/src/versions/three/examples/sveltekit/src/pages/index.svelte +6 -0
- package/src/versions/three/examples/sveltekit/src/routes/[...index].svelte +11 -0
- package/src/versions/three/examples/sveltekit/static/favicon.png +0 -0
- package/src/versions/three/examples/sveltekit/svelte.config.js +20 -0
- package/src/versions/three/index.js +81 -0
- package/src/versions/three/skeleton/index.html +31 -0
- package/src/versions/three/skeleton/package.json +16 -0
- package/src/versions/three/skeleton/src/App.svelte +6 -0
- package/src/versions/three/skeleton/src/main.js +5 -0
- package/src/versions/three/skeleton/src/routes/index.md +1 -0
- package/src/versions/three/skeleton/vite.config.js +24 -0
- package/src/versions/two.js +3 -0
- package/bin/routify-cli.js +0 -31
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@example/portfolio",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"dev": "svelte-kit dev",
|
|
6
|
+
"build": "svelte-kit build",
|
|
7
|
+
"preview": "svelte-kit preview"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@roxi/routify": "^3.0.0-next.53",
|
|
11
|
+
"marked": "^4.0.0",
|
|
12
|
+
"axios": "^0.24.0"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@sveltejs/adapter-vercel": "^1.0.0-next.31",
|
|
16
|
+
"@sveltejs/kit": "next",
|
|
17
|
+
"svelte": "^3.34.0"
|
|
18
|
+
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"routify": {
|
|
21
|
+
"routesDir": "src/pages"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<link rel="icon" href="/favicon.png" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
8
|
+
%svelte.head%
|
|
9
|
+
|
|
10
|
+
<!-- Pico.css -->
|
|
11
|
+
<link rel="stylesheet" href="https://unpkg.com/@picocss/pico@1.3.3/css/pico.css" />
|
|
12
|
+
</head>
|
|
13
|
+
|
|
14
|
+
<body>
|
|
15
|
+
<div id="svelte">%svelte.body%</div>
|
|
16
|
+
</body>
|
|
17
|
+
|
|
18
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="@sveltejs/kit" />
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script context="module">
|
|
2
|
+
export const load = async ({ route, node }) => {
|
|
3
|
+
const { meta } = node.traverse('..')
|
|
4
|
+
const { project } = route.params
|
|
5
|
+
const repo = meta.repos.find(repo => repo.data.name === project)
|
|
6
|
+
// await new Promise(resolve => setTimeout(resolve, 500))
|
|
7
|
+
if (repo)
|
|
8
|
+
return {
|
|
9
|
+
readme: await repo.readme(),
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
import { url } from '@roxi/routify'
|
|
16
|
+
export let context
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<article class="project">
|
|
20
|
+
<div>
|
|
21
|
+
{@html context.load.readme}
|
|
22
|
+
</div>
|
|
23
|
+
</article>
|
|
24
|
+
<a class="close" href={$url('../')}> <button> close </button></a>
|
|
25
|
+
|
|
26
|
+
<style>
|
|
27
|
+
article {
|
|
28
|
+
position: absolute;
|
|
29
|
+
top: 0;
|
|
30
|
+
left: 0;
|
|
31
|
+
bottom: 0;
|
|
32
|
+
right: 0;
|
|
33
|
+
overflow: auto;
|
|
34
|
+
}
|
|
35
|
+
.close {
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 56px;
|
|
38
|
+
right: 32px;
|
|
39
|
+
display: inline-block;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
import { fetchRepos, fixGithubImages, parseReadme } from '../../utils/github.js'
|
|
3
|
+
|
|
4
|
+
const isProduction = process.env.NODE_ENV === 'production' && true
|
|
5
|
+
|
|
6
|
+
const reponames = [
|
|
7
|
+
'roxiness/routify',
|
|
8
|
+
'roxiness/configent',
|
|
9
|
+
'roxiness/tossr',
|
|
10
|
+
'roxiness/stackmix',
|
|
11
|
+
'roxiness/poindexter',
|
|
12
|
+
'jakobrosenberg/consolite',
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @param {MetaContext} context
|
|
17
|
+
*/
|
|
18
|
+
export default async ({ split, persist }) => {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Github has a rate limit of 60 requests pr hour.
|
|
22
|
+
* To get around this we persist the return call.
|
|
23
|
+
* This will save our data to disk and use it on subsequent requests.
|
|
24
|
+
*/
|
|
25
|
+
const repos = await persist(() => fetchRepos(reponames), isProduction)
|
|
26
|
+
|
|
27
|
+
repos.forEach(parseReadme)
|
|
28
|
+
repos.forEach(fixGithubImages)
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* To keep the bundle light, we'll code-split (dynamic import) the individual readme's.
|
|
32
|
+
*/
|
|
33
|
+
repos.forEach(repo => (repo.readme = split(repo.readme)))
|
|
34
|
+
|
|
35
|
+
return { repos }
|
|
36
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { meta, url } from '@roxi/routify'
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class="page">
|
|
6
|
+
<h1>projects</h1>
|
|
7
|
+
<ul class="projects">
|
|
8
|
+
{#each $meta.repos as repo}
|
|
9
|
+
<div>
|
|
10
|
+
<h3>
|
|
11
|
+
<a href={$url('./[project]', { project: repo.data.name })}>
|
|
12
|
+
{repo.data.name}
|
|
13
|
+
</a>
|
|
14
|
+
<p>
|
|
15
|
+
{repo.data.description || ''}
|
|
16
|
+
</p>
|
|
17
|
+
</h3>
|
|
18
|
+
</div>
|
|
19
|
+
{/each}
|
|
20
|
+
</ul>
|
|
21
|
+
<slot />
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<style>
|
|
25
|
+
.page {
|
|
26
|
+
position: relative;
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
about me
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { pendingRoute } from '@roxi/routify'
|
|
3
|
+
$: value = $pendingRoute && 0
|
|
4
|
+
setInterval(() => value++, 10)
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
{#if $pendingRoute}
|
|
8
|
+
<progress {value} max="100" />
|
|
9
|
+
{/if}
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
progress {
|
|
13
|
+
position: fixed;
|
|
14
|
+
}
|
|
15
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { InlineNav } from '@roxi/routify/lib/components/index'
|
|
3
|
+
import Navigation from './_navigation.svelte'
|
|
4
|
+
import Loader from './_loader.svelte'
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<Loader />
|
|
8
|
+
<InlineNav let:pages let:index>
|
|
9
|
+
<Navigation {pages} />
|
|
10
|
+
<div class="container" style="--page-index: {index}">
|
|
11
|
+
{#each pages as { Page, router }}
|
|
12
|
+
<div
|
|
13
|
+
class="page"
|
|
14
|
+
on:click={history.pushState(null, null, router.url.external())}>
|
|
15
|
+
<Page />
|
|
16
|
+
</div>
|
|
17
|
+
{/each}
|
|
18
|
+
</div>
|
|
19
|
+
</InlineNav>
|
|
20
|
+
|
|
21
|
+
<style>
|
|
22
|
+
:global(*) {
|
|
23
|
+
max-height: 100%;
|
|
24
|
+
}
|
|
25
|
+
:global(html),
|
|
26
|
+
:global(body) {
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
}
|
|
29
|
+
.container {
|
|
30
|
+
transition: transform 0.3s;
|
|
31
|
+
transform: translateX(calc(-100% * var(--page-index)));
|
|
32
|
+
display: flex;
|
|
33
|
+
padding: 0 40px;
|
|
34
|
+
}
|
|
35
|
+
.page {
|
|
36
|
+
flex: 0 0 100%;
|
|
37
|
+
margin-right: 80px;
|
|
38
|
+
max-height: calc(100vh - 100px);
|
|
39
|
+
overflow-y: auto;
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { isActive, node } from '@roxi/routify'
|
|
3
|
+
export let pages
|
|
4
|
+
$: liveUrl = index => pages && pages[index]?.router?.url.external()
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<nav class="container">
|
|
8
|
+
<ul>
|
|
9
|
+
<li>
|
|
10
|
+
<h1>
|
|
11
|
+
<a href="/">Portfolio</a>
|
|
12
|
+
</h1>
|
|
13
|
+
</li>
|
|
14
|
+
</ul>
|
|
15
|
+
<ul>
|
|
16
|
+
{#each $node.pages as childNode, index}
|
|
17
|
+
<li class:isActive={$isActive(childNode.path)}>
|
|
18
|
+
<a href={liveUrl(index) || childNode.path}
|
|
19
|
+
>{childNode.meta.title || childNode.name}</a>
|
|
20
|
+
</li>
|
|
21
|
+
{/each}
|
|
22
|
+
</ul>
|
|
23
|
+
</nav>
|
|
24
|
+
|
|
25
|
+
<style>
|
|
26
|
+
.container {
|
|
27
|
+
padding: 0 40px;
|
|
28
|
+
}
|
|
29
|
+
.isActive a {text-decoration: underline;}
|
|
30
|
+
</style>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script context="module">
|
|
2
|
+
import { Router, createRouter } from '@roxi/routify'
|
|
3
|
+
import routes from '../../.routify/routes.default.js'
|
|
4
|
+
|
|
5
|
+
const router = createRouter({ routes })
|
|
6
|
+
|
|
7
|
+
/* for SSR we need to tell Sveltekit to wait for
|
|
8
|
+
Routify to finish loading its components */
|
|
9
|
+
export const load = ({ page }) => router.url.replace(page.path)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<Router {router} />
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import axios from 'axios'
|
|
2
|
+
axios.interceptors.response.use(res => res.data)
|
|
3
|
+
|
|
4
|
+
import { parse } from 'marked'
|
|
5
|
+
|
|
6
|
+
export const fetchRepo = async reponame => ({
|
|
7
|
+
data: await axios('https://api.github.com/repos/' + reponame),
|
|
8
|
+
readme: await axios(`https://raw.githubusercontent.com/${reponame}/master/README.md`),
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
export const fetchRepos = async reponames => Promise.all(reponames.map(fetchRepo))
|
|
12
|
+
|
|
13
|
+
export const parseReadme = repo => (repo.readme = parse(repo.readme))
|
|
14
|
+
|
|
15
|
+
export const fixGithubImages = repo => {
|
|
16
|
+
const { default_branch, html_url } = repo.data
|
|
17
|
+
repo.readme = repo.readme.replace(/<img src="(.+?)"/gm, (full, path) => {
|
|
18
|
+
const isAbsolute = path.match(/^(\/\/|\w+:)/)
|
|
19
|
+
return isAbsolute ? full : `<img src="${html_url}/raw/${default_branch}/${path}"`
|
|
20
|
+
})
|
|
21
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import routify from '@roxi/routify/vite-plugin'
|
|
2
|
+
import indexByName from '@roxi/routify/plugins/indexByName.js'
|
|
3
|
+
import vercel from '@sveltejs/adapter-vercel'
|
|
4
|
+
|
|
5
|
+
/** @type {import('@sveltejs/kit').Config} */
|
|
6
|
+
const config = {
|
|
7
|
+
kit: {
|
|
8
|
+
// hydrate the <div id="svelte"> element in src/app.html
|
|
9
|
+
target: '#svelte',
|
|
10
|
+
adapter: vercel(),
|
|
11
|
+
|
|
12
|
+
vite: {
|
|
13
|
+
plugins: [
|
|
14
|
+
routify({
|
|
15
|
+
plugins: [indexByName()],
|
|
16
|
+
}),
|
|
17
|
+
],
|
|
18
|
+
resolve: {
|
|
19
|
+
dedupe: ['svelte'],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
router: false,
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default config
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
6
|
+
|
|
7
|
+
<title>Svelte app</title>
|
|
8
|
+
|
|
9
|
+
<!-- Google Fonts -->
|
|
10
|
+
<link
|
|
11
|
+
rel="stylesheet"
|
|
12
|
+
href="https://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
<!-- CSS Reset -->
|
|
16
|
+
<link
|
|
17
|
+
rel="stylesheet"
|
|
18
|
+
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css"
|
|
19
|
+
/>
|
|
20
|
+
|
|
21
|
+
<!-- Milligram CSS -->
|
|
22
|
+
<link
|
|
23
|
+
rel="stylesheet"
|
|
24
|
+
href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
<script type="module" src="/src/main.js"></script>
|
|
28
|
+
</head>
|
|
29
|
+
|
|
30
|
+
<body></body>
|
|
31
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "subpath",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"build": "vite build",
|
|
6
|
+
"preview": "vite preview",
|
|
7
|
+
"dev": "vite"
|
|
8
|
+
},
|
|
9
|
+
"devDependencies": {
|
|
10
|
+
"@roxi/routify": "^3.0.0-next.1",
|
|
11
|
+
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.13",
|
|
12
|
+
"mdsvex": "^0.9.3",
|
|
13
|
+
"svelte": "^3.39.0",
|
|
14
|
+
"vite": "^2.2.3"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import { Router } from '@roxi/routify'
|
|
3
|
+
import routes from '../.routify/routes.default.js'
|
|
4
|
+
|
|
5
|
+
/** @type {UrlRewrite}*/
|
|
6
|
+
const urlRewrite = {
|
|
7
|
+
toExternal: url => '/subpath' + url,
|
|
8
|
+
toInternal: url => url.replace(/^\/subpath/, ''),
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<Router {routes} {urlRewrite} />
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h1>foo</h1>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { svelte } from '@sveltejs/vite-plugin-svelte'
|
|
2
|
+
import routify from '@roxi/routify/vite-plugin'
|
|
3
|
+
import { defineConfig } from 'vite'
|
|
4
|
+
import { mdsvex } from 'mdsvex'
|
|
5
|
+
|
|
6
|
+
const production = process.env.NODE_ENV === 'production'
|
|
7
|
+
|
|
8
|
+
export default defineConfig({
|
|
9
|
+
clearScreen: false,
|
|
10
|
+
|
|
11
|
+
plugins: [
|
|
12
|
+
routify(),
|
|
13
|
+
svelte({
|
|
14
|
+
emitCss: true,
|
|
15
|
+
compilerOptions: {
|
|
16
|
+
dev: !production,
|
|
17
|
+
},
|
|
18
|
+
extensions: ['.md', '.svelte'],
|
|
19
|
+
preprocess: [mdsvex({ extension: 'md' })],
|
|
20
|
+
}),
|
|
21
|
+
],
|
|
22
|
+
|
|
23
|
+
server: { port: 1337 },
|
|
24
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@example/sveltekit",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"dev": "svelte-kit dev",
|
|
6
|
+
"build": "svelte-kit build",
|
|
7
|
+
"preview": "svelte-kit preview"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"@roxi/routify": "^3.0.0-next.1"
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@sveltejs/kit": "next",
|
|
14
|
+
"svelte": "^3.34.0"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"routify": {
|
|
18
|
+
"routesDir": "src/pages"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="/favicon.png" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
%svelte.head%
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="svelte">%svelte.body%</div>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/// <reference types="@sveltejs/kit" />
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<h3>a page</h3>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script context="module">
|
|
2
|
+
import { Router, createRouter } from '@roxi/routify'
|
|
3
|
+
import routes from '../../.routify/routes.default.js'
|
|
4
|
+
|
|
5
|
+
const router = createRouter({ routes })
|
|
6
|
+
|
|
7
|
+
// for SSR we need to tell Sveltekit to wait for Routify to finish loading its components
|
|
8
|
+
export const load = ({ page }) => router.url.replace(page.path)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<Router {router} />
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import routify from '@roxi/routify/vite-plugin'
|
|
2
|
+
|
|
3
|
+
/** @type {import('@sveltejs/kit').Config} */
|
|
4
|
+
const config = {
|
|
5
|
+
kit: {
|
|
6
|
+
// hydrate the <div id="svelte"> element in src/app.html
|
|
7
|
+
target: '#svelte',
|
|
8
|
+
|
|
9
|
+
vite: {
|
|
10
|
+
plugins: [routify()],
|
|
11
|
+
resolve: {
|
|
12
|
+
dedupe: ['svelte'],
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
router: false
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default config
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { onCancel } from '../../utils/prompts.js';
|
|
2
|
+
import { readdir, cp } from 'fs/promises';
|
|
3
|
+
import { join, dirname } from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import k from 'kleur';
|
|
7
|
+
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
|
|
10
|
+
function text() {
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(
|
|
13
|
+
k.red(` ! R3 is under heavy work, expect bugs and missing features`),
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
console.log();
|
|
17
|
+
console.log(
|
|
18
|
+
` ${k.underline(`${k.bold().magenta('Routify')} ${k.bold('3')}`)}`,
|
|
19
|
+
);
|
|
20
|
+
console.log(
|
|
21
|
+
` - Follow our twitter to get updates: ${k.blue(
|
|
22
|
+
'https://twitter.com/routifyjs',
|
|
23
|
+
)}`,
|
|
24
|
+
);
|
|
25
|
+
console.log(
|
|
26
|
+
` - Or join our discord: ${k.blue(
|
|
27
|
+
'https://discord.com/invite/ntKJD5B',
|
|
28
|
+
)}`,
|
|
29
|
+
);
|
|
30
|
+
console.log();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async function getExampleDir() {
|
|
34
|
+
const projects = await readdir(join(__dirname, './examples'));
|
|
35
|
+
|
|
36
|
+
const { project } = await prompts(
|
|
37
|
+
{
|
|
38
|
+
message: 'Please select a example project',
|
|
39
|
+
name: 'project',
|
|
40
|
+
type: 'select',
|
|
41
|
+
choices: projects.map((value) => ({ title: value, value })),
|
|
42
|
+
},
|
|
43
|
+
{ onCancel },
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
return `./examples/${project}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export const run = async ({ projectDir }) => {
|
|
50
|
+
text();
|
|
51
|
+
|
|
52
|
+
const { projectType } = await prompts(
|
|
53
|
+
{
|
|
54
|
+
type: 'select',
|
|
55
|
+
name: 'projectType',
|
|
56
|
+
message: 'What template would you like?',
|
|
57
|
+
choices: [
|
|
58
|
+
{
|
|
59
|
+
title: 'Skeleton Project',
|
|
60
|
+
value: 'skeleton',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
title: 'Example Project',
|
|
64
|
+
value: 'example',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{ onCancel },
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
if (!['skeleton', 'example'].includes(projectType))
|
|
72
|
+
return console.log(` ${k.red('Unable to find type ' + projectType)}`);
|
|
73
|
+
|
|
74
|
+
const exampleDir = join(
|
|
75
|
+
__dirname,
|
|
76
|
+
projectType == 'skeleton' ? './skeleton' : await getExampleDir(),
|
|
77
|
+
'/',
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
await cp(exampleDir, projectDir, { recursive: true });
|
|
81
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
6
|
+
|
|
7
|
+
<title>Svelte app</title>
|
|
8
|
+
|
|
9
|
+
<!-- Google Fonts -->
|
|
10
|
+
<link
|
|
11
|
+
rel="stylesheet"
|
|
12
|
+
href="https://fonts.googleapis.com/css?family=Roboto:300,300italic,700,700italic"
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
<!-- CSS Reset -->
|
|
16
|
+
<link
|
|
17
|
+
rel="stylesheet"
|
|
18
|
+
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css"
|
|
19
|
+
/>
|
|
20
|
+
|
|
21
|
+
<!-- Milligram CSS -->
|
|
22
|
+
<link
|
|
23
|
+
rel="stylesheet"
|
|
24
|
+
href="https://cdnjs.cloudflare.com/ajax/libs/milligram/1.4.1/milligram.css"
|
|
25
|
+
/>
|
|
26
|
+
|
|
27
|
+
<script type="module" src="/src/main.js"></script>
|
|
28
|
+
</head>
|
|
29
|
+
|
|
30
|
+
<body></body>
|
|
31
|
+
</html>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "starter",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"build": "vite build",
|
|
6
|
+
"preview": "vite preview",
|
|
7
|
+
"dev": "vite"
|
|
8
|
+
},
|
|
9
|
+
"devDependencies": {
|
|
10
|
+
"@roxi/routify": "^3.0.0-next.1",
|
|
11
|
+
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.13",
|
|
12
|
+
"mdsvex": "^0.9.3",
|
|
13
|
+
"svelte": "^3.39.0",
|
|
14
|
+
"vite": "^2.2.3"
|
|
15
|
+
}
|
|
16
|
+
}
|