create-routify 0.0.0-reserve → 1.2.1

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.
Files changed (112) hide show
  1. package/README.md +23 -0
  2. package/package.json +27 -14
  3. package/src/bin.js +14 -0
  4. package/src/index.js +108 -0
  5. package/src/utils/prompts.js +10 -0
  6. package/src/versions/three/examples/buildtime-data/index.html +31 -0
  7. package/src/versions/three/examples/buildtime-data/package.json +15 -0
  8. package/src/versions/three/examples/buildtime-data/src/App.svelte +6 -0
  9. package/src/versions/three/examples/buildtime-data/src/main.js +5 -0
  10. package/src/versions/three/examples/buildtime-data/src/routes/index.meta.js +40 -0
  11. package/src/versions/three/examples/buildtime-data/src/routes/index.svelte +26 -0
  12. package/src/versions/three/examples/buildtime-data/vite.config.js +24 -0
  13. package/src/versions/three/examples/experiment/index.html +31 -0
  14. package/src/versions/three/examples/experiment/jsconfig.json +20 -0
  15. package/src/versions/three/examples/experiment/package.json +18 -0
  16. package/src/versions/three/examples/experiment/src/App.svelte +6 -0
  17. package/src/versions/three/examples/experiment/src/main.js +5 -0
  18. package/src/versions/three/examples/experiment/src/routes/[page].svelte +41 -0
  19. package/src/versions/three/examples/experiment/src/routes/_navigation.svelte +17 -0
  20. package/src/versions/three/examples/experiment/src/routes/index.svelte +3 -0
  21. package/src/versions/three/examples/experiment/src/routes/pages/contact/index.md +1 -0
  22. package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/foo.svelte +1 -0
  23. package/src/versions/three/examples/experiment/src/routes/pages/gallery/galcontent/index.md +3 -0
  24. package/src/versions/three/examples/experiment/src/routes/pages/gallery/index.svelte +15 -0
  25. package/src/versions/three/examples/experiment/src/routes/pages/home/index.md +1 -0
  26. package/src/versions/three/examples/experiment/vite.config.js +27 -0
  27. package/src/versions/three/examples/kitchensink/index.html +18 -0
  28. package/src/versions/three/examples/kitchensink/package.json +16 -0
  29. package/src/versions/three/examples/kitchensink/src/App.svelte +6 -0
  30. package/src/versions/three/examples/kitchensink/src/components/Navigation.svelte +29 -0
  31. package/src/versions/three/examples/kitchensink/src/main.js +5 -0
  32. package/src/versions/three/examples/kitchensink/src/routes/_module.svelte +8 -0
  33. package/src/versions/three/examples/kitchensink/src/routes/composition/index.svelte +5 -0
  34. package/src/versions/three/examples/kitchensink/src/routes/composition/reset/_module.svelte +2 -0
  35. package/src/versions/three/examples/kitchensink/src/routes/composition/reset/index.svelte +7 -0
  36. package/src/versions/three/examples/kitchensink/src/routes/index.md +2 -0
  37. package/src/versions/three/examples/kitchensink/src/routes/multi-router/_module.md +4 -0
  38. package/src/versions/three/examples/kitchensink/src/routes/multi-router/basic.svelte +13 -0
  39. package/src/versions/three/examples/kitchensink/src/routes/multi-router/index.svelte +0 -0
  40. package/src/versions/three/examples/kitchensink/src/routes/multi-router/rootnode.svelte +15 -0
  41. package/src/versions/three/examples/kitchensink/src/routes/redirect/index.svelte +10 -0
  42. package/src/versions/three/examples/kitchensink/vite.config.js +24 -0
  43. package/src/versions/three/examples/microframework/app/index.html +31 -0
  44. package/src/versions/three/examples/microframework/app/package.json +15 -0
  45. package/src/versions/three/examples/microframework/app/src/App.svelte +24 -0
  46. package/src/versions/three/examples/microframework/app/src/main.js +5 -0
  47. package/src/versions/three/examples/microframework/app/src/routes/_module.md +3 -0
  48. package/src/versions/three/examples/microframework/app/src/routes/index.md +1 -0
  49. package/src/versions/three/examples/microframework/app/src/routes/internal-module/index.md +1 -0
  50. package/src/versions/three/examples/microframework/app/vite.config.js +29 -0
  51. package/src/versions/three/examples/microframework/module/index.html +31 -0
  52. package/src/versions/three/examples/microframework/module/package.json +15 -0
  53. package/src/versions/three/examples/microframework/module/src/App.svelte +6 -0
  54. package/src/versions/three/examples/microframework/module/src/main.js +5 -0
  55. package/src/versions/three/examples/microframework/module/src/routes/external-page.md +1 -0
  56. package/src/versions/three/examples/microframework/module/src/routes/index.svelte +7 -0
  57. package/src/versions/three/examples/microframework/module/vite.config.js +24 -0
  58. package/src/versions/three/examples/multi-router/index.html +24 -0
  59. package/src/versions/three/examples/multi-router/package.json +16 -0
  60. package/src/versions/three/examples/multi-router/src/App.svelte +8 -0
  61. package/src/versions/three/examples/multi-router/src/main.js +5 -0
  62. package/src/versions/three/examples/multi-router/src/routes/_module.svelte +5 -0
  63. package/src/versions/three/examples/multi-router/src/routes/index.md +4 -0
  64. package/src/versions/three/examples/multi-router/src/routes/page-with-widget.svelte +7 -0
  65. package/src/versions/three/examples/multi-router/src/widget/_module.svelte +7 -0
  66. package/src/versions/three/examples/multi-router/src/widget/index.md +1 -0
  67. package/src/versions/three/examples/multi-router/src/widget/page1.md +1 -0
  68. package/src/versions/three/examples/multi-router/src/widget/page2.md +1 -0
  69. package/src/versions/three/examples/multi-router/vite.config.js +29 -0
  70. package/src/versions/three/examples/portfolio/.persistent/src/pages/2.projects/_module.svelte/fetchRepos_reponames-27-4zq41g.json +735 -0
  71. package/src/versions/three/examples/portfolio/package.json +23 -0
  72. package/src/versions/three/examples/portfolio/src/app.html +18 -0
  73. package/src/versions/three/examples/portfolio/src/global.d.ts +1 -0
  74. package/src/versions/three/examples/portfolio/src/pages/1.home/index.svelte +3 -0
  75. package/src/versions/three/examples/portfolio/src/pages/2.projects/[project].svelte +41 -0
  76. package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.meta.js +36 -0
  77. package/src/versions/three/examples/portfolio/src/pages/2.projects/_module.svelte +28 -0
  78. package/src/versions/three/examples/portfolio/src/pages/3.about-me/_module.svelte +3 -0
  79. package/src/versions/three/examples/portfolio/src/pages/3.about-me/index.svelte +1 -0
  80. package/src/versions/three/examples/portfolio/src/pages/_loader.svelte +15 -0
  81. package/src/versions/three/examples/portfolio/src/pages/_module.svelte +41 -0
  82. package/src/versions/three/examples/portfolio/src/pages/_navigation.svelte +30 -0
  83. package/src/versions/three/examples/portfolio/src/pages/index.svelte +5 -0
  84. package/src/versions/three/examples/portfolio/src/routes/[...index].svelte +12 -0
  85. package/src/versions/three/examples/portfolio/src/utils/github.js +21 -0
  86. package/src/versions/three/examples/portfolio/static/favicon.png +0 -0
  87. package/src/versions/three/examples/portfolio/svelte.config.js +26 -0
  88. package/src/versions/three/examples/subpath/index.html +31 -0
  89. package/src/versions/three/examples/subpath/package.json +16 -0
  90. package/src/versions/three/examples/subpath/src/App.svelte +12 -0
  91. package/src/versions/three/examples/subpath/src/main.js +5 -0
  92. package/src/versions/three/examples/subpath/src/routes/foo.svelte +1 -0
  93. package/src/versions/three/examples/subpath/src/routes/index.svelte +7 -0
  94. package/src/versions/three/examples/subpath/vite.config.js +24 -0
  95. package/src/versions/three/examples/sveltekit/package.json +20 -0
  96. package/src/versions/three/examples/sveltekit/src/app.html +12 -0
  97. package/src/versions/three/examples/sveltekit/src/global.d.ts +1 -0
  98. package/src/versions/three/examples/sveltekit/src/pages/a/page.svelte +1 -0
  99. package/src/versions/three/examples/sveltekit/src/pages/index.svelte +6 -0
  100. package/src/versions/three/examples/sveltekit/src/routes/[...index].svelte +11 -0
  101. package/src/versions/three/examples/sveltekit/static/favicon.png +0 -0
  102. package/src/versions/three/examples/sveltekit/svelte.config.js +20 -0
  103. package/src/versions/three/index.js +81 -0
  104. package/src/versions/three/skeleton/index.html +31 -0
  105. package/src/versions/three/skeleton/package.json +16 -0
  106. package/src/versions/three/skeleton/src/App.svelte +6 -0
  107. package/src/versions/three/skeleton/src/main.js +5 -0
  108. package/src/versions/three/skeleton/src/routes/index.md +1 -0
  109. package/src/versions/three/skeleton/vite.config.js +24 -0
  110. package/src/versions/two.js +3 -0
  111. package/bin/routify-cli.js +0 -31
  112. package/readme.md +0 -1
