From 36f91d4e9a755742b1ced71f3a290ba16e762d3b Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sun, 28 Apr 2019 14:37:02 -0400 Subject: [PATCH 01/15] start adding site to main repo --- site/.gitignore | 5 + site/README.md | 88 + site/appveyor.yml | 18 + site/content/guide/00-introduction.md | 48 + site/content/guide/01-structure.md | 112 + site/content/guide/02-routing.md | 121 + site/content/guide/03-client-api.md | 48 + site/content/guide/04-preloading.md | 135 + site/content/guide/05-layouts.md | 106 + .../content/guide/06-server-side-rendering.md | 37 + site/content/guide/07-state-management.md | 55 + site/content/guide/08-prefetching.md | 22 + site/content/guide/09-building.md | 15 + site/content/guide/10-exporting.md | 63 + site/content/guide/11-deploying.md | 62 + site/content/guide/12-security.md | 39 + site/content/guide/13-base-urls.md | 28 + site/content/guide/14-testing.md | 14 + site/content/guide/15-debugging.md | 19 + site/content/guide/16-migrating.md | 260 ++ site/cypress.json | 4 + site/cypress/fixtures/example.json | 5 + site/cypress/integration/spec.js | 19 + site/cypress/plugins/index.js | 17 + site/cypress/support/commands.js | 25 + site/cypress/support/index.js | 20 + site/package-lock.json | 3875 +++++++++++++++++ site/package.json | 39 + site/rollup.config.js | 87 + site/src/client.js | 6 + site/src/components/Nav.svelte | 60 + site/src/routes/_error.svelte | 40 + site/src/routes/_layout.svelte | 37 + site/src/routes/guide/_process_markdown.js | 15 + site/src/routes/guide/_sections.js | 82 + site/src/routes/guide/index.json.js | 16 + site/src/routes/guide/index.svelte | 1 + site/src/routes/index.svelte | 70 + site/src/server.js | 17 + site/src/service-worker.js | 82 + site/src/template.html | 38 + site/static/favicon.png | Bin 0 -> 3548 bytes .../fonts/fira-mono/fira-mono-latin-400.woff2 | Bin 0 -> 16528 bytes .../fonts/overpass/overpass-latin-100.woff2 | Bin 0 -> 18836 bytes .../fonts/overpass/overpass-latin-300.woff2 | Bin 0 -> 19364 bytes .../fonts/overpass/overpass-latin-400.woff2 | Bin 0 -> 19800 bytes .../fonts/overpass/overpass-latin-600.woff2 | Bin 0 -> 19404 bytes .../fonts/overpass/overpass-latin-700.woff2 | Bin 0 -> 19924 bytes .../fonts/roboto/roboto-latin-400.woff2 | Bin 0 -> 15344 bytes .../fonts/roboto/roboto-latin-400italic.woff2 | Bin 0 -> 16944 bytes .../fonts/roboto/roboto-latin-500.woff2 | Bin 0 -> 15552 bytes .../fonts/roboto/roboto-latin-500italic.woff2 | Bin 0 -> 16940 bytes site/static/icons/arrow-right.svg | 7 + site/static/icons/check.svg | 4 + site/static/icons/chevron.svg | 4 + site/static/icons/collapse.svg | 4 + site/static/icons/download.svg | 4 + site/static/icons/dropdown.svg | 4 + site/static/icons/edit.svg | 7 + site/static/icons/expand.svg | 4 + site/static/icons/flip.svg | 4 + site/static/icons/fork.svg | 4 + site/static/icons/link.svg | 8 + site/static/icons/loading.svg | 6 + site/static/icons/save.svg | 4 + .../images/sapper-android-chrome-192.png | Bin 0 -> 5334 bytes .../images/sapper-android-chrome-512.png | Bin 0 -> 15358 bytes .../static/images/sapper-apple-touch-icon.png | Bin 0 -> 4124 bytes site/static/images/sapper-mstile-150.png | Bin 0 -> 4901 bytes site/static/manifest.json | 20 + site/static/prism.css | 96 + site/static/sapper-logo-horizontal.svg | 36 + site/static/sapper-logo-outline.svg | 20 + site/static/sapper-logo-vertical.svg | 36 + site/static/sapper-logo.svg | 21 + site/static/sapper-logotype.svg | 22 + 76 files changed, 6165 insertions(+) create mode 100644 site/.gitignore create mode 100644 site/README.md create mode 100644 site/appveyor.yml create mode 100644 site/content/guide/00-introduction.md create mode 100644 site/content/guide/01-structure.md create mode 100644 site/content/guide/02-routing.md create mode 100644 site/content/guide/03-client-api.md create mode 100644 site/content/guide/04-preloading.md create mode 100644 site/content/guide/05-layouts.md create mode 100644 site/content/guide/06-server-side-rendering.md create mode 100644 site/content/guide/07-state-management.md create mode 100644 site/content/guide/08-prefetching.md create mode 100644 site/content/guide/09-building.md create mode 100644 site/content/guide/10-exporting.md create mode 100644 site/content/guide/11-deploying.md create mode 100644 site/content/guide/12-security.md create mode 100644 site/content/guide/13-base-urls.md create mode 100644 site/content/guide/14-testing.md create mode 100644 site/content/guide/15-debugging.md create mode 100644 site/content/guide/16-migrating.md create mode 100644 site/cypress.json create mode 100644 site/cypress/fixtures/example.json create mode 100644 site/cypress/integration/spec.js create mode 100644 site/cypress/plugins/index.js create mode 100644 site/cypress/support/commands.js create mode 100644 site/cypress/support/index.js create mode 100644 site/package-lock.json create mode 100644 site/package.json create mode 100644 site/rollup.config.js create mode 100644 site/src/client.js create mode 100644 site/src/components/Nav.svelte create mode 100644 site/src/routes/_error.svelte create mode 100644 site/src/routes/_layout.svelte create mode 100644 site/src/routes/guide/_process_markdown.js create mode 100644 site/src/routes/guide/_sections.js create mode 100644 site/src/routes/guide/index.json.js create mode 100644 site/src/routes/guide/index.svelte create mode 100644 site/src/routes/index.svelte create mode 100644 site/src/server.js create mode 100644 site/src/service-worker.js create mode 100644 site/src/template.html create mode 100644 site/static/favicon.png create mode 100644 site/static/fonts/fira-mono/fira-mono-latin-400.woff2 create mode 100644 site/static/fonts/overpass/overpass-latin-100.woff2 create mode 100644 site/static/fonts/overpass/overpass-latin-300.woff2 create mode 100644 site/static/fonts/overpass/overpass-latin-400.woff2 create mode 100644 site/static/fonts/overpass/overpass-latin-600.woff2 create mode 100644 site/static/fonts/overpass/overpass-latin-700.woff2 create mode 100644 site/static/fonts/roboto/roboto-latin-400.woff2 create mode 100644 site/static/fonts/roboto/roboto-latin-400italic.woff2 create mode 100644 site/static/fonts/roboto/roboto-latin-500.woff2 create mode 100644 site/static/fonts/roboto/roboto-latin-500italic.woff2 create mode 100644 site/static/icons/arrow-right.svg create mode 100644 site/static/icons/check.svg create mode 100644 site/static/icons/chevron.svg create mode 100644 site/static/icons/collapse.svg create mode 100644 site/static/icons/download.svg create mode 100644 site/static/icons/dropdown.svg create mode 100644 site/static/icons/edit.svg create mode 100644 site/static/icons/expand.svg create mode 100644 site/static/icons/flip.svg create mode 100644 site/static/icons/fork.svg create mode 100644 site/static/icons/link.svg create mode 100644 site/static/icons/loading.svg create mode 100644 site/static/icons/save.svg create mode 100644 site/static/images/sapper-android-chrome-192.png create mode 100644 site/static/images/sapper-android-chrome-512.png create mode 100644 site/static/images/sapper-apple-touch-icon.png create mode 100644 site/static/images/sapper-mstile-150.png create mode 100644 site/static/manifest.json create mode 100644 site/static/prism.css create mode 100644 site/static/sapper-logo-horizontal.svg create mode 100644 site/static/sapper-logo-outline.svg create mode 100644 site/static/sapper-logo-vertical.svg create mode 100644 site/static/sapper-logo.svg create mode 100644 site/static/sapper-logotype.svg diff --git a/site/.gitignore b/site/.gitignore new file mode 100644 index 000000000..ed567f230 --- /dev/null +++ b/site/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +node_modules +yarn-error.log +/cypress/screenshots/ +/__sapper__/ diff --git a/site/README.md b/site/README.md new file mode 100644 index 000000000..d12020080 --- /dev/null +++ b/site/README.md @@ -0,0 +1,88 @@ +# sapper-template + +The default [Sapper](https://github.com/sveltejs/sapper) template, with branches for Rollup and webpack. To clone it and get started: + +```bash +# for Rollup +npx degit sveltejs/sapper-template#rollup my-app +# for webpack +npx degit sveltejs/sapper-template#webpack my-app +cd my-app +npm install # or yarn! +npm run dev +``` + +Open up [localhost:3000](http://localhost:3000) and start clicking around. + +Consult [sapper.svelte.technology](https://sapper.svelte.technology) for help getting started. + + +## Structure + +Sapper expects to find two directories in the root of your project — `src` and `static`. + + +### src + +The [src](src) directory contains the entry points for your app — `client.js`, `server.js` and (optionally) a `service-worker.js` — along with a `template.html` file and a `routes` directory. + + +#### src/routes + +This is the heart of your Sapper app. There are two kinds of routes — *pages*, and *server routes*. + +**Pages** are Svelte components written in `.html` files. When a user first visits the application, they will be served a server-rendered version of the route in question, plus some JavaScript that 'hydrates' the page and initialises a client-side router. From that point forward, navigating to other pages is handled entirely on the client for a fast, app-like feel. (Sapper will preload and cache the code for these subsequent pages, so that navigation is instantaneous.) + +**Server routes** are modules written in `.js` files, that export functions corresponding to HTTP methods. Each function receives Express `request` and `response` objects as arguments, plus a `next` function. This is useful for creating a JSON API, for example. + +There are three simple rules for naming the files that define your routes: + +* A file called `src/routes/about.html` corresponds to the `/about` route. A file called `src/routes/blog/[slug].html` corresponds to the `/blog/:slug` route, in which case `params.slug` is available to the route +* The file `src/routes/index.html` (or `src/routes/index.js`) corresponds to the root of your app. `src/routes/about/index.html` is treated the same as `src/routes/about.html`. +* Files and directories with a leading underscore do *not* create routes. This allows you to colocate helper modules and components with the routes that depend on them — for example you could have a file called `src/routes/_helpers/datetime.js` and it would *not* create a `/_helpers/datetime` route + + +### static + +The [static](static) directory contains any static assets that should be available. These are served using [sirv](https://github.com/lukeed/sirv). + +In your [service-worker.js](app/service-worker.js) file, you can import these as `files` from the generated manifest... + +```js +import { files } from '../__sapper__/service-worker.js'; +``` + +...so that you can cache them (though you can choose not to, for example if you don't want to cache very large files). + + +## Bundler config + +Sapper uses Rollup or webpack to provide code-splitting and dynamic imports, as well as compiling your Svelte components. With webpack, it also provides hot module reloading. As long as you don't do anything daft, you can edit the configuration files to add whatever plugins you'd like. + + +## Production mode and deployment + +To start a production version of your app, run `npm run build && npm start`. This will disable live reloading, and activate the appropriate bundler plugins. + +You can deploy your application to any environment that supports Node 8 or above. As an example, to deploy to [Now](https://zeit.co/now), run these commands: + +```bash +npm install -g now +now +``` + + +## Using external components with webpack + +When using Svelte components installed from npm, such as [@sveltejs/svelte-virtual-list](https://github.com/sveltejs/svelte-virtual-list), Svelte needs the original component source (rather than any precompiled JavaScript that ships with the component). This allows the component to be rendered server-side, and also keeps your client-side app smaller. + +Because of that, it's essential that webpack doesn't treat the package as an *external dependency*. You can either modify the `externals` option in [webpack/server.config.js](webpack/server.config.js), or simply install the package to `devDependencies` rather than `dependencies`, which will cause it to get bundled (and therefore compiled) with your app: + +```bash +yarn add -D @sveltejs/svelte-virtual-list +``` + + +## Bugs and feedback + +Sapper is in early development, and may have the odd rough edge here and there. Please be vocal over on the [Sapper issue tracker](https://github.com/sveltejs/sapper/issues). diff --git a/site/appveyor.yml b/site/appveyor.yml new file mode 100644 index 000000000..e75da3bfa --- /dev/null +++ b/site/appveyor.yml @@ -0,0 +1,18 @@ +version: "{build}" + +shallow_clone: true + +init: + - git config --global core.autocrlf false + +build: off + +environment: + matrix: + # node.js + - nodejs_version: stable + +install: + - ps: Install-Product node $env:nodejs_version + - npm install cypress + - npm install diff --git a/site/content/guide/00-introduction.md b/site/content/guide/00-introduction.md new file mode 100644 index 000000000..4fc3f05a3 --- /dev/null +++ b/site/content/guide/00-introduction.md @@ -0,0 +1,48 @@ +--- +title: Introduction +--- + +*Note: Sapper is in early development, and some things may change before we hit version 1.* + +### What is Sapper? + +Sapper is a framework for building extremely high-performance web apps. You're looking at one right now! There are two basic concepts: + +* Each page of your app is a [Svelte](https://svelte.technology) component +* You create pages by adding files to the `src/routes` directory of your project. These will be server-rendered so that a user's first visit to your app is as fast as possible, then a client-side app takes over + +Building an app with all the modern best practices — code-splitting, offline support, server-rendered views with client-side hydration — is fiendishly complicated. Sapper does all the boring stuff for you so that you can get on with the creative part. + +You don't need to know Svelte to understand the rest of this guide, but it will help. In short, it's a UI framework that compiles your components to highly optimized vanilla JavaScript. Read the [introductory blog post](https://svelte.technology/blog/frameworks-without-the-framework) and the [guide](https://svelte.technology/guide) to learn more. + + +### Why the name? + +In war, the soldiers who build bridges, repair roads, clear minefields and conduct demolitions — all under combat conditions — are known as *sappers*. + +For web developers, the stakes are generally lower than for combat engineers. But we face our own hostile environment: underpowered devices, poor network connections, and the complexity inherent in front-end engineering. Sapper, which is short for Svelte app maker, is your courageous and dutiful ally. + + +### Comparison with Next.js + +[Next.js](https://github.com/zeit/next.js) is a React framework from [Zeit](https://zeit.co), and is the inspiration for Sapper. There are a few notable differences, however: + +* Sapper is powered by Svelte instead of React, so it's faster and your apps are smaller +* Instead of route masking, we encode route parameters in filenames (see the [routing](guide#routing) section below) +* As well as *pages*, you can create *server routes* in your `src/routes` directory. This makes it very easy to, for example, add a JSON API such as the one powering this very page (try visiting [/guide.json](/guide.json)) +* Links are just `` elements, rather than framework-specific `` components. That means, for example, that [this link right here](/), despite being inside a blob of markdown, works with the router as you'd expect + + +### Getting started + +The easiest way to start building a Sapper app is to clone the [sapper-template](https://github.com/sveltejs/sapper-template) repo with [degit](https://github.com/Rich-Harris/degit): + +```bash +npx degit sveltejs/sapper-template#rollup my-app +# or: npx degit sveltejs/sapper-template#webpack my-app +cd my-app +npm install +npm run dev +``` + +This will scaffold a new project in the `my-app` directory, install its dependencies, and start a server on [localhost:3000](http://localhost:3000). Try editing the files to get a feel for how everything works – you may not need to bother reading the rest of this guide! diff --git a/site/content/guide/01-structure.md b/site/content/guide/01-structure.md new file mode 100644 index 000000000..209e21a32 --- /dev/null +++ b/site/content/guide/01-structure.md @@ -0,0 +1,112 @@ +--- +title: Sapper app structure +--- + +This section is a reference for the curious. We recommend you play around with the project template first, and come back here when you've got a feel for how things fit together. + +If you take a look inside the [sapper-template](https://github.com/sveltejs/sapper-template) repo, you'll see some files that Sapper expects to find: + +```bash +├ package.json +├ src +│ ├ routes +│ │ ├ # your routes here +│ │ ├ _error.html +│ │ └ index.html +│ ├ client.js +│ ├ server.js +│ ├ service-worker.js +│ └ template.html +├ static +│ ├ # your files here +└ rollup.config.js / webpack.config.js +``` + +When you first run Sapper, it will create an additional `__sapper__` directory containing generated files. + +You'll notice a few extra files and a `cypress` directory which relates to [testing](guide#testing) — we don't need to worry about those right now. + +> You *can* create these files from scratch, but it's much better to use the template. See [getting started](guide#getting-started) for instructions on how to easily clone it + + +### package.json + +Your package.json contains your app's dependencies and defines a number of scripts: + +* `npm run dev` — start the app in development mode, and watch source files for changes +* `npm run build` — build the app in production mode +* `npm run export` — bake out a static version, if applicable (see [exporting](guide#exporting)) +* `npm start` — start the app in production mode after you've built it +* `npm test` — run the tests (see [testing](guide#testing)) + + +### src + +This contains the three *entry points* for your app — `src/client.js`, `src/server.js` and (optionally) `src/service-worker.js` — along with a `src/template.html` file. + +#### src/client.js + +This *must* import, and call, the `start` function from the generated `__sapper__/client.js` file: + +```js +import * as sapper from '../__sapper__/client.js'; + +sapper.start({ + target: document.querySelector('#sapper') +}); +``` + +In many cases, that's the entirety of your entry module, though you can do as much or as little here as you wish. See the [client API](guide#client-api) section for more information on functions you can import. + + +#### src/server.js + +This is a normal Express (or [Polka](https://github.com/lukeed/polka), etc) app, with three requirements: + +* it should serve the contents of the `static` folder, using for example [sirv](https://github.com/lukeed/sirv) +* it should call `app.use(sapper.middleware())` at the end, where `sapper` is imported from `../__sapper__/server.js` +* it must listen on `process.env.PORT` + +Beyond that, you can write the server however you like. + + +#### src/service-worker.js + +Service workers act as proxy servers that give you fine-grained control over how to respond to network requests. For example, when the browser requests `/goats.jpg`, the service worker can respond with a file it previously cached, or it can pass the request on to the server, or it could even respond with something completely different, such as a picture of llamas. + +Among other things, this makes it possible to build applications that work offline. + +Because every app needs a slightly different service worker (sometimes it's appropriate to always serve from the cache, sometimes that should only be a last resort in case of no connectivity), Sapper doesn't attempt to control the service worker. Instead, you write the logic in `service-worker.js`. You can import any of the following from `../__sapper__/service-worker.js`: + +* `files` — an array of files found in the `static` directory +* `shell` — the client-side JavaScript generated by the bundler (Rollup or webpack) +* `routes` — an array of `{ pattern: RegExp }` objects you can use to determine whether a Sapper-controlled page is being requested +* `timestamp` — the time the service worker was generated (useful for generating unique cache names) + + +#### src/template.html + +This file is a template for responses from the server. Sapper will inject content that replaces the following tags: + +* `%sapper.base%` — a `` element (see [base URLs](guide#base-urls)) +* `%sapper.styles%` — critical CSS for the page being requested +* `%sapper.head%` — HTML representing page-specific `` contents, like `` +* `%sapper.html%` — HTML representing the body of the page being rendered +* `%sapper.scripts%` — script tags for the client-side app + + +### src/routes + +This is the meat of your app — the pages and server routes. See the section on [routing](guide#routing) for the juicy details. + + +### static + +This is a place to put any files that your app uses — fonts, images and so on. For example `static/favicon.png` will be served as `/favicon.png`. + +Sapper doesn't serve these files — you'd typically use [sirv](https://github.com/lukeed/sirv) or [serve-static](https://github.com/expressjs/serve-static) for that — but it will read the contents of the `static` folder so that you can easily generate a cache manifest for offline support (see [service-worker.js](guide#templates-service-worker-js)). + + +### rollup.config.js / webpack.config.js + +Sapper can use [Rollup](https://rollupjs.org/) or [webpack](https://webpack.js.org/) to bundle your app. You probably won't need to change the config, but if you want to (for example to add new loaders or plugins), you can. diff --git a/site/content/guide/02-routing.md b/site/content/guide/02-routing.md new file mode 100644 index 000000000..fde2edb85 --- /dev/null +++ b/site/content/guide/02-routing.md @@ -0,0 +1,121 @@ +--- +title: Routing +--- + +As we've seen, there are two types of route in Sapper — pages, and server routes. + + +### Pages + +Pages are Svelte components written in `.html` files. When a user first visits the application, they will be served a server-rendered version of the route in question, plus some JavaScript that 'hydrates' the page and initialises a client-side router. From that point forward, navigating to other pages is handled entirely on the client for a fast, app-like feel. + +The filename determines the route. For example, `src/routes/index.html` is the root of your site: + +```html +<!-- src/routes/index.html --> +<svelte:head> + <title>Welcome + + +