@@ -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,3 @@
1
+ <header>
2
+ <h1>Svelte Summit 2021</h1>
3
+ </header>
@@ -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,3 @@
1
+ <!-- routify:meta title="about me" -->
2
+
3
+ <slot />
@@ -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,5 @@
1
+ <script context="module">
2
+ export const guard = route => {
3
+ route.router.url.replace('/home')
4
+ }
5
+ </script>
@@ -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
+ }
@@ -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,5 @@
1
+ import App from './App.svelte'
2
+
3
+ const app = new App({ target: document.body })
4
+
5
+ export default app
@@ -0,0 +1,7 @@
1
+ <script>
2
+ import { url } from '@roxi/routify'
3
+ </script>
4
+
5
+ <h1>Subpath Example</h1>
6
+
7
+ <a href={$url('../foo')}>{$url('../foo')}</a>
@@ -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,6 @@
1
+ <script>
2
+ import { url } from '@roxi/routify'
3
+ </script>
4
+
5
+ <h1>Welcome to SvelteKit + Routify</h1>
6
+ <a href={$url('../a/page')}>a page</a>
@@ -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} />
@@ -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
+ }
@@ -0,0 +1,6 @@
1
+ <script>
2
+ import { Router } from '@roxi/routify'
3
+ import routes from '../.routify/routes.default.js'
4
+ </script>
5
+
6
+ <Router {routes} />