Hello and welcome to my site!

+``` + +A file called either `src/routes/about.html` or `src/routes/about/index.html` would correspond to the `/about` route: + +```html + + + About + + +

About this site

+

TODO...

+``` + +Dynamic parameters are encoded using `[brackets]`. For example, here's how you could create a page that renders a blog post: + +```html + + + {article.title} + + +

{article.title}

+ +
+ {@html article.html} +
+ + +``` + +> See the section on [preloading](guide#preloading) for more info about `preload` and `this.fetch` + + +### Server routes + +Server routes are modules written in `.js` files that export functions corresponding to HTTP methods. Each function receives HTTP `request` and `response` objects as arguments, plus a `next` function. This is useful for creating a JSON API. For example, here's how you could create an endpoint that served the blog page above: + +```js +// routes/blog/[slug].json.js +import db from './_database.js'; // the underscore tells Sapper this isn't a route + +export async function get(req, res, next) { + // the `slug` parameter is available because this file + // is called [slug].json.js + const { slug } = req.params; + + const article = await db.get(slug); + + if (article !== null) { + res.setHeader('Content-Type', 'application/json'); + res.end(JSON.stringify(article)); + } else { + next(); + } +} +``` + +> `delete` is a reserved word in JavaScript. To handle DELETE requests, export a function called `del` instead. + + +### File naming rules + +There are three simple rules for naming the files that define your routes: + +* A file called `src/routes/about.html` corresponds to the `/about` route. A file called `src/routes/blog/[slug].html` corresponds to the `/blog/:slug` route, in which case `params.slug` is available to `preload` +* The file `src/routes/index.html` corresponds to the root of your app. `src/routes/about/index.html` is treated the same as `src/routes/about.html`. +* Files and directories with a leading underscore do *not* create routes. This allows you to colocate helper modules and components with the routes that depend on them — for example you could have a file called `src/routes/_helpers/datetime.js` and it would *not* create a `/_helpers/datetime` route + + + +### Error page + +In addition to regular pages, there is a 'special' page that Sapper expects to find — `src/routes/_error.html`. This will be shown when an error occurs while rendering a page. + +The `error` object is made available to the template along with the HTTP `status` code. + + + +### Regexes in routes + +You can use a subset of regular expressions to qualify route parameters, by placing them in parentheses after the parameter name. + +For example, `src/routes/items/[id([0-9]+)].html` would only match numeric IDs — `/items/123` would match, but `/items/xyz` would not. + +Because of technical limitations, the following characters cannot be used: `/`, `\`, `?`, `:`, `(` and `)`. diff --git a/site/content/guide/03-client-api.md b/site/content/guide/03-client-api.md new file mode 100644 index 000000000..c432fd018 --- /dev/null +++ b/site/content/guide/03-client-api.md @@ -0,0 +1,48 @@ +--- +title: Client API +--- + +The `__sapper__/client.js` module contains functions for controlling your app and responding to events. + + +### start({ target, store? }) + +* `target` — an element to render pages to +* `store` — an function that, given some data, returns a Store object. See the [state management](https://sapper.svelte.technology/guide#state-management) section for more detail + +This configures the router and starts the application — listens for clicks on `
` elements, interacts with the `history` API, and renders and updates your Svelte components. + +Returns a `Promise` that resolves when the initial page has been hydrated. + +```js +import * as sapper from '../__sapper__/client.js'; + +sapper.start({ + target: document.querySelector('#sapper') +}).then(() => { + console.log('client-side app has started'); +}); +``` + + +### goto(href, options?) + +* `href` — the page to go to +* `options` — can include a `replaceState` property, which determines whether to use `history.pushState` (the default) or `history.replaceState`). Not required + +Programmatically navigates to the given `href`. If the destination is a Sapper route, Sapper will handle the navigation, otherwise the page will be reloaded with the new `href`. (In other words, the behaviour is as though the user clicked on a link with this `href`.) + + +### prefetch(href) + +* `href` — the page to prefetch + +Programmatically prefetches the given page, which means a) ensuring that the code for the page is loaded, and b) calling the page's `preload` method with the appropriate options. This is the same behaviour that Sapper triggers when the user taps or mouses over an `` element with [rel=prefetch](guide#prefetching). + + + +### prefetchRoutes(routes?) + +* `routes` — an optional array of strings representing routes to prefetch + +Programmatically prefetches the code for routes that haven't yet been fetched. Typically, you might call this after `sapper.start()` is complete, to speed up subsequent navigation (this is the 'L' of the [PRPL pattern](https://developers.google.com/web/fundamentals/performance/prpl-pattern/)). Omitting arguments will cause all routes to be fetched, or you can specify routes by any matching pathname such as `/about` (to match `src/routes/about.html`) or `/blog/*` (to match `src/routes/blog/[slug].html`). Unlike `prefetch`, this won't call `preload` for individual pages. diff --git a/site/content/guide/04-preloading.md b/site/content/guide/04-preloading.md new file mode 100644 index 000000000..d1674269f --- /dev/null +++ b/site/content/guide/04-preloading.md @@ -0,0 +1,135 @@ +--- +title: Preloading +--- + +As seen in the [routing](guide#routing) section, top-level page components can have a `preload` function that will load some data that the page depends on. This is similar to `getInitialProps` in Next.js or `asyncData` in Nuxt.js. + +```html + +``` + +Your `preload` function is optional; whether or not you include it, the component will have access to the `query` and `params` objects, on top of any [default data](https://svelte.technology/guide#default-data) specified with a `data` property. + +The top-level `_layout.html` component is rendered with a `preloading` value: `true` during preloading, `false` otherwise. This value is useful to display a loading spinner or otherwise indicate that a navigation is in progress. + +```html + +{#if preloading} +
Loading...
+{/if} + + +``` + +The `preloading` value is only set during page navigations. Prefetching (see [below](guide#prefetching)) does not set `preloading` since it is intended to be transparent to the user. + +### Argument + +The `preload` function receives a `{ params, query }` object where `params` is derived from the URL and the route filename, and `query` is an object of values in the query string. + +So if the example above was `src/routes/blog/[slug].html` and the URL was `/blog/some-post?foo=bar&baz`, the following would be true: + +* `params.slug === 'some-post'` +* `query.foo === 'bar'` +* `query.baz === true` + + +### Return value + +If you return a Promise from `preload`, the page will delay rendering until the promise resolves. You can also return a plain object. + +When Sapper renders a page on the server, it will attempt to serialize the resolved value (using [devalue](https://github.com/Rich-Harris/devalue)) and include it on the page, so that the client doesn't also need to call `preload` upon initialization. Serialization will fail if the value includes functions or custom classes (cyclical and repeated references are fine, as are built-ins like `Date`, `Map`, `Set` and `RegExp`). + +### Context + +Inside `preload`, you have access to three methods... + +* `this.fetch(url, options)` +* `this.error(statusCode, error)` +* `this.redirect(statusCode, location)` + +...and `this.store`, if you're using [state management](guide#state-management). + + +#### this.fetch + +In browsers, you can use `fetch` to make AJAX requests, for getting data from your server routes (among other things). On the server it's a little trickier — you can make HTTP requests, but you must specify an origin, and you don't have access to cookies. This means that it's impossible to request data based on the user's session, such as data that requires you to be logged in. + +To fix this, Sapper provides `this.fetch`, which works on the server as well as in the client: + +```html + +``` + +Note that you will need to use session middleware such as [express-session](https://github.com/expressjs/session) in your `app/server.js` in order to maintain user sessions or do anything involving authentication. + + +#### this.error + +If the user navigated to `/blog/some-invalid-slug`, we would want to render a 404 Not Found page. We can do that with `this.error`: + +```html + +``` + +The same applies to other error codes you might encounter. + + +#### this.redirect + +You can abort rendering and redirect to a different location with `this.redirect`: + +```html + +``` diff --git a/site/content/guide/05-layouts.md b/site/content/guide/05-layouts.md new file mode 100644 index 000000000..11a716588 --- /dev/null +++ b/site/content/guide/05-layouts.md @@ -0,0 +1,106 @@ +--- +title: Layouts +--- + +So far, we've treated pages as entirely standalone components — upon navigation, the existing component will be destroyed, and a new one will take its place. + +But in many apps, there are elements that should be visible on *every* page, such as top-level navigation or a footer. Instead of repeating them in every page, we can use *layout* components. + +To create a layout component that applies to every page, make a file called `src/routes/_layout.html`. The default layout component (the one that Sapper uses if you don't bring your own) looks like this... + +```html + +``` + +...but we can add whatever markup, styles and behaviour we want. For example, let's add a nav bar: + +```html + +
+ + +``` + +Sapper computes the `child` property based on which page the user has navigated to. If we create pages for `/`, `/about` and `/settings`... + +```html + +

Home

+``` + +```html + +

About

+``` + +```html + +

Settings

+``` + +...the nav will always be visible, and clicking between the three pages will only result in the `

` being replaced. + + +### Nested routes + +Suppose we don't just have a single `/settings` page, but instead have nested pages like `/settings/profile` and `/settings/notifications` with a shared submenu (for an real-life example, see [github.com/settings](https://github.com/settings)). + +We can create a layout that only applies to pages below `/settings` (while inheriting the root layout with the top-level nav): + +```html + +

Settings

+ + + + +``` + +In addition to `child.component` and `child.props`, there is a `child.segment` property which is useful for things like styling: + +```diff + +``` + + +### Preloading + +Like page components, layout components can use `preload`: + +```html + + + + +``` \ No newline at end of file diff --git a/site/content/guide/06-server-side-rendering.md b/site/content/guide/06-server-side-rendering.md new file mode 100644 index 000000000..a5b9aaf12 --- /dev/null +++ b/site/content/guide/06-server-side-rendering.md @@ -0,0 +1,37 @@ +--- +title: Server-side rendering +--- + +Sapper, by default, renders server-side first (SSR), and then re-mounts any dynamic elements on the client. Svelte provides [excellent support for this](https://svelte.technology/guide#server-side-rendering). This has benefits in performance and search engine indexing, among others, but comes with its own set of complexities. + +### Making a component SSR compatible + +Sapper works well with most third-party libraries you are likely to come across. However, sometimes, a third-party library comes bundled in a way which allows it to work with multiple different module loaders. Sometimes, this code creates a dependency on `window`, such as checking for the existence of `window.global` might do. + +Since there is no `window` in a server-side environment like Sapper's, the action of simply importing such a module can cause the import to fail, and terminate the Sapper's server with an error such as: + +```bash +ReferenceError: window is not defined +``` + +The way to get around this is to use a dynamic import for your component, from within the `oncreate` hook (which is only called on the client), so that your import code is never called on the server. + +```js +export default { + async oncreate () { + const MyComponent = await import('my-non-ssr-component') + this.set({ MyComponent }) + } +} +``` + +You can then use your component within your app: + +```html + +``` + +> It might be the case that your component uses a default export, which actually ends up being an object with a property called `default`, in which case you would import it as `{ default: MyComponent }` rather than just `MyComponent` diff --git a/site/content/guide/07-state-management.md b/site/content/guide/07-state-management.md new file mode 100644 index 000000000..c0a3897d8 --- /dev/null +++ b/site/content/guide/07-state-management.md @@ -0,0 +1,55 @@ +--- +title: State management +--- + +Sapper integrates with the built-in Svelte store. If you're not familiar with Store, read the [Svelte state management](https://svelte.technology/guide#state-management) guide before continuing with this section. + +To use Store, you must integrate it with your server and client apps separately. + +### On the server + +Whereas the client-side app has a single Store instance that lasts as long as the page is open, the server-side app must create a new store for each request: + +```js +// app/server.js +import { Store } from 'svelte/store.js'; + +express() // or Polka, or a similar framework + .use( + compression({ threshold: 0 }), + serve('assets'), + authenticationMiddleware(), + sapper.middleware({ + store: request => { + return new Store({ + user: request.user + }); + } + }) + ) + .listen(process.env.PORT); +``` + +In this example, we're using some imaginary `authenticationMiddleware` that creates a `request.user` object based on the user's cookies. (In real life it tends to be a bit more involved — see [express-session](https://github.com/expressjs/session) and [Passport](http://www.passportjs.org/) if you're ready to learn more about sessions and authentication.) + +Because we've supplied a `store` option, Sapper creates a new `Store` instance for each new `request`. The data in our store will be used to render the HTML that Sapper responds with. + + +### On the client + +This time around, we're creating a single store that is attached to each page as the user navigates around the app. + +```js +import * as sapper from '../__sapper__/client.js'; +import { Store } from 'svelte/store.js'; + +sapper.start({ + target: document.querySelector('#sapper'), + store: data => { + // `data` is whatever was in the server-side store + return new Store(data); + } +}); +``` + +> In order to re-use the server-side store data, it must be serializable (using [devalue](https://github.com/Rich-Harris/devalue)) — no functions or custom classes, just built-in JavaScript data types diff --git a/site/content/guide/08-prefetching.md b/site/content/guide/08-prefetching.md new file mode 100644 index 000000000..eabd859d3 --- /dev/null +++ b/site/content/guide/08-prefetching.md @@ -0,0 +1,22 @@ +--- +title: Prefetching +--- + +Sapper uses code splitting to break your app into small chunks (one per route), ensuring fast startup times. + +For *dynamic* routes, such as our `src/routes/blog/[slug].html` example, that's not enough. In order to render the blog post, we need to fetch the data for it, and we can't do that until we know what `slug` is. In the worst case, that could cause lag as the browser waits for the data to come back from the server. + + +### rel=prefetch + +We can mitigate that by *prefetching* the data. Adding a `rel=prefetch` attribute to a link... + +```html +What is Sapper? +``` + +...will cause Sapper to run the page's `preload` function as soon as the user hovers over the link (on a desktop) or touches it (on mobile), rather than waiting for the `click` event to trigger navigation. Typically, this buys us an extra couple of hundred milliseconds, which is the difference between a user interface that feels laggy, and one that feels snappy. + +> `rel=prefetch` is a Sapper idiom, not a standard attribute for `` elements + + \ No newline at end of file diff --git a/site/content/guide/09-building.md b/site/content/guide/09-building.md new file mode 100644 index 000000000..d396a3bf4 --- /dev/null +++ b/site/content/guide/09-building.md @@ -0,0 +1,15 @@ +--- +title: Building +--- + +Up until now we've been using `sapper dev` to build our application and run a development server. But when it comes to production, we want to create a self-contained optimized build. + +### sapper build + +This command packages up your application into the `__sapper__/build` directory. (You can change this to a custom directory, as well as controlling various other options — do `sapper build --help` for more information.) + +The output is a Node app that you can run from the project root: + +```bash +node __sapper__/build +``` \ No newline at end of file diff --git a/site/content/guide/10-exporting.md b/site/content/guide/10-exporting.md new file mode 100644 index 000000000..ca9f6b551 --- /dev/null +++ b/site/content/guide/10-exporting.md @@ -0,0 +1,63 @@ +--- +title: Exporting +--- + +Many sites are effectively *static*, which is to say they don't actually need an Express server backing them. Instead, they can be hosted and served as static files, which allows them to be deployed to more hosting environments (such as [Netlify](https://www.netlify.com/) or [GitHub Pages](https://pages.github.com/)). Static sites are generally cheaper to operate and have better performance characteristics. + +Sapper allows you to *export* a static site with a single zero-config `sapper export` command. In fact, you're looking at an exported site right now! + +Static doesn't mean non-interactive — your Svelte components work exactly as they do normally, and you still get all the benefits of client-side routing and prefetching. + + +### sapper export + +Inside your Sapper project, try this: + +```bash +# npx allows you to use locally-installed dependencies +npx sapper export +``` + +This will create a `__sapper__/export` folder with a production-ready build of your site. You can launch it like so: + +```bash +npx serve __sapper__/export +``` + +Navigate to [localhost:5000](http://localhost:5000) (or whatever port `serve` picked), and verify that your site works as expected. + +You can also add a script to your package.json... + +```js +{ + "scripts": { + ... + "export": "sapper export" + } +} +``` + +...allowing you to `npm run export` your app. + + +### How it works + +When you run `sapper export`, Sapper first builds a production version of your app, as though you had run `sapper build`, and copies the contents of your `assets` folder to the destination. It then starts the server, and navigates to the root of your app. From there, it follows any `` elements it finds, and captures any data served by the app. + +Because of this, any pages you want to be included in the exported site must be reachable by `` elements. Additionally, any non-page routes should be requested in `preload`, *not* in `oncreate` or elsewhere. + + +### When not to export + +The basic rule is this: for an app to be exportable, any two users hitting the same page of your app must get the same content from the server. In other words, any app that involves user sessions or authentication is *not* a candidate for `sapper export`. + +Note that you can still export apps with dynamic routes, like our `src/routes/blog/[slug].html` example from earlier. `sapper export` will intercept `fetch` requests made inside `preload`, so the data served from `src/routes/blog/[slug].json.js` will also be captured. + + +### Route conflicts + +Because `sapper export` writes to the filesystem, it isn't possible to have two server routes that would cause a directory and a file to have the same name. For example, `src/routes/foo/index.js` and `src/routes/foo/bar.js` would try to create `export/foo` and `export/foo/bar`, which is impossible. + +The solution is to rename one of the routes to avoid conflict — for example, `src/routes/foo-bar.js`. (Note that you would also need to update any code that fetches data from `/foo/bar` to reference `/foo-bar` instead.) + +For *pages*, we skirt around this problem by writing `export/foo/index.html` instead of `export/foo`. \ No newline at end of file diff --git a/site/content/guide/11-deploying.md b/site/content/guide/11-deploying.md new file mode 100644 index 000000000..e1274b194 --- /dev/null +++ b/site/content/guide/11-deploying.md @@ -0,0 +1,62 @@ +--- +title: Deployment +--- + +Sapper apps run anywhere that supports Node 8 or higher. + + +### Deploying to Now + +We can very easily deploy our apps to [Now][]: + +```bash +npm install -g now +now +``` + +This will upload the source code to Now, whereupon it will do `npm run build` and `npm start` and give you a URL for the deployed app. + +For other hosting environments, you may need to do `npm run build` yourself. + +### Deploying service workers + +Sapper makes the Service Worker file (`service-worker.js`) unique by including a timestamp in the source code +(calculated using `Date.now()`). + +In environments where the app is deployed to multiple servers (such as [Now][]), it is advisable to use a +consistent timestamp for all deployments. Otherwise, users may run into issues where the Service Worker +updates unexpectedly because the app hits server 1, then server 2, and they have slightly different timestamps. + +To override Sapper's timestamp, you can use an environment variable (e.g. `SAPPER_TIMESTAMP`) and then modify +the `service-worker.js`: + +```js +const timestamp = process.env.SAPPER_TIMESTAMP; // instead of `import { timestamp }` + +const ASSETS = `cache${timestamp}`; + +export default { + /* ... */ + plugins: [ + /* ... */ + replace({ + /* ... */ + 'process.env.SAPPER_TIMESTAMP': process.env.SAPPER_TIMESTAMP || Date.now() + }) + ] +} +``` + +Then you can set it using the environment variable, e.g.: + +```bash +SAPPER_TIMESTAMP=$(date +%s%3N) npm run build +``` + +When deploying to [Now][], you can pass the environment variable into Now itself: + +```bash +now -e SAPPER_TIMESTAMP=$(date +%s%3N) +``` + +[Now]: https://zeit.co/now \ No newline at end of file diff --git a/site/content/guide/12-security.md b/site/content/guide/12-security.md new file mode 100644 index 000000000..036568162 --- /dev/null +++ b/site/content/guide/12-security.md @@ -0,0 +1,39 @@ +--- +title: Security +--- + +By default, Sapper does not add security headers to your app, but you may add them yourself using middleware such as [Helmet][]. + +### Content Security Policy (CSP) + +Sapper generates inline ` + + + + \ No newline at end of file diff --git a/site/src/routes/_error.svelte b/site/src/routes/_error.svelte new file mode 100644 index 000000000..320e58702 --- /dev/null +++ b/site/src/routes/_error.svelte @@ -0,0 +1,40 @@ + + + + + + {status} + + +

{status}

+ +

{error.message}

+ +{#if dev && error.stack} +
{error.stack}
+{/if} diff --git a/site/src/routes/_layout.svelte b/site/src/routes/_layout.svelte new file mode 100644 index 000000000..e5768a8d6 --- /dev/null +++ b/site/src/routes/_layout.svelte @@ -0,0 +1,37 @@ + + + + + + + + +
+ +
\ No newline at end of file diff --git a/site/src/routes/guide/_process_markdown.js b/site/src/routes/guide/_process_markdown.js new file mode 100644 index 000000000..a79d759cb --- /dev/null +++ b/site/src/routes/guide/_process_markdown.js @@ -0,0 +1,15 @@ +export default function process_markdown(markdown) { + const match = /---\n([\s\S]+?)\n---/.exec(markdown); + const frontMatter = match[1]; + const content = markdown.slice(match[0].length); + + const metadata = {}; + frontMatter.split('\n').forEach(pair => { + const colonIndex = pair.indexOf(':'); + metadata[pair.slice(0, colonIndex).trim()] = pair + .slice(colonIndex + 1) + .trim(); + }); + + return { metadata, content }; +} \ No newline at end of file diff --git a/site/src/routes/guide/_sections.js b/site/src/routes/guide/_sections.js new file mode 100644 index 000000000..de3a144f2 --- /dev/null +++ b/site/src/routes/guide/_sections.js @@ -0,0 +1,82 @@ +import fs from 'fs'; +import path from 'path'; +import process_markdown from './_process_markdown.js'; +import marked from 'marked'; +import hljs from 'highlight.js'; + +const langs = { + 'hidden-data': 'json', + 'html-no-repl': 'html' +}; + +function btoa(str) { + return new Buffer(str).toString('base64'); +} + +const escaped = { + '"': '"', + "'": ''', + '&': '&', + '<': '<', + '>': '>' +}; + +const unescaped = Object.keys(escaped).reduce( + (unescaped, key) => ((unescaped[escaped[key]] = key), unescaped), + {} +); + +function unescape(str) { + return String(str).replace(/&.+?;/g, match => unescaped[match] || match); +} + +export default () => fs + .readdirSync(`content/guide`) + .filter(file => file[0] !== '.' && path.extname(file) === '.md') + .map(file => { + const markdown = fs.readFileSync(`content/guide/${file}`, 'utf-8'); + + const { content, metadata } = process_markdown(markdown); + + // syntax highlighting + let uid = 0; + const highlighted = {}; + + const tweaked_content = content.replace( + /```([\w-]+)?\n([\s\S]+?)```/g, + (match, lang, code) => { + const { value } = hljs.highlight(lang, code); + highlighted[++uid] = value; + + return `@@${uid}`; + } + ); + + const html = marked(tweaked_content) + .replace(/

@@(\d+)<\/p>/g, (match, id) => { + return `

${highlighted[id]}
`; + }) + .replace(/^\t+/gm, match => match.split('\t').join(' ')); + + const subsections = []; + const pattern = /

(.+?)<\/h3>/g; + let match; + + while ((match = pattern.exec(html))) { + const slug = match[1]; + // const title = unescape( + // match[2].replace(/<\/?code>/g, '').replace(/\.(\w+)\W.*/, '.$1') + // ); + const title = unescape(match[2]); + + subsections.push({ slug, title }); + } + + return { + html, + metadata, + subsections, + slug: file.replace(/^\d+-/, '').replace(/\.md$/, ''), + file + }; + }); diff --git a/site/src/routes/guide/index.json.js b/site/src/routes/guide/index.json.js new file mode 100644 index 000000000..e7169a0ab --- /dev/null +++ b/site/src/routes/guide/index.json.js @@ -0,0 +1,16 @@ +import sections from './_sections.js'; + +const dev = process.env.NODE_ENV === 'development'; +let json; + +export function get(req, res) { + if (dev || !json) { + json = JSON.stringify(sections()); + } + + res.set({ + 'Content-Type': 'application/json', + 'Cache-Control': `max-age=${30 * 60 * 1e3}` // 30 minutes + }); + res.end(json); +} \ No newline at end of file diff --git a/site/src/routes/guide/index.svelte b/site/src/routes/guide/index.svelte new file mode 100644 index 000000000..30404ce4c --- /dev/null +++ b/site/src/routes/guide/index.svelte @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/site/src/routes/index.svelte b/site/src/routes/index.svelte new file mode 100644 index 000000000..031debd25 --- /dev/null +++ b/site/src/routes/index.svelte @@ -0,0 +1,70 @@ + + + + + + Sapper • The next small thing in web development + + + + + + +

Powered by Svelte

+

Sapper is an application framework powered by Svelte — build bigger apps with a smaller footprint

+ + learn more +
+ + +

Best of both worlds

+

All the SEO and progressive enhancement of a server-rendered app, with the slick navigation of an SPA

+ + learn more +
+ + +

Build fast

+

Hit the ground running with advanced routing, server-side rendering, code-splitting, offline support and more

+ + learn more +
+ + + +
+

Sapper is a framework for building web applications of all sizes, with a beautiful development experience and flexible filesystem-based routing.

+ +

Unlike single-page apps, Sapper doesn't compromise on SEO, progressive enhancement or the initial load experience — but unlike traditional server-rendered apps, navigation is instantaneous for that app-like feel.

+ +

Read the introductory blog post to learn more.

+
+ +
+
+npx degit sveltejs/template my-svelte-project
+cd my-svelte-project
+
+npm install
+npm run dev & open http://localhost:5000
+		
+ +

See the quickstart guide for more information.

+ +

Learn Svelte

+
+
\ No newline at end of file diff --git a/site/src/server.js b/site/src/server.js new file mode 100644 index 000000000..c77f593b3 --- /dev/null +++ b/site/src/server.js @@ -0,0 +1,17 @@ +import sirv from 'sirv'; +import polka from 'polka'; +import compression from 'compression'; +import * as sapper from '@sapper/server'; + +const { PORT, NODE_ENV } = process.env; +const dev = NODE_ENV === 'development'; + +polka() // You can also use Express + .use( + compression({ threshold: 0 }), + sirv('static', { dev }), + sapper.middleware() + ) + .listen(PORT, err => { + if (err) console.log('error', err); + }); diff --git a/site/src/service-worker.js b/site/src/service-worker.js new file mode 100644 index 000000000..2289a556b --- /dev/null +++ b/site/src/service-worker.js @@ -0,0 +1,82 @@ +import { timestamp, files, shell, routes } from '@sapper/service-worker'; + +const ASSETS = `cache${timestamp}`; + +// `shell` is an array of all the files generated by the bundler, +// `files` is an array of everything in the `static` directory +const to_cache = shell.concat(files); +const cached = new Set(to_cache); + +self.addEventListener('install', event => { + event.waitUntil( + caches + .open(ASSETS) + .then(cache => cache.addAll(to_cache)) + .then(() => { + self.skipWaiting(); + }) + ); +}); + +self.addEventListener('activate', event => { + event.waitUntil( + caches.keys().then(async keys => { + // delete old caches + for (const key of keys) { + if (key !== ASSETS) await caches.delete(key); + } + + self.clients.claim(); + }) + ); +}); + +self.addEventListener('fetch', event => { + if (event.request.method !== 'GET' || event.request.headers.has('range')) return; + + const url = new URL(event.request.url); + + // don't try to handle e.g. data: URIs + if (!url.protocol.startsWith('http')) return; + + // ignore dev server requests + if (url.hostname === self.location.hostname && url.port !== self.location.port) return; + + // always serve static files and bundler-generated assets from cache + if (url.host === self.location.host && cached.has(url.pathname)) { + event.respondWith(caches.match(event.request)); + return; + } + + // for pages, you might want to serve a shell `service-worker-index.html` file, + // which Sapper has generated for you. It's not right for every + // app, but if it's right for yours then uncomment this section + /* + if (url.origin === self.origin && routes.find(route => route.pattern.test(url.pathname))) { + event.respondWith(caches.match('/service-worker-index.html')); + return; + } + */ + + if (event.request.cache === 'only-if-cached') return; + + // for everything else, try the network first, falling back to + // cache if the user is offline. (If the pages never change, you + // might prefer a cache-first approach to a network-first one.) + event.respondWith( + caches + .open(`offline${timestamp}`) + .then(async cache => { + try { + const response = await fetch(event.request); + cache.put(event.request, response.clone()); + return response; + } catch(err) { + const response = await cache.match(event.request); + if (response) return response; + + throw err; + } + }) + ); +}); diff --git a/site/src/template.html b/site/src/template.html new file mode 100644 index 000000000..40300105d --- /dev/null +++ b/site/src/template.html @@ -0,0 +1,38 @@ + + + + + + + + %sapper.base% + + + + + + + + + + + + %sapper.styles% + + + %sapper.head% + + + +
%sapper.html%
+ + + %sapper.scripts% + + diff --git a/site/static/favicon.png b/site/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5204cf718b118c4c780e89b4cdc16ba1a9afe18b GIT binary patch literal 3548 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�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 z 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 DS!8^& literal 0 HcmV?d00001 diff --git a/site/static/fonts/overpass/overpass-latin-600.woff2 b/site/static/fonts/overpass/overpass-latin-600.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1956aca6e03873b9cf990c4819cbe11e853e4664 GIT binary patch literal 19404 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 XC0prpFwdc1ob^=vQ(7tG)&T$jy0z>6 literal 0 HcmV?d00001 diff --git a/site/static/fonts/overpass/overpass-latin-700.woff2 b/site/static/fonts/overpass/overpass-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..14a7f9cce5afdb49b1eff79042eaf323eb4de649 GIT binary patch literal 19924 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 O6y7R}gQBj@I4BA`2c0zl literal 0 HcmV?d00001 diff --git a/site/static/fonts/roboto/roboto-latin-400italic.woff2 b/site/static/fonts/roboto/roboto-latin-400italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3791c883e8d0e8d3d5331b60584cf3869276cd43 GIT binary patch literal 16944 zcmV(}K+wN;Pew8T0RR91075VT5&!@I0FZP5071(D0RR9100000000000000000000 z0000QWE+`49D_;*U;u_p2vP}yJP`~Ef#DQ^$rcNPUH}q-cmXy7Bm;*w1Rw>23I`wz zflYZ&PS{x{y8iqeK_~!5(~YPIdR)FCX{QBQ*9&E)UWgpD&rr zZh=WLkh)4hTUOP_tuTP#Ndf&CqO~=%bHOFY9Z?cugCHp_2rbdlB}Y|DwI>ontEi}` zprR%Q+k`eWflZd^0sdb`p-#9{w#xOCtB^hZ`S*5Z2%mHTdK6G6()Rpp z-&`CLNivYk<~x#06Xfpayk?-+t*S41PLnGAzWYek8dH-tYciQ+7q~C28-K>d2+#^G zzujk3U+(^!5jlj0&-8kv*`2lT;xo(f1z2ZK;Ks_+nF5`t##M|t8>xWsZuJ?6+0k%cK)tlSMu{7 zirza(hguzj9Hf@GO(!d8UjU%HDnL{7!2ys_HMSK}*Z+TY{o9@`0sp}p7XRueyR$pDF1jn`{oFa1u3c1c z#BlYvz?&s84#Us$975*k!m@P1L2|~SOc&Q2nbLD2w2TA+Hgl7Yi0+8 zuS$pv1;W=w`h@`Do4umLfG`}ui;(Z8Ya+t{*PbiDAx=%?l7(u!hyR$^+lJau918U| z+7{bJyAwKzVO(e<>6l>3rcQcibbFS$SzLnIL+DS|*`OV0N+s4TFvYhGwN#4GjW#-d zvE6ChIIL$Sh{QNkKNWBYD5zNWJLr(Zj*xSVA|=XHs8Xjvi?$O?m@;F@nhl%AmIFu5 zT)6R2rCO~z7fqQqW7eE`3l?2+*%de3bjym{?s;OZJH}C!CL-w(EK5fEouS?@7 zxmR&Sm(f{xs$HkvS2X&OR=3;}3CG~1Pl44>yNV004GxWS>AEu~2gx0hk-6MT71R!g zhLQVl z8@m1E6%;V0edY?kfif~n>Bzn0Yd*cZoSCM4-k}YS2j}Wzai$T;-Ih_C+%73-QA77Z z)p0>%D9=?Lht)u={gcO9JnC zr!S?|@gkU{ZsuFe?C-~4epCJ3ugiF!yX#|Mw>~-lG|v0d{ZYLE056jNTk7yRTi-7y zX7|TRmb->(-`d&_aAVtw-aV)D;XBx+kL%s3mp?hY;0?@xQQysxLZaVqH@086 zAqnK9H@*Kq*j3$CtbG9Nf>sZ(eo|65&!=4;xc0wmyAdb5*4ge=;@z&?o8O)OE=P*e zu+1dj@~QQnv+U5_-5l@I$h`FIyJ0ZMem8;#ycF*Bs`2fp{Bpne;=t}^)eLtS0rpmA z7z}<1Qa}t07$zoUzr%23C?Qd$jmdx!Atp?SGGk^BYj(sqaIlv%XHs0b+ow>WgR0a! zq){VT7j2RA(p&aE`oslE!zd#l5I{j8fPp~-6O)Mj_QM=-fRKX@;&I3!&|!z+$&y7T zM-Ig?$M9362vVYimnu~>YSfUaQzuM=20@xMF=)|3rA-?*0|p2T86q-bgfA?@g>eNN zIJUEn*ePO&tyq|3KxcB(N!)e1LLfHrJOMQTk*1y}pdPx2MqR|kp3szen1!3iW6>3O zH{1r@v4-s4qbJpU8weiv7~7<&XGBtpT&`CA}w8lsr~&Ifp#>$A(@EB3PS zh}O99Mj#$>p@9UL9%W;{h3Q@vLPEei^arR-#9&&qbiQO{ z-LV*>iL6%-_vd~34Hz_J*oY?lwa-ZuB^t+hqb?XT4g>Mp18BvLa(JLW(-nc(dV98g z#Q)>v`Yit-u(Q^qe1hXnvorz_*lxW7{103^Hztq(Uj(QFJBNfiMnHFai?CL=Ir0<7 z^>ASZ*q;O(LBN_MPt`{M%PzR)t~b8eg%iuXO560&#+xHoMrNL@y!l4zE>0x2+XF9N zbls}Az9KA!SlM$H-j9!d?-l-DM(z@@`)8BupWAg#{a^lX{J*gmsY!`((cVr+p8t4O z3U(byO5k4otn}0C{TVJ={^a`iGiABsu2pO9$(G~32i86G$c9{bpJ<;uUx9bt`^^U* z75an<000~Bg$F@2H0YWH08&N2+qN{J-4LHJY|@AYY>Td%3fE+~?yiNf>Y_CdEqi1` zrpLD2@yv7CUU=<(cq7+aUpx+9<@x4!Fa6<9`Tp{scj149VfSM`4M$KE++2d(zR)^??JiT#6w4E>c3WP*MTd7;EY0plKgNsd7yHR|2n+P@TQ>yGnot013@P! zdCw7xUt?I*>v+{V2=wT&;Pt*t6cJ;DBhun>mP;*lWDYo4VIq}yr0XSQQaV0}#WTzy zX!p@c0qu{*O`jQM`l?79y|o)OE%zV~ zI!-QgF7Qcm00+_EqY|W+0*TLyC6{Iarf4$IY1e1BlkAWS#7?3^Y0$|V-&>35V55eA z@arnRePaAuYaIq`z8-+~J&?Bpd(Hq4Hs`N6gonT~wgomr_#-kYhB->OppD%q1ZLJ| zFI=~F^Fb08qt(V0+b+f|0fJ^7q7n=wu}I*|wgi)c4RaLi$XSM~!}@XzXfD(Px1&~w zi9h=64XIhQ@YcZzwfH*3-Ckw+|o$iz#9pG)F|9VrTM{1#^$hV`wRoi?;x|;;u*6dm> zvLxd?7NMC?qeC=ov=k_BAj$^|I;gl!y;1nu1AE^#js^vSV*`yRJKc*}+I%HJUuwo! z)gpe?C6H0xi@jy8a<~pjV}JWRlO<7g6TEC0U~Ba(2B3PZvN4cp8`w8?DTmR+nnvwohYTlixSl-v*gYJGI` zC*LF~8W5a=BZU!^vAUxWb1)K*#XK^;1&I-BQ&nxuwG_1Vx4ub}h(B|6p0{rADtXCN zy*n^QN0ee*qO$Z-(Ud+mbQp^a$LVw?M$_fJMg}iz#8IA0t0A$Jc+*R;aCm~*`GH4B zhO1;Ud{sO&2NUQX%3Qt_k|cxq_?BF~n^{LA_HHkVWnk2?W>bl3vYMAoqh1=r$gg_4 zP|vGKTX5qy(NGm5O0=D7zAYrVWXBpfGF=|D{_REe8`9R&n4*+=POQ!A?kdlN$dc*aox}pm|)hrPbWCCr5g{%21YkOzk5+ozaK(ew;Vg?EmZS~=c4|1p2 zHo`;6?3GQgYCiu>oh1semfR_*xR^iV3Qq2X(_JAMcNC`VogG>|VWEzc*d8|MMue)0 z^}&>8IM#rM!pcQ)JJUSiqu;a`WQ-0ZyDsfJZcJm-5>IsP5BOOt>pvb0n*4=%)NOZb zb&h>aEjV;w%(PK_Y@@^a&jfLYlh_4&-!CQ@pV}%N2U}o5kT>iXnj1N-;LJ`Ko`iG+ zD^XulU(o!G=8aU2OH>A+nu<|O1DyURPbh0fb?WpMqK!@sfgpv5HEZP~@G zPVoec5@@;p&x5Be1SnOV!Fpf^Qo_E_V1t>blOu=eHL5$-%*Z*ne`z_`a+1|L@vV}|O` zVoj&|?8g2LaArFX#$Tzr*x<^+7&B3l*2RF;qSc(iv+2eTNyClKmASWCi} zW4i1=R1iV=2Gj^D4Q=`}zXun-slfPUlOVC}2dW^J&1%|!l#-uf@BVQtOIE_q7a!yn z`G<2JKc{GhByUyyEvJwWPoSh!Zq-KJ@Jn$7kIWDmM8I#kl%wKgT)Rb7j7#%{B&tmF zR7Fir(e&hQ(o`JuhT^co$XQ5Ecc%25kLK&lv3F8Tpsoeu24skZC4Tx-B9=E8lj@U% zAs(umD>^>7lCuT}%o77`JQ`>n>3-7U2n+pgNyo~0il=8%rOhh?x3bbQL`POTdfCc5 z6bD5`oaQLbTapKkYIlik#4Go*{BnYoeMMg#Q?uuCQV z=BPVVChE3nbJXc7rPN%OITjDeB)w88qa%w{a>Nw0%lZxPa=e+3ex;)|Hr@4eS`+nD zP~=jqyPOS}BHMwd1vb*tKokbx}GDrq|MCPVmSxJkq<=buTNrzx~ za|LB+!z5IOS&NdqRq}F`&m%^pays3J$N#GW;xJt^HYDsi_qN!nl8V?6#bW@@6sT!9 z5&Rap5dz31)}$vA2lP`%yH0c`Fenl&{V}npak} z16md)V)h-(A_)5MNsrDpV2iz>VtOI@Dt-1Dyvw0qJ03i_>C6!(6*I<+COPlo1kAVR zf;Q*_;h`mf=PV&VSAZw-WE#YNp~UU9Bj}b7-B84_#x8O--@FK)1HJj%+KjB+v>WQz z5v&QbaXAAlf6wFkTyEnMX89|ROXzaL-!%>8)eUb1@^=@F{V7n$tUFs#fA*gZRmvq- zK8whWxcrv`**t6-xUfxsU-WLw0}KKHLK!jSIC_YA9DB)JgGdmRV7;fmA-I+ zSn1#FgN4J&OiCD+y=xLrXi2P21Hqd*@M>+AB{^TQcd=8T_dR)PoSYfm6a!P?Kz6vq z`n7me+DA;so6&Q|`jb&StQaJwcu>nGhEAs9tn}T#=|Nv#vK5y(;gqi5NvIF~{K!^M z@JXm-fS7_mNi7~5Nkeh4vY(ia*P|AmAJ$66S)TONg$B^u?@qS`!L-W|`uvEpr2h0a zI?fyDZCGNMMxVM<5pn8>nNb!ooYM7ZxfA8Wa|6UwuEATSm0o`)JLmE@whRB?FxdR_ zrg8Xi-YS}fuV3_;3em?y=aA&544o%G81!WCR<4Nl93Fk97~E17Ah zGbOhKBD^GybkYjNMhYx%O)Tv8zt|>y6CzxD15BezMT&)L&-3O=?Fjx5+Z3+dWOlBB z|IF)O5A?)aOGio}xl4s`w3GFSHHjwwC4Pb?Tt-sg2YhxCT0%}g-otI(R*cf_nkKW5zxOLyf_5SRFgD_Hv1KDGR z)L3d1J3AOgz}9@8s8PVUz<4nWC(!Cs+8CFAQGe2L?}J`L#3=41!7s~b8f`r%a>f9j z9hV=0(olZ`C7m3bk)4hTL8fxW`z7JpE9%x0>eku3u?pzzwPW|Mb24t-Fn#j$;=PB$ z1M2LOGdgK-3|^x0++{u&;9f<;aD5X$(NBm=$O?dIXk?DNftH&v5`&CkxLk6G#`q|A zv($AY^2PjpUfwv0gq?|I8I0Hn-^`9u1>gk9o4JDB*Fn5hw|sYon!7qT-9fUq?}Xs3}i3} zX-fY}Og~N(s!(1_lv?4}mXbXp(kAVD;)uvu>4V4amD*zxCqKmg^U5xSR-h==zNB-JBPSBgbt=^=| z&b-*}_b~m+>j*;~sb+bDrC1bXk5igRZFLr#oD5iqW&33xCFzRbay_w1{J1@tMz|2f z^QNc|dx{eN`}vx}PaHcV^1Qqq^r3!h;pjq#*YiNAr$Of)+-SWl>=4Mgj$Oj|dnLeJxSj5N5{ zIRoJN)^*w_&+5-0ul=5rTw(O3J#Tid_c>Dzf&9q|dJ-+>OjZn%Zlr^>kqmkSH7GPB z1-A!;nDDF~-qt6+#OGo+QrVyJ<;a?B&WMvW3QHv5R?rtf*qNcqzZ8J8xPSNV`-iU< ze;Pkox>1bkaMzj?hpak20103eoM)@@Um_VxYtx@xETIQ_o`&w&6W?8W_X9E=anBv%fvp#9WSv2?Zp9j&X0ATu@e(ie?D^iX3Dxi?CBy+aFfId$^=f4MSs*CJ>!C z8{Kw&VFFXLp%K@Ro^!y>IFH`U9@W>JS@KV!=xx@|+h_r;J*QlmA;+;x*)S3Hw=>h_ z#5*3$+wNR+Gm@5GFMaPS61Cm87R_vK6=`;6YR(QNOvpb_u~Ua%s@bSQIp|(pt}M@6Ob36ZZmS&4;{Fsqw3}0moz%S5 zdU!m%2HQVAGp_Qi9{Tb_yG0K)TxnqBb0_B1ry)mRsmd|iSS<|y@4E@NX+F4{8TmWD z37?|l+9JrdKbvqH6=QcZBEt8I*^+E1c3LBW$%N~5>lIzzLKLZWJvYD$nT=IVL0T^9+X&`qC7v}_At5QVe7%aYZHZQ6GiuqJt&+lRVwS-JvTib>}u82VCwMmA9-yVIP`VqIaAY zz?t!{Gwv5Tz($ATW(S_-gTe6-iZ|CON8jWVHiE3~64H&dMC=N3FWr~Y%a{P;p;{Sb zQ>Y0IZ{aR;hYZ_d6#Ow)NHOKm^|Jw{t*c2_`J^<)`*}XU1g0NgT zoqzf#tzMVeRQBs_ei7JCx01S%A^hCwj^dtUDhdq!UAvz|{+(wMmRYJO(m5hxc z&$IxgaYhg5W=5qI&7c}|{v~1l$T%NX8qyK~n+XYB_CGYLT2L_7k!$ze|2yjj+L7eh zHf6LmleTj+u^u$H&NYGQ5Ol~kS9mJ3Z)c&iD6cBuw4T?)Fvz;i#(G+gHPOHc?v(JJ z&^WT*V6R|l4^NsK{gX`bA{F9b_pkQE30Y{djPrMQ*k1Z)O* z6iCJQQ1qol@9_P33x5VK`=~kihk2E^p>#A_CtAev$jag%U#!~S`Z9_Wo?v06fz3gv z9YuH8ebuOH##f@*KN$CN1y~a$jTccJtXyGUj9D6wy>4Z~D5}D`QQUbhAKW-&0*ssP zj8T@<#|{*(-8@DgbVF0ntwlk|SDpG`hE?BnHXG{d@^DufuVn}|P=C&diO@^Ft*yw? zXSOfRXm@-sNj(uI;){@sYQxxR9v{B0*oR(=*%@Q>fN_?fz6O7MUfCk@how%!)^+Fa zpmx--#^S_Y8;e=Cb!O(ZV&1SVmES+{&P3dGYM5)B7wkhmEnHOsY$Q+>(EC2bRcTC%gje4rW{A!AoVX|I%ytm@PH`e<~?Kx$ttC(;w7odT$-&bLDfR zFoGT_CcelQbHeJ}0~YAfL>CK6d_s{gD#EU8^G_I@P!MEw6%cP_CSfzkC()BM&MF*OguoJFKqnZlXvrIS#V0O zsR18>_l>K$ZV`?R!sknRAWe)!0>pDmAR|QL#!rKn>5zH+lgJ`unJbEE8 zq>++&re#5}bm1u8>vnKz<`vY4s@Itpqo&8B=T05Q8J)7$!!F^2I=HfUrTf)>(7g9w zK_9J!y}as$G=23^Rqb}bSEW89_CURgh!g~U6sm}J>ccpx1A^#4rRSG(`wO0(7bgl` z9j!W6wKXrj>#o^$Fa%kLmk;gxoI_Z{bc`6>HLvVZvYni}P7-BIYEI{Ut*3D9Nx^a% zTZXboy{JHu;Z|siQq^bXpvWC76GmPok-L0@B>tP&j=GJzuWxDOe(V%IM_DJWRSLx(VZMzr0$E zVzCfcM;krO6Q=^t@c5~Z4tA5PdFO?HS<1C|py8w31KX=N_P@*Ugw2t{o`ZllXLa`M zo}=%^Wk1C3DW9PgQ^KUl@oQ7rvAit3Tb0|!b+l=?IzEN z+-KFF_P>dVHh&OpItjxMi9Qv+-6q`JEcUP9Exun1_+GTIO5{ufLXcO2FFJ!7I=R!u z|5g!h4%5~No6ea-*HB(cb6#j!Yt9}!k^{5GQ6eBZy16(tqG~i@9L>P|*pa%hilItz z2Z|$4nU#=tTx3mYs{G4HdW6Z{*2EALjUJ|yZ*eEmB8_ji#D}05^eCllQ+IEcaC6O* z7kB^UOI8={(%?%{Kdw8cs;kVGq$Jv<%$JONb9Xs{i^kO{Fk!z_$XUx1S-&O(^}bE= z%-{3y_ow#JhQ)7f!4357HTl{Yz}so3Ways;Hn2+B#hXi?Vip|6>u9B$Nv$qUnKTE00jRt)Un->I0!cu}7A#mgZxs zDG04}1cw#*D#^y~?AXI`v~DL_PW=_I{i453hSswEb(&jldVBSTn7)lYt#+!X8kM87 zk7zw4FV^gxC(W<~HFn^uN&((Z-^&TQ!_;!o|7lEunT3-c)=$_we@}?-4kFCKX=L_n zBAGSEx3Vi2akI$m`FNc3e!govK5jQJq4QAWN{KV?75*=P9K;ijHXTD|rTd%#HZ!DluB+y)&Th>uZX8Ptz zObRxQOg6jqn3rkU>5pzk0bTqRe0?@~HcZL7kjvH@0K-+M6Cw`lc~~7aljicIk{!h4 z7=?B$f{{HzS599KRi&2#Bj~GN(5j>5h!y9n8t|9!mzD_8mnKnITbn=hgsIig7qMHL z{Gb=iEKl~g(lnM=v9mnwaoj>l#lcSg@Q#C*K&_`vOP5YdtYB@7PID)b_lLAVowRX# zqaiEG`>?ky#e{9}RTo&AZZ!aM^l)_=jDv+KI6q=yZSwaktbrDwxfSe+DFr=Y8%uH$^dm+DuHa{$pIzk^@- z{b!|wUa9-DNw$Yc6BXD5-m{tOg5(5cNxg#^8CK8^^DIpr*T)zJPn>z3iC^zwFaBpO z(@Lrye~B*V1>9FT`?}VFrVh`y{}jOgc1cH_(QBA4igGZ&;fNXxg>>V&eJO?kl=Y+8 z>K_^#1MD`B3*`EQ^XcwezgmpimZ+0 zA#@%_7^~L@nTA8ZLT|Etph|FMjb^O7>2XgTXI1wElJ%(&D-?+3)$*3R83EpSc+pkC zu5XfsDq!CbshD*3zYCAI0mYsYU?1;<0$^D%-F}qGUHi|uDHsYn93;)!`!1nWIGkeg zlu^JFGtZ@0Mh#9+4ggNDS;ItDDZe02n^R)|Ta9&9k9@ib;=98s&Rix=4jLDf&tUz{ zN-boMTraYvpUaBcYZm8#d?eLbpr@JiB0B?{LC=}YWm;Lm_pQ7v)PTam(0EY&=PLD( zJ1Ktl=M@c_H;>okt!Ai&zF9t=(vK@cS8g)<=!I$1Y%CQw{zPoSM(3sDO^L}H0xI$@ zy5=V@v{}6CANubRSkXE7%E}))AMvZs0%dp3WDu_M6YZHzt%NUmCD0MN?tS$IRJ;TrOw2?~|M~^~j3R7#Q*4^*9(dxiAgjBGbTd5( zn?k-xo}_WU<85O>Dw+9Xs09t}V6)UIEu3uyyD0#kMeI5!f@WzmE+3nH;<1x!+}H6v z0TMuFgGV3Kp(ib#JiM*4M~?6~ntX>Q@E%ib0skXiq}j&_EgJ&CQ&<6&##;bat>jn5!GTy$iqFP4Y9yeTxzhjS>4>-XgyDVXdh0O;A1zpcp&SpL(^H&mBBSh~ zV|tR4U1WrpotC?_tc9Vq+i~3^vX;gN)n9K>!V+@a_TL%bI%bE7g(eUvXOfFtp~#CM z9oXg|9}=2B9iE{!o3{*Y+>oEjrx6Ixy5x2=5er#@WU{ z$XLOXK=Tovi1UebAAyE2d#{0jbW6BG7<`2!cc>1J1WO;DQL5;C zof9Eyzx>kqG<@R1=TikTWCHf4vKO-cY9xQlaeX$?f!*IU&gWV5tEBlJqs<{Fs zU((#Sg-V|bJS9rxIPW+n2@&LzDn)Th21>s`si!6|hleKfQ94Q=qtw&Vnf(J76px`K zZ!8-Vy}}wLpj2Nh3op9N95>#%88NG{$wvbDGXnPXH7;MnAyoGKKV9?hSJn2q85-oo zl-?J}vQi)T=j566Y!r!48g9&l(Xc!X=UoN3e8Zrwy){wKMaO`n_ufb9ia0fs@*igZ z!rI&q2FFz5L+}abTK_>6gXAJ3zFS6K1Vc5CR0jvwKn)YeHqH`fc&T!f zKf_ru(v%RMXB?uAVz9uDv}BBtf|bSMya*Xh#?C4z5CwN6$H6F=AA4m^M^{Bf+wO#q zHQV;{tG$kFfr;HQ6=Mx|=V)04bIpuPC(KSbha{BX!|{nDy%{hSW^>483Vdte#e-wi z)VxNw)9qGB(= z0oxZp!&%cZekzN^>Qg25m^4VDJ_w20MyCQsr-B2Re*icGrm`00;DO>xf&dt6fN@gO zKmRKBR7W!U}rrnvYu+U1P`ttg8p0t#!cSvEM!8taovs38pTuln-DNo zpU!MzsO@WJ@9EeVAL4(lj!(U66)?3b)PR=iHRe}`a-t`*0N5EbhR~dE+CV$PS-+@k z(yKo7hk-B{hQhFY+Q_O&06ahv>?gHSKY~I48p2}VP*I^V@j0~A&p>d<+FDj*&N5Irn}FgF^#eJf;-*n| z`CT}HbzI%{Q_Flsv5hz;+I1$bMP-{n#5BQ>Bd3oT8Y#p@D<`1;+%B}o?8wyg~3wi|F?EwD2Xxu&g{{h&2e7CML98C*bR#JwX)V0!f0k`_*(8f&xeXl-j4CoIW zxV8FYeNJx{RZZKg@zLBLK3o$e-?S%|n&NMK695N{@3M8DPd4S7&QYHE`LoaYxW05) zK^8R(>sMr9ZuW~hxaM}?-lk@8e&{p$vn+q>(}Yqyxv`0H4yZ?G6~IsLpvNtqC6m*C z>Z4OBdf{jN)o;)MYUzAZtx5tWKyC^KZEef8{5jrM%^{7qOuuiI6gS=mji?HBQj-b0 zt~(qOv&sh3fBJyFC;W=zo!^}RG>fuBG9cMMEd0G+H|^h*;lj`Mrfe9D-~7b{RQ=b6 z7xb)O7Kk_cF0|)6^-oQCrC%eSu1)#}T!eQLp8&M?5Bha3heK=vMsAMLy1KbVbZNUP8awR9q>R?>eswnJr$!Rm*CbePY;}m{uBT8y^8Sfu2#O!%bAe05L0rZY z&_1;oFkEUbQ9te%Gs*<*?HuoDw#Az4H(O9;q_!eYmQt$7R(YsN0k%v1wuM{rTK5*2 z?1d6^M`J(Rdw!g*M0m)M*Fk)eS$g4^mHX2-?FlPuoJVo(_AZmx>G~5Aok)x+Y{G|E zzh|ev3HXTWn-akR2PRJPJ0w^dZ{G~W?le8*X?kh`4xIiZod~ZtE+krxceGHTrTIBW z!Q6t$3EEl9NN*cIqg!^liP&Nih3)n{n&$~xovNw)6EF~GS!2{XOLH`}XVco#jz<3I z)9vTq#a00hGzpwsGI+>8h&SZ`%FqXC&Km7G;HK$?W%co!I>;r=c`Ou{lB<$xdy-|N zOdw{W{%ep>sNk`}4ys-0WoX6kiY)-Zw5So)=~?1o%5*%zyCS|59AvyIs)H#H#x<1Q z@@!dm--WW6tze~Pr|GeK4&>8TP7v=?+f#V>f~Ty4aq@Qopub@0H^^Df_Vn*hT;Pck znS5qAVC{NUwPiJC#M4YeWygjqlHfBA5y?bEqx`El5s)jXc*49@rfJ+a&RZZ}LUQ9f zQm;zN9S*_r@J1w(%QrYe$=m3(Rwct{v{BvWI73HFd(6w>TfRop*@@V_lt}LCZ1wi} zaB~w7kOqiRECC>DJly0MNs`9JbzrDbZz!5|8$B6D=!rI7#rA6$a4}hUba^Ks)v-&i z1fI7d5&C{$I~F;}iuGem1`+7#TQac@-~#MD&_aa#^eF%!6$PJDCY%4+)&?*J13@s! zQ#dFn(|IOTXIF+EdYB0b4`mF|4b1CSEL|R-M{XepF)gI+#k_KqpbG zE}5c=X)LlP$?DL+3D-t0)Q&b`GYpiZuxc?SyRw!mT{AlB#gg5jnw29FVZJ-!*YDu| z?0$Q!Tv)am^=| z%%IQ)8KCJ-M!O_*9!(puY7#Y{xQM1UNAL$g*Z^%ojn!itk!UL<(CqLRE^w_lBq}S! zK^bpsmeZv-th03=(GZ=Pte%yqC!$(+Zq3t?)W=2w?}w^ zw=kvR`STTc>a`CpnaFNlBpm}XE=|kkXgA$Rw~4qQNljd(qt-&QX!1++kFg`RauIs= zJR^XQE-c{Ehj=jG@L0Zk^R)q4hcXUDBd0FY(;(H6)S z*%o*|=u=%QnW>Gd{P zPbrl5A#i`D-xaLzK+t?8%>l#It0togSKj>74q!Fr$)~Vyrhbj^OhxyW%zTdvXqP*Zdif!D3(~25%?&(}@C|?k2Z8*eY!w{JRi!Rh&J?~Il ztjJ~IjQ$-#)MLDN&%hEa5t;jeD|erO4j}qsTE^V8*cYienLa@Y zL2`~>m^*n^D(Htc=3?rCd6@D3{-WffYIrcDjZYEGntKO1r8XcMMZeC_qav4VB=QUe z#j4#yZ0K=6$u0+^zMaY~JGD)H#zkD1?Hoa_&%zh!4Jvs;TB+5mwj;cAl2~qt3#3mx zDpUo!(6@kOR%Jk9}S5aPl1CzjCaRUnZ0VO$Gm`^02t zuN2lJp8`B$x!B$QfQH)OMGRY1ooyd-H|^>$!aRut^^&7oGMB7iw3U zdjZcYNOR*Nr#6Jh(tO*o>eCmgrf7On4+pCzJXEI0a;?{vDY3q%GJf~kVE4~rUS1f@ zb>*~Cetfu4W&PMX4N)Lr%T+d;E8Mm=3PCL4-XtOY>#bJ9KGtxSwUlvSQQ}Sqi%x3b1>#piKok}5+*KZ6fDM)5*NQ2xwY1j3W&_ER~jq9&59sorV_k7CUGIip=&P_PZ zAm9xqb?bbSv(Z&xrst~00ItFC2wSyr)pIEdWi{U1HWjG5DwlGVe$n>YVeS%kB>2$B z|6ceCFWDXhTF#E;^SU7JjKw(j#tMg_Ol23Z z0sDa~Q8tzR>_CzTrvx6s-h*<-U2Ho;@tOWNlAfmpAaB1~6_F}mt{}?zag424_^3%Y z7LzNMrzly*9L1EJTC(LmL?5OLvvS=>n_*jQPs{rhxZkhF+$akhsiWF zds*?D*7|kyfN!W2<7|_>r%SGW=O)XHa<0>5MRIXGcsIe4W;}wCoKuSllM!Yc9~y7$ z4|1U%RJqPgj`LP5Ic?=KNP3BQ;cAB{x^gL2dI5fjdWwjND?Yg?I#=Bc@lp)Z|d6A;5^^m zp=<0yTAar^rjz%qTb?*c923hXR?fnq#`vVUOG)gG)ae*{{k=uFwy%IH)S{AIPwYfT zu@fGL1D(hnaw&NErW)Pu^ICUtZude8uQE#T*X}EPDYPjx}q$%){(dC8Ah{QrB7TTE=|jl1Z5q;x!0*jE{GSn z7@O{)pf+ShFj>g78{GSMj|(ozBOE(N+=82Ds}^S`o*-?M#x*IA3&lex^_tYT5m zZ#w{h4g8R(YCv+yr9{jPv(NnnCwTsgJ^q7JoI&%fg8x1AsIX?{5l-8AUFM-M8W>M% zz#~1oX831RESE*$Y@fT@?V((qRK|2?u5R<>nuON#PtS;!Q}Mt633L(_C7voE{vJ!& zGNIPF&1?!W9wB!P%tVop3X1IOdwOUdy1%3QXUB7j&H6d_)B9QN4Ub>uXru~9)lT-s{ z^~}n2zHd9y4v%t`-A)_-lMIUjiY;eCNhRx@^-Npo?;drsy(*Za$J-tYas!-4y)>MH>Cd0|JOYnZPLumkxUcl$)8=lm&8J1>@RcW?dC zdE`F53E#`FIqWVU_2zwNZlCx(&lcw!^=&Wjb8KIU{#)!@vjz;n0}gZN+Ik|QE8a^i zYgu?2$-sAdx-Ba$Ns_V>#Z&s`0|wxGPy$GLLwz z(LbvHhi2{pa5**OmsZQye*Dq@rMW85%N)zK#-{w4_9-*9MLm2C2~$O@Z(i0ZQ;9g=?W(t2#cAj*-#S{`Hd?|7wEN+nDYd1NvQfoU7+F zx`5~|Nu#1D*-_qBLa(fm2bh!%a=oS8@rG$Nn(pYH;_A!x)3R%gdUZQkgZesCK>e+2 z`shl%9S?LtU!5BtC^UAPnuW*jOKiq0Tj9vaaI2+9vHXaaFvALVstz#7S<&SOS60O1 zBe{4rc-vnjj<-yYh?ULRPZ`Ic{Kg|iG06eqMFz52MX#*6v=w3fx%9R(mV9D#Q~H#@ zs2ZP1;=geecWXiMd3=*Gn<^eZq7t+A(2F8?9Z26^QEv%uwLx(+Ser|LwEc>mif}NR$;LX%*R z?n$EBs8%nrsSc}ZxmG;=VpFTE@xp$Qox|D9{EXW95Xg>z=z^`jSMMaGA?l1oor0(t z^|@>!@2UX-0{;EUiBX-s+PVg{bmx)ouvRg?@Fkz}XI%*f%YkD>ik=3R1Nm~iZxoW- z(>VUgeQm@~j2sFT<$M&V&>?lJU&2w6r~3&!QmUw(msELJ#1s(a6eUwp zMF~aul&HvK32aEG97NfaK!hdp2oUhAa{L_N6Yt7eK*Bad00FD;hrl8M;8LJ70#Uic zLhuM8EVd9gf_Ff9B5+~iRq5=k(!&-mL8Kr70!5Rc;28NiFTn_V8J(g0CYlK2LpJFK zLX|~r93U#;`H8Y#q*&wmk_|jIZ^F^037K9uP9Ma_G+d$!4z6C5AV3%mEW1+CaT=tC zAJ=`4GF2KaoI1Ig#F?_0KsYbYk1WlM6hLmipD@COD00kjMS2Wauw~$==h9;kFn-!I z3+Agg>XJ32mw>d<;Krn5bRE*)jLCIAK0l2SxOO)g#s@v!RqwJ_sN?af*H#d-IZEl& z1abFMG#~mPp|Z!m4?#u5C58%PkgT}RRs9g8Qm?a88-ldmF)HUO$i!ZLN@dR3tg9_- zg7EP&yGk?2@veg;LXg+o^D>nSg4Gc;HZ!`eB}y-WKaN&&)QXQpFFVnbsAV22Ee*+a zM=!I~*jkx(PTNJ|-7(8fXdYTxoO{oeID5}aOH*GI67P;)=Ao5oceP!0!p4(Z$?19G HBnkikn^Nxw literal 0 HcmV?d00001 diff --git a/site/static/fonts/roboto/roboto-latin-500.woff2 b/site/static/fonts/roboto/roboto-latin-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8dceabcf6bdfdb0f09be31878c1ebfdd0be943ff GIT binary patch literal 15552 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 + + + + + + \ No newline at end of file diff --git a/site/static/icons/check.svg b/site/static/icons/check.svg new file mode 100644 index 000000000..5679642c7 --- /dev/null +++ b/site/static/icons/check.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/chevron.svg b/site/static/icons/chevron.svg new file mode 100644 index 000000000..3706f5327 --- /dev/null +++ b/site/static/icons/chevron.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/collapse.svg b/site/static/icons/collapse.svg new file mode 100644 index 000000000..13ff9dee8 --- /dev/null +++ b/site/static/icons/collapse.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/download.svg b/site/static/icons/download.svg new file mode 100644 index 000000000..8d255ff74 --- /dev/null +++ b/site/static/icons/download.svg @@ -0,0 +1,4 @@ + + + + diff --git a/site/static/icons/dropdown.svg b/site/static/icons/dropdown.svg new file mode 100644 index 000000000..b3fcdbe79 --- /dev/null +++ b/site/static/icons/dropdown.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/edit.svg b/site/static/icons/edit.svg new file mode 100644 index 000000000..5e7b18208 --- /dev/null +++ b/site/static/icons/edit.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/site/static/icons/expand.svg b/site/static/icons/expand.svg new file mode 100644 index 000000000..b429cb53c --- /dev/null +++ b/site/static/icons/expand.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/flip.svg b/site/static/icons/flip.svg new file mode 100644 index 000000000..09326b1e6 --- /dev/null +++ b/site/static/icons/flip.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/fork.svg b/site/static/icons/fork.svg new file mode 100644 index 000000000..57ad61bb2 --- /dev/null +++ b/site/static/icons/fork.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/icons/link.svg b/site/static/icons/link.svg new file mode 100644 index 000000000..3b36b03ca --- /dev/null +++ b/site/static/icons/link.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/site/static/icons/loading.svg b/site/static/icons/loading.svg new file mode 100644 index 000000000..e54abff1d --- /dev/null +++ b/site/static/icons/loading.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/site/static/icons/save.svg b/site/static/icons/save.svg new file mode 100644 index 000000000..4bde5edde --- /dev/null +++ b/site/static/icons/save.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/site/static/images/sapper-android-chrome-192.png b/site/static/images/sapper-android-chrome-192.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9e4b147e0e398ed739a6445dee3c480c67f97c GIT binary patch literal 5334 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

$wgR5 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 aBJzKf?8gge63@N>0000RZ7ELn%1 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 X<~myvCog0p00000NkvXXu0mjf{3uu8 literal 0 HcmV?d00001 diff --git a/site/static/manifest.json b/site/static/manifest.json new file mode 100644 index 000000000..33501ceac --- /dev/null +++ b/site/static/manifest.json @@ -0,0 +1,20 @@ +{ + "background_color": "#ffffff", + "theme_color": "#ff3e00", + "name": "Sapper", + "short_name": "Sapper", + "display": "minimal-ui", + "start_url": "/", + "icons": [ + { + "src": "images/sapper-android-chrome-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "images/sapper-android-chrome-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/site/static/prism.css b/site/static/prism.css new file mode 100644 index 000000000..c80382928 --- /dev/null +++ b/site/static/prism.css @@ -0,0 +1,96 @@ +/* +----------------------------------------------- + syntax-highlighting [prism] +----------------------------------------------- +*/ + +/* colors --------------------------------- */ +pre[class*='language-'] { + --background: var(--back-light); + --base: hsl(45, 7%, 45%); + --comment: hsl(210, 25%, 60%); + --keyword: hsl(204, 58%, 45%); + --function: hsl(19, 67%, 45%); + --string: hsl(41, 37%, 45%); + --number: hsl(102, 27%, 50%); + --tags: var(--function); + --important: var(--string); +} + +/* type-base ------------------------------ */ +code[class*='language-'], +pre[class*='language-'] { + background: none; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + font: 300 var(--code-fs)/1.7 var(--font-mono); + color: var(--base); + tab-size: 2; + -moz-tab-size: 2; + -webkit-hyphens: none; + hyphens: none; +} + +/* code-blocks ---------------------------- */ +pre[class*='language-'] { + overflow: auto; + padding: 1.5rem 2rem; + margin: .8rem 0 2.4rem; + /* max-width: var(--code-w); */ + border-radius: var(--border-r); + box-shadow: 1px 1px 1px rgba(68, 68, 68, .12) inset; +} + +:not(pre) > code[class*='language-'], +pre[class*='language-'] { + background: var(--background); +} + +/* tokens --------------------------------- */ +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { color: var(--comment) } + +.token.punctuation { color: var(--base) } + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { color: var(--tags) } + +.token.boolean, +.token.number { color: var(--number) } + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { color: var(--string) } + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { color: var(--base) } + +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { color: var(--function) } + +.token.keyword { color: var(--keyword) } + +.token.regex, +.token.important { color: var(--important) } + +.token.important, +.token.bold { font-weight: bold } +.token.italic { font-style: italic } +.token.entity { cursor: help } \ No newline at end of file diff --git a/site/static/sapper-logo-horizontal.svg b/site/static/sapper-logo-horizontal.svg new file mode 100644 index 000000000..7ba3a5c95 --- /dev/null +++ b/site/static/sapper-logo-horizontal.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/site/static/sapper-logo-outline.svg b/site/static/sapper-logo-outline.svg new file mode 100644 index 000000000..09f192497 --- /dev/null +++ b/site/static/sapper-logo-outline.svg @@ -0,0 +1,20 @@ + + + + + + + diff --git a/site/static/sapper-logo-vertical.svg b/site/static/sapper-logo-vertical.svg new file mode 100644 index 000000000..18d564cc8 --- /dev/null +++ b/site/static/sapper-logo-vertical.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/site/static/sapper-logo.svg b/site/static/sapper-logo.svg new file mode 100644 index 000000000..04efb53dd --- /dev/null +++ b/site/static/sapper-logo.svg @@ -0,0 +1,21 @@ + + + + + + + diff --git a/site/static/sapper-logotype.svg b/site/static/sapper-logotype.svg new file mode 100644 index 000000000..15eff1d0c --- /dev/null +++ b/site/static/sapper-logotype.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + From 381af86f041bacb7e1e9e1d23efadddeae0baf43 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sun, 28 Apr 2019 21:44:34 -0400 Subject: [PATCH 02/15] move old docs over --- site/config.js | 3 + .../{guide => docs}/00-introduction.md | 0 site/content/{guide => docs}/01-structure.md | 0 site/content/{guide => docs}/02-routing.md | 0 site/content/{guide => docs}/03-client-api.md | 0 site/content/{guide => docs}/04-preloading.md | 0 site/content/{guide => docs}/05-layouts.md | 2 +- .../06-server-side-rendering.md | 0 .../{guide => docs}/07-state-management.md | 0 .../content/{guide => docs}/08-prefetching.md | 0 site/content/{guide => docs}/09-building.md | 0 site/content/{guide => docs}/10-exporting.md | 0 site/content/{guide => docs}/11-deploying.md | 0 site/content/{guide => docs}/12-security.md | 0 site/content/{guide => docs}/13-base-urls.md | 0 site/content/{guide => docs}/14-testing.md | 0 site/content/{guide => docs}/15-debugging.md | 0 site/content/{guide => docs}/16-migrating.md | 12 +- site/package-lock.json | 51 +++ site/package.json | 4 +- site/src/components/Nav.svelte | 60 --- site/src/routes/_error.svelte | 63 ++- site/src/routes/docs/_GuideContents.svelte | 136 ++++++ site/src/routes/docs/_sections.js | 158 +++++++ site/src/routes/docs/index.json.js | 14 + site/src/routes/docs/index.svelte | 397 ++++++++++++++++++ site/src/routes/guide/_process_markdown.js | 15 - site/src/routes/guide/_sections.js | 82 ---- site/src/routes/guide/index.json.js | 16 - site/src/routes/guide/index.svelte | 1 - 30 files changed, 816 insertions(+), 198 deletions(-) create mode 100644 site/config.js rename site/content/{guide => docs}/00-introduction.md (100%) rename site/content/{guide => docs}/01-structure.md (100%) rename site/content/{guide => docs}/02-routing.md (100%) rename site/content/{guide => docs}/03-client-api.md (100%) rename site/content/{guide => docs}/04-preloading.md (100%) rename site/content/{guide => docs}/05-layouts.md (99%) rename site/content/{guide => docs}/06-server-side-rendering.md (100%) rename site/content/{guide => docs}/07-state-management.md (100%) rename site/content/{guide => docs}/08-prefetching.md (100%) rename site/content/{guide => docs}/09-building.md (100%) rename site/content/{guide => docs}/10-exporting.md (100%) rename site/content/{guide => docs}/11-deploying.md (100%) rename site/content/{guide => docs}/12-security.md (100%) rename site/content/{guide => docs}/13-base-urls.md (100%) rename site/content/{guide => docs}/14-testing.md (100%) rename site/content/{guide => docs}/15-debugging.md (100%) rename site/content/{guide => docs}/16-migrating.md (98%) delete mode 100644 site/src/components/Nav.svelte create mode 100644 site/src/routes/docs/_GuideContents.svelte create mode 100644 site/src/routes/docs/_sections.js create mode 100644 site/src/routes/docs/index.json.js create mode 100644 site/src/routes/docs/index.svelte delete mode 100644 site/src/routes/guide/_process_markdown.js delete mode 100644 site/src/routes/guide/_sections.js delete mode 100644 site/src/routes/guide/index.json.js delete mode 100644 site/src/routes/guide/index.svelte diff --git a/site/config.js b/site/config.js new file mode 100644 index 000000000..db5981465 --- /dev/null +++ b/site/config.js @@ -0,0 +1,3 @@ +export const SLUG_PRESERVE_UNICODE = false; +export const SLUG_SEPARATOR = '_'; +export const SLUG_LANG = 'en'; \ No newline at end of file diff --git a/site/content/guide/00-introduction.md b/site/content/docs/00-introduction.md similarity index 100% rename from site/content/guide/00-introduction.md rename to site/content/docs/00-introduction.md diff --git a/site/content/guide/01-structure.md b/site/content/docs/01-structure.md similarity index 100% rename from site/content/guide/01-structure.md rename to site/content/docs/01-structure.md diff --git a/site/content/guide/02-routing.md b/site/content/docs/02-routing.md similarity index 100% rename from site/content/guide/02-routing.md rename to site/content/docs/02-routing.md diff --git a/site/content/guide/03-client-api.md b/site/content/docs/03-client-api.md similarity index 100% rename from site/content/guide/03-client-api.md rename to site/content/docs/03-client-api.md diff --git a/site/content/guide/04-preloading.md b/site/content/docs/04-preloading.md similarity index 100% rename from site/content/guide/04-preloading.md rename to site/content/docs/04-preloading.md diff --git a/site/content/guide/05-layouts.md b/site/content/docs/05-layouts.md similarity index 99% rename from site/content/guide/05-layouts.md rename to site/content/docs/05-layouts.md index 11a716588..f349a2d95 100644 --- a/site/content/guide/05-layouts.md +++ b/site/content/docs/05-layouts.md @@ -82,7 +82,7 @@ In addition to `child.component` and `child.props`, there is a `child.segment` p ``` -### Preloading +### Preloading in layouts Like page components, layout components can use `preload`: diff --git a/site/content/guide/06-server-side-rendering.md b/site/content/docs/06-server-side-rendering.md similarity index 100% rename from site/content/guide/06-server-side-rendering.md rename to site/content/docs/06-server-side-rendering.md diff --git a/site/content/guide/07-state-management.md b/site/content/docs/07-state-management.md similarity index 100% rename from site/content/guide/07-state-management.md rename to site/content/docs/07-state-management.md diff --git a/site/content/guide/08-prefetching.md b/site/content/docs/08-prefetching.md similarity index 100% rename from site/content/guide/08-prefetching.md rename to site/content/docs/08-prefetching.md diff --git a/site/content/guide/09-building.md b/site/content/docs/09-building.md similarity index 100% rename from site/content/guide/09-building.md rename to site/content/docs/09-building.md diff --git a/site/content/guide/10-exporting.md b/site/content/docs/10-exporting.md similarity index 100% rename from site/content/guide/10-exporting.md rename to site/content/docs/10-exporting.md diff --git a/site/content/guide/11-deploying.md b/site/content/docs/11-deploying.md similarity index 100% rename from site/content/guide/11-deploying.md rename to site/content/docs/11-deploying.md diff --git a/site/content/guide/12-security.md b/site/content/docs/12-security.md similarity index 100% rename from site/content/guide/12-security.md rename to site/content/docs/12-security.md diff --git a/site/content/guide/13-base-urls.md b/site/content/docs/13-base-urls.md similarity index 100% rename from site/content/guide/13-base-urls.md rename to site/content/docs/13-base-urls.md diff --git a/site/content/guide/14-testing.md b/site/content/docs/14-testing.md similarity index 100% rename from site/content/guide/14-testing.md rename to site/content/docs/14-testing.md diff --git a/site/content/guide/15-debugging.md b/site/content/docs/15-debugging.md similarity index 100% rename from site/content/guide/15-debugging.md rename to site/content/docs/15-debugging.md diff --git a/site/content/guide/16-migrating.md b/site/content/docs/16-migrating.md similarity index 98% rename from site/content/guide/16-migrating.md rename to site/content/docs/16-migrating.md index 485d5b1c2..ce1d221a9 100644 --- a/site/content/guide/16-migrating.md +++ b/site/content/docs/16-migrating.md @@ -10,11 +10,11 @@ Until we reach version 1.0, there may be occasional changes to the project struc Consult [sapper-template](https://github.com/sveltejs/sapper-template) for full examples of all the below points. -#### package.json +##### package.json To start a dev server, use `sapper dev` rather than `node server.js`. In all likelihood, your package.json will have an `npm run dev` script that will need to be updated. -#### Entry points +##### Entry points As of version 0.7, Sapper expects to find your entry points — for client, server and service worker — in an `app` folder. Instead of using magically-injected `__variables__`, each entry point imports from its corresponding file in the `app/manifests` folder. These are automatically generated by Sapper. @@ -50,7 +50,7 @@ import { assets, shell, timestamp, routes } from './manifest/service-worker.js'; ``` -#### Templates and error pages +##### Templates and error pages In previous versions, we had `templates/2xx.html`, `templates/4xx.html` and `templates/5xx.html`. Now, we have a single template, `app/template.html`, which should look like your old `templates/2xx.html`. @@ -61,7 +61,7 @@ This page is just like any other, except that it will get rendered whenever an e Note that you can now use `this.error(statusCode, error)` inside your `preload` functions. -#### Webpack configs +##### Webpack configs Your webpack configs now live in a `webpack` directory: @@ -73,12 +73,12 @@ If you have a service worker, you should also have a `webpack/service-worker.con ### <0.9 to 0.10 -#### app/template.html +##### app/template.html * Your `` element must contain `%sapper.base%` (see ([base URLs](guide#base-urls)) * Remove references to your service worker; this is now handled by `%sapper.scripts%` -#### Pages +##### Pages * Your `preload` functions should now use `this.fetch` instead of `fetch`. `this.fetch` allows you to make credentialled requests on the server, and means that you no longer need to create a `global.fetch` object in `app/server.js`. diff --git a/site/package-lock.json b/site/package-lock.json index e8f513e58..819344ea3 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -825,6 +825,11 @@ "to-fast-properties": "^2.0.0" } }, + "@polka/send": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@polka/send/-/send-0.4.0.tgz", + "integrity": "sha1-4nccVnHTYXWDJTSriGqIT3XzHm8=" + }, "@polka/url": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", @@ -1194,6 +1199,17 @@ } } }, + "clipboard": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", + "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "optional": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1389,6 +1405,12 @@ } } }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, "electron-to-chromium": { "version": "1.3.127", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.127.tgz", @@ -2193,6 +2215,15 @@ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "requires": { + "delegate": "^3.1.2" + } + }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -2969,6 +3000,14 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "prismjs": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.16.0.tgz", + "integrity": "sha512-OA4MKxjFZHSvZcisLGe14THYsug/nF6O1f0pAJc0KN0wTyAcLqmsbE+lTGKSpyh+9pEW57+k6pg2AfYR+coyHA==", + "requires": { + "clipboard": "^2.0.0" + } + }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -3267,6 +3306,12 @@ "string-hash": "^1.1.3" } }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", @@ -3628,6 +3673,12 @@ } } }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", diff --git a/site/package.json b/site/package.json index 7a2776fc9..23763ffcc 100644 --- a/site/package.json +++ b/site/package.json @@ -12,10 +12,12 @@ "test": "run-p --race dev cy:run" }, "dependencies": { + "@polka/send": "^0.4.0", "compression": "^1.7.1", "highlight.js": "^9.15.6", "marked": "^0.6.2", - "polka": "^0.5.0", + "polka": "^0.5.2", + "prismjs": "^1.16.0", "sirv": "^0.2.0" }, "devDependencies": { diff --git a/site/src/components/Nav.svelte b/site/src/components/Nav.svelte deleted file mode 100644 index d7f8da156..000000000 --- a/site/src/components/Nav.svelte +++ /dev/null @@ -1,60 +0,0 @@ - - - - -

\ No newline at end of file diff --git a/site/src/routes/_error.svelte b/site/src/routes/_error.svelte index 320e58702..0071e3cea 100644 --- a/site/src/routes/_error.svelte +++ b/site/src/routes/_error.svelte @@ -1,40 +1,71 @@ {status} -

{status}

+
+ {#if online} +

Yikes!

+ + {#if error.message} +

{status}: {error.message}

+ {:else} +

Encountered a {status} error

+ {/if} + + {#if dev && error.stack} +
{error.stack}
+ {:else} + {#if status >= 500} +

Please try reloading the page.

+ {/if} -

{error.message}

+

If the error persists, please drop by Discord chatroom and let us know, or raise an issue on GitHub. Thanks!

+ {/if} + {:else} +

It looks like you're offline

-{#if dev && error.stack} -
{error.stack}
-{/if} +

Reload the page once you've found the internet.

+ {/if} +
\ No newline at end of file diff --git a/site/src/routes/docs/_GuideContents.svelte b/site/src/routes/docs/_GuideContents.svelte new file mode 100644 index 000000000..d2014efc7 --- /dev/null +++ b/site/src/routes/docs/_GuideContents.svelte @@ -0,0 +1,136 @@ + + + + + diff --git a/site/src/routes/docs/_sections.js b/site/src/routes/docs/_sections.js new file mode 100644 index 000000000..6fb764170 --- /dev/null +++ b/site/src/routes/docs/_sections.js @@ -0,0 +1,158 @@ +import fs from 'fs'; +import path from 'path'; +import { SLUG_SEPARATOR, SLUG_PRESERVE_UNICODE } from '../../../config'; +import { extract_frontmatter, extract_metadata, langs, link_renderer } from '@sveltejs/site-kit/utils/markdown.js'; +import { make_session_slug_processor } from '@sveltejs/site-kit/utils/slug'; +import marked from 'marked'; +// import PrismJS from 'prismjs'; +// import 'prismjs/components/prism-bash'; +import hljs from 'highlight.js'; + +const escaped = { + '"': '"', + "'": ''', + '&': '&', + '<': '<', + '>': '>', +}; + +const unescaped = Object.keys(escaped).reduce( + (unescaped, key) => ((unescaped[escaped[key]] = key), unescaped), + {} +); + +function unescape(str) { + return String(str).replace(/&.+?;/g, match => unescaped[match] || match); +} + +const blockTypes = [ + 'blockquote', + 'html', + 'heading', + 'hr', + 'list', + 'listitem', + 'paragraph', + 'table', + 'tablerow', + 'tablecell' +]; + +export default function() { + const make_slug = make_session_slug_processor({ + separator: SLUG_SEPARATOR, + preserve_unicode: SLUG_PRESERVE_UNICODE + }); + + return fs + .readdirSync(`content/docs`) + .filter(file => file[0] !== '.' && path.extname(file) === '.md') + .map(file => { + const markdown = fs.readFileSync(`content/docs/${file}`, 'utf-8'); + + const { content, metadata } = extract_frontmatter(markdown); + + const section_slug = make_slug(metadata.title); + + const subsections = []; + + const renderer = new marked.Renderer(); + + let block_open = false; + + renderer.link = link_renderer; + + renderer.hr = () => { + block_open = true; + + return '
'; + }; + + renderer.code = (source, lang) => { + source = source.replace(/^ +/gm, match => + match.split(' ').join('\t') + ); + + const lines = source.split('\n'); + + const meta = extract_metadata(lines[0], lang); + + let prefix = ''; + let class_name = 'code-block'; + + if (meta) { + source = lines.slice(1).join('\n'); + const filename = meta.filename || (lang === 'html' && 'App.svelte'); + if (filename) { + prefix = `${prefix} ${filename}`; + class_name += ' named'; + } + } + + if (meta && meta.hidden) { + return ''; + } + + const plang = langs[lang]; + const { value: highlighted } = hljs.highlight(lang, source); + // const highlighted = PrismJS.highlight( + // source, + // PrismJS.languages[plang], + // lang + // ); + + const html = `
${prefix}
${highlighted}
`; + + if (block_open) { + block_open = false; + return `
${html}
`; + } + + return html; + }; + + renderer.heading = (text, level, rawtext) => { + const slug = level <= 4 && make_slug(rawtext); + + if (level === 3 || level === 4) { + const title = unescape( + text + .replace(/<\/?code>/g, '') + .replace(/\.(\w+)(\((.+)?\))?/, (m, $1, $2, $3) => { + if ($3) return `.${$1}(...)`; + if ($2) return `.${$1}()`; + return `.${$1}`; + }) + ); + + subsections.push({ slug, title, level }); + } + + return ` + + 4 ? 'data-scrollignore' : ''}> + + ${text} + `; + }; + + blockTypes.forEach(type => { + const fn = renderer[type]; + renderer[type] = function() { + return fn.apply(this, arguments); + }; + }); + + const html = marked(content, { renderer }); + + const hashes = {}; + + return { + html: html.replace(/@@(\d+)/g, (m, id) => hashes[id] || m), + metadata, + subsections, + slug: section_slug, + file, + }; + }); +} diff --git a/site/src/routes/docs/index.json.js b/site/src/routes/docs/index.json.js new file mode 100644 index 000000000..d994b3c1e --- /dev/null +++ b/site/src/routes/docs/index.json.js @@ -0,0 +1,14 @@ +import send from '@polka/send'; +import get_sections from './_sections.js'; + +let json; + +export function get(req, res) { + if (!json || process.env.NODE_ENV !== 'production') { + json = JSON.stringify(get_sections()); // TODO it errors if I send the non-stringified value + } + + send(res, 200, json, { + 'Content-Type': 'application/json' + }); +} diff --git a/site/src/routes/docs/index.svelte b/site/src/routes/docs/index.svelte new file mode 100644 index 000000000..255bfa4e1 --- /dev/null +++ b/site/src/routes/docs/index.svelte @@ -0,0 +1,397 @@ + + + + + + + + API Docs • Svelte + + + + + + +
+ {#each sections as section} +
+

+ + + + {section.metadata.title} + + + + +

+ + {@html section.html} +
+ {/each} +
+ + diff --git a/site/src/routes/guide/_process_markdown.js b/site/src/routes/guide/_process_markdown.js deleted file mode 100644 index a79d759cb..000000000 --- a/site/src/routes/guide/_process_markdown.js +++ /dev/null @@ -1,15 +0,0 @@ -export default function process_markdown(markdown) { - const match = /---\n([\s\S]+?)\n---/.exec(markdown); - const frontMatter = match[1]; - const content = markdown.slice(match[0].length); - - const metadata = {}; - frontMatter.split('\n').forEach(pair => { - const colonIndex = pair.indexOf(':'); - metadata[pair.slice(0, colonIndex).trim()] = pair - .slice(colonIndex + 1) - .trim(); - }); - - return { metadata, content }; -} \ No newline at end of file diff --git a/site/src/routes/guide/_sections.js b/site/src/routes/guide/_sections.js deleted file mode 100644 index de3a144f2..000000000 --- a/site/src/routes/guide/_sections.js +++ /dev/null @@ -1,82 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import process_markdown from './_process_markdown.js'; -import marked from 'marked'; -import hljs from 'highlight.js'; - -const langs = { - 'hidden-data': 'json', - 'html-no-repl': 'html' -}; - -function btoa(str) { - return new Buffer(str).toString('base64'); -} - -const escaped = { - '"': '"', - "'": ''', - '&': '&', - '<': '<', - '>': '>' -}; - -const unescaped = Object.keys(escaped).reduce( - (unescaped, key) => ((unescaped[escaped[key]] = key), unescaped), - {} -); - -function unescape(str) { - return String(str).replace(/&.+?;/g, match => unescaped[match] || match); -} - -export default () => fs - .readdirSync(`content/guide`) - .filter(file => file[0] !== '.' && path.extname(file) === '.md') - .map(file => { - const markdown = fs.readFileSync(`content/guide/${file}`, 'utf-8'); - - const { content, metadata } = process_markdown(markdown); - - // syntax highlighting - let uid = 0; - const highlighted = {}; - - const tweaked_content = content.replace( - /```([\w-]+)?\n([\s\S]+?)```/g, - (match, lang, code) => { - const { value } = hljs.highlight(lang, code); - highlighted[++uid] = value; - - return `@@${uid}`; - } - ); - - const html = marked(tweaked_content) - .replace(/

@@(\d+)<\/p>/g, (match, id) => { - return `

${highlighted[id]}
`; - }) - .replace(/^\t+/gm, match => match.split('\t').join(' ')); - - const subsections = []; - const pattern = /

(.+?)<\/h3>/g; - let match; - - while ((match = pattern.exec(html))) { - const slug = match[1]; - // const title = unescape( - // match[2].replace(/<\/?code>/g, '').replace(/\.(\w+)\W.*/, '.$1') - // ); - const title = unescape(match[2]); - - subsections.push({ slug, title }); - } - - return { - html, - metadata, - subsections, - slug: file.replace(/^\d+-/, '').replace(/\.md$/, ''), - file - }; - }); diff --git a/site/src/routes/guide/index.json.js b/site/src/routes/guide/index.json.js deleted file mode 100644 index e7169a0ab..000000000 --- a/site/src/routes/guide/index.json.js +++ /dev/null @@ -1,16 +0,0 @@ -import sections from './_sections.js'; - -const dev = process.env.NODE_ENV === 'development'; -let json; - -export function get(req, res) { - if (dev || !json) { - json = JSON.stringify(sections()); - } - - res.set({ - 'Content-Type': 'application/json', - 'Cache-Control': `max-age=${30 * 60 * 1e3}` // 30 minutes - }); - res.end(json); -} \ No newline at end of file diff --git a/site/src/routes/guide/index.svelte b/site/src/routes/guide/index.svelte deleted file mode 100644 index 30404ce4c..000000000 --- a/site/src/routes/guide/index.svelte +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file From 63251c6733d4f4202f5ebb88b3e154cd9137eb27 Mon Sep 17 00:00:00 2001 From: Richard Harris Date: Sun, 28 Apr 2019 22:06:02 -0400 Subject: [PATCH 03/15] fix some styles --- site/content/docs/00-introduction.md | 6 ++++-- site/src/routes/_layout.svelte | 7 +++++-- site/src/routes/docs/index.svelte | 11 ++++++----- site/src/template.html | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/site/content/docs/00-introduction.md b/site/content/docs/00-introduction.md index 4fc3f05a3..0148a9edf 100644 --- a/site/content/docs/00-introduction.md +++ b/site/content/docs/00-introduction.md @@ -2,7 +2,9 @@ title: Introduction --- -*Note: Sapper is in early development, and some things may change before we hit version 1.* +### Before we begin + +> Sapper is in early development, and some things may change before we hit version 1.0. This document is a work-in-progress. If you get stuck, reach out for help in the [Discord chatroom](https://discord.gg/yy75DKs). ### What is Sapper? @@ -29,7 +31,7 @@ For web developers, the stakes are generally lower than for combat engineers. Bu * Sapper is powered by Svelte instead of React, so it's faster and your apps are smaller * Instead of route masking, we encode route parameters in filenames (see the [routing](guide#routing) section below) -* As well as *pages*, you can create *server routes* in your `src/routes` directory. This makes it very easy to, for example, add a JSON API such as the one powering this very page (try visiting [/guide.json](/guide.json)) +* As well as *pages*, you can create *server routes* in your `src/routes` directory. This makes it very easy to, for example, add a JSON API such as the one powering this very page (try visiting [/docs.json](/docs.json)) * Links are just `` elements, rather than framework-specific `` components. That means, for example, that [this link right here](/), despite being inside a blob of markdown, works with the router as you'd expect diff --git a/site/src/routes/_layout.svelte b/site/src/routes/_layout.svelte index e5768a8d6..98f928699 100644 --- a/site/src/routes/_layout.svelte +++ b/site/src/routes/_layout.svelte @@ -6,20 +6,23 @@