diff --git a/.github/workflows/test-app-express.yml b/.github/workflows/test-app-express.yml deleted file mode 100644 index 9abe5441..00000000 --- a/.github/workflows/test-app-express.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: test app-express -on: - push: - branches-ignore: main - paths: - - "packages/app-express/**" -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [14.x] - steps: - - uses: actions/checkout@v2 - - name: Use NodeJS ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: cd packages/app-express && yarn - - run: cd packages/app-express && yarn test - env: - CI: true diff --git a/.github/workflows/tests-adapter-pouchdb.yml b/.github/workflows/tests-adapter-pouchdb.yml deleted file mode 100644 index 3b2b1f6e..00000000 --- a/.github/workflows/tests-adapter-pouchdb.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: test pouchdb adapter -on: - push: - branches-ignore: main - paths: - - "packages/adapter-pouchdb/**" -jobs: - build: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [14.x] - steps: - - uses: actions/checkout@v2 - - name: Use NodeJS ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - run: cd packages/adapter-pouchdb && yarn - - run: cd packages/adapter-pouchdb && yarn test - env: - CI: true diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index f220e375..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -/node_modules/ -/src/node_modules/@sapper/ -yarn-error.log -/__sapper__/ diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 13e7a9d8..00000000 --- a/docs/README.md +++ /dev/null @@ -1,205 +0,0 @@ -# sapper-template - -The default template for setting up a -[Sapper](https://github.com/sveltejs/sapper) project. Can use either Rollup or -webpack as bundler. - -## Getting started - -### Using `degit` - -To create a new Sapper project based on Rollup locally, run - -```bash -npx degit "sveltejs/sapper-template#rollup" my-app -``` - -For a webpack-based project, instead run - -```bash -npx degit "sveltejs/sapper-template#webpack" my-app -``` - -[`degit`](https://github.com/Rich-Harris/degit) is a scaffolding tool that lets -you create a directory from a branch in a repository. - -Replace `my-app` with the path where you wish to create the project. - -### Using GitHub templates - -Alternatively, you can create the new project as a GitHub repository using -GitHub's template feature. - -Go to either -[sapper-template-rollup](https://github.com/sveltejs/sapper-template-rollup) or -[sapper-template-webpack](https://github.com/sveltejs/sapper-template-webpack) -and click on "Use this template" to create a new project repository initialized -by the template. - -### Running the project - -Once you have created the project, install dependencies and run the project in -development mode: - -```bash -cd my-app -npm install # or yarn -npm run dev -``` - -This will start the development server on -[localhost:3000](http://localhost:3000). Open it and click around. - -You now have a fully functional Sapper project! To get started developing, -consult [sapper.svelte.dev](https://sapper.svelte.dev). - -### Using TypeScript - -By default, the template uses plain JavaScript. If you wish to use TypeScript -instead, you need some changes to the project: - -- Add `typescript` as well as typings as dependences in `package.json` -- Configure the bundler to use - [`svelte-preprocess`](https://github.com/sveltejs/svelte-preprocess) and - transpile the TypeScript code. -- Add a `tsconfig.json` file -- Update the project code to TypeScript - -The template comes with a script that will perform these changes for you by -running - -```bash -node scripts/setupTypeScript.js -``` - -`@sapper` dependencies are resolved through `src/node_modules/@sapper`, which is -created during the build. You therefore need to run or build the project once to -avoid warnings about missing dependencies. - -The script does not support webpack at the moment. - -## Directory 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 `.svelte` 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.svelte` corresponds to the `/about` route. A - file called `src/routes/blog/[slug].svelte` corresponds to the `/blog/:slug` - route, in which case `params.slug` is available to the route -- The file `src/routes/index.svelte` (or `src/routes/index.js`) corresponds to - the root of your app. `src/routes/about/index.svelte` is treated the same as - `src/routes/about.svelte`. -- 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. - -#### src/node_modules/images - -Images added to `src/node_modules/images` can be imported into your code using -`import 'images/'`. They will be given a dynamically generated -filename containing a hash, allowing for efficient caching and serving the -images on a CDN. - -See [`index.svelte`](src/routes/index.svelte) for an example. - -#### src/node_modules/@sapper - -This directory is managed by Sapper and generated when building. It contains all -the code you import from `@sapper` modules. - -### static - -The [static](static) directory contains static assets that should be served -publicly. Files in this directory will be available directly under the root URL, -e.g. an `image.jpg` will be available as `/image.jpg`. - -The default [service-worker.js](src/service-worker.js) will preload and cache -these files, by retrieving a list of `files` from the generated manifest: - -```js -import { files } from "@sapper/service-worker"; -``` - -If you have static files you do not want to cache, you should exclude them from -this list after importing it (and before passing it to `cache.addAll`). - -Static files are served using [sirv](https://github.com/lukeed/sirv). - -## Bundler configuration - -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 10 or -above. As an example, to deploy to [Vercel Now](https://vercel.com) when using -`sapper export`, run these commands: - -```bash -npm install -g vercel -vercel -``` - -If your app can't be exported to a static site, you can use the -[now-sapper](https://github.com/thgh/now-sapper) builder. You can find -instructions on how to do so in its -[README](https://github.com/thgh/now-sapper#basic-usage). - -## Using external components - -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 the bundler doesn't treat the package as an -_external dependency_. You can either modify the `external` option under -`server` in [rollup.config.js](rollup.config.js) or the `externals` option in -[webpack.config.js](webpack.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 -npm install -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/docs/package.json b/docs/package.json deleted file mode 100644 index 7973b3e8..00000000 --- a/docs/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "TODO", - "description": "TODO", - "version": "0.0.1", - "scripts": { - "dev": "sapper dev --ext '.svelte .svx'", - "build": "sapper build --legacy --ext '.svelte .svx'", - "export": "sapper export --legacy --ext '.svelte .svx'" - }, - "dependencies": { - "compression": "^1.7.1", - "polka": "next", - "sirv": "^1.0.0" - }, - "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@rollup/plugin-babel": "^5.0.0", - "@rollup/plugin-commonjs": "^14.0.0", - "@rollup/plugin-node-resolve": "^8.0.0", - "@rollup/plugin-replace": "^2.2.0", - "@rollup/plugin-url": "^5.0.0", - "mdsvex": "^0.8.8", - "rollup": "^2.3.4", - "rollup-plugin-svelte": "^6.0.0", - "rollup-plugin-terser": "^7.0.0", - "sapper": "^0.28.0", - "svelte": "^3.17.3" - } -} diff --git a/docs/rollup.config.js b/docs/rollup.config.js deleted file mode 100644 index 83f4d4ee..00000000 --- a/docs/rollup.config.js +++ /dev/null @@ -1,109 +0,0 @@ -import path from "path"; -import resolve from "@rollup/plugin-node-resolve"; -import replace from "@rollup/plugin-replace"; -import commonjs from "@rollup/plugin-commonjs"; -import url from "@rollup/plugin-url"; -import svelte from "rollup-plugin-svelte"; -import babel from "@rollup/plugin-babel"; -import { terser } from "rollup-plugin-terser"; -import config from "sapper/config/rollup.js"; -import pkg from "./package.json"; -import { mdsvex } from "mdsvex"; - -const mode = process.env.NODE_ENV; -const dev = mode === "development"; -const legacy = !!process.env.SAPPER_LEGACY_BUILD; - -const onwarn = (warning, onwarn) => - (warning.code === "MISSING_EXPORT" && /'preload'/.test(warning.message)) || - (warning.code === "CIRCULAR_DEPENDENCY" && - /[/\\]@sapper[/\\]/.test(warning.message)) || - onwarn(warning); - -const extensions = [".svelte", ".svx"]; - -export default { - client: { - input: config.client.input(), - output: config.client.output(), - plugins: [ - replace({ - "process.browser": true, - "process.env.NODE_ENV": JSON.stringify(mode), - }), - svelte({ - extensions, - preprocess: mdsvex(), - dev, - hydratable: true, - emitCss: true, - }), - url({ - sourceDir: path.resolve(__dirname, "src/node_modules/images"), - publicPath: "/client/", - }), - resolve({ - browser: true, - dedupe: ["svelte"], - }), - commonjs(), - - legacy && babel({ - extensions: [".js", ".mjs", ".html", ".svelte"], - babelHelpers: "runtime", - exclude: ["node_modules/@babel/**"], - presets: [ - ["@babel/preset-env", { - targets: "> 0.25%, not dead", - }], - ], - plugins: [ - "@babel/plugin-syntax-dynamic-import", - ["@babel/plugin-transform-runtime", { - useESModules: true, - }], - ], - }), - - !dev && terser({ - module: true, - }), - ], - - preserveEntrySignatures: false, - onwarn, - }, - - server: { - input: config.server.input(), - output: config.server.output(), - plugins: [ - replace({ - "process.browser": false, - "process.env.NODE_ENV": JSON.stringify(mode), - }), - svelte({ - extensions, - preprocess: mdsvex(), - generate: "ssr", - hydratable: true, - dev, - }), - url({ - sourceDir: path.resolve(__dirname, "src/node_modules/images"), - publicPath: "/client/", - emitFiles: false, // already emitted by client build - }), - resolve({ - dedupe: ["svelte"], - }), - commonjs(), - ], - external: Object.keys(pkg.dependencies).concat( - require("module").builtinModules, - ), - - preserveEntrySignatures: "strict", - onwarn, - }, -}; diff --git a/docs/scripts/setupTypeScript.js b/docs/scripts/setupTypeScript.js deleted file mode 100644 index 6d6b830b..00000000 --- a/docs/scripts/setupTypeScript.js +++ /dev/null @@ -1,356 +0,0 @@ -/** - * Run this script to convert the project to TypeScript. This is only guaranteed to work - * on the unmodified default template; if you have done code changes you are likely need - * to touch up the generated project manually. - */ - -// @ts-check -const fs = require("fs"); -const path = require("path"); -const { argv } = require("process"); - -const projectRoot = argv[2] || path.join(__dirname, ".."); - -const isRollup = fs.existsSync(path.join(projectRoot, "rollup.config.js")); - -function warn(message) { - console.warn("Warning: " + message); -} - -function replaceInFile(fileName, replacements) { - if (fs.existsSync(fileName)) { - let contents = fs.readFileSync(fileName, "utf8"); - let hadUpdates = false; - - replacements.forEach(([from, to]) => { - const newContents = contents.replace(from, to); - - const isAlreadyApplied = typeof to !== "string" || contents.includes(to); - - if (newContents !== contents) { - contents = newContents; - hadUpdates = true; - } else if (!isAlreadyApplied) { - warn(`Wanted to update "${from}" in ${fileName}, but did not find it.`); - } - }); - - if (hadUpdates) { - fs.writeFileSync(fileName, contents); - } else { - console.log(`${fileName} had already been updated.`); - } - } else { - warn(`Wanted to update ${fileName} but the file did not exist.`); - } -} - -function createFile(fileName, contents) { - if (fs.existsSync(fileName)) { - warn( - `Wanted to create ${fileName}, but it already existed. Leaving existing file.`, - ); - } else { - fs.writeFileSync(fileName, contents); - } -} - -function addDepsToPackageJson() { - const pkgJSONPath = path.join(projectRoot, "package.json"); - const packageJSON = JSON.parse(fs.readFileSync(pkgJSONPath, "utf8")); - packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { - ...(isRollup - ? { "@rollup/plugin-typescript": "^6.0.0" } - : { "ts-loader": "^8.0.4" }), - "@tsconfig/svelte": "^1.0.10", - "@types/compression": "^1.7.0", - "@types/node": "^14.11.1", - "@types/polka": "^0.5.1", - "svelte-check": "^1.0.46", - "svelte-preprocess": "^4.3.0", - tslib: "^2.0.1", - typescript: "^4.0.3", - }); - - // Add script for checking - packageJSON.scripts = Object.assign(packageJSON.scripts, { - validate: "svelte-check --ignore src/node_modules/@sapper", - }); - - // Write the package JSON - fs.writeFileSync(pkgJSONPath, JSON.stringify(packageJSON, null, " ")); -} - -function changeJsExtensionToTs(dir) { - const elements = fs.readdirSync(dir, { withFileTypes: true }); - - for (let i = 0; i < elements.length; i++) { - if (elements[i].isDirectory()) { - changeJsExtensionToTs(path.join(dir, elements[i].name)); - } else if (elements[i].name.match(/^[^_]((?!json).)*js$/)) { - fs.renameSync( - path.join(dir, elements[i].name), - path.join(dir, elements[i].name).replace(".js", ".ts"), - ); - } - } -} - -function updateSingleSvelteFile({ view, vars, contextModule }) { - replaceInFile(path.join(projectRoot, "src", `${view}.svelte`), [ - [ - /(?:/gm, - (m, attrs) => - ``, - ], - ...(vars - ? vars.map(( - { name, type }, - ) => [`export let ${name};`, `export let ${name}: ${type};`]) - : []), - ...(contextModule ? contextModule.map(({ js, ts }) => [js, ts]) : []), - ]); -} - -// Switch the *.svelte file to use TS -function updateSvelteFiles() { - [ - { - view: "components/Nav", - vars: [{ name: "segment", type: "string" }], - }, - { - view: "routes/_layout", - vars: [{ name: "segment", type: "string" }], - }, - { - view: "routes/_error", - vars: [ - { name: "status", type: "number" }, - { name: "error", type: "Error" }, - ], - }, - { - view: "routes/blog/index", - vars: [{ - name: "posts", - type: "{ slug: string; title: string, html: any }[]", - }], - contextModule: [ - { - js: ".then(r => r.json())", - ts: ".then((r: { json: () => any; }) => r.json())", - }, - { - js: ".then(posts => {", - ts: - ".then((posts: { slug: string; title: string, html: any }[]) => {", - }, - ], - }, - { - view: "routes/blog/[slug]", - vars: [{ - name: "post", - type: "{ slug: string; title: string, html: any }", - }], - }, - ].forEach(updateSingleSvelteFile); -} - -function updateRollupConfig() { - // Edit rollup config - replaceInFile(path.join(projectRoot, "rollup.config.js"), [ - // Edit imports - [ - /'rollup-plugin-terser';\n(?!import sveltePreprocess)/, - `'rollup-plugin-terser'; -import sveltePreprocess from 'svelte-preprocess'; -import typescript from '@rollup/plugin-typescript'; -`, - ], - // Edit inputs - [ - /(?`, - `self.addEventListener('activate', (event: ExtendableEvent) =>`, - ], - [ - `self.addEventListener('install', event =>`, - `self.addEventListener('install', (event: ExtendableEvent) =>`, - ], - [ - `addEventListener('fetch', event =>`, - `addEventListener('fetch', (event: FetchEvent) =>`, - ], - ]); -} - -function createTsConfig() { - const tsconfig = `{ - "extends": "@tsconfig/svelte/tsconfig.json", - "compilerOptions": { - "lib": ["DOM", "ES2017", "WebWorker"] - }, - "include": ["src/**/*", "src/node_modules/**/*"], - "exclude": ["node_modules/*", "__sapper__/*", "static/*"] - }`; - - createFile(path.join(projectRoot, "tsconfig.json"), tsconfig); -} - -// Adds the extension recommendation -function configureVsCode() { - const dir = path.join(projectRoot, ".vscode"); - - if (!fs.existsSync(dir)) { - fs.mkdirSync(dir); - } - - createFile( - path.join(projectRoot, ".vscode", "extensions.json"), - `{"recommendations": ["svelte.svelte-vscode"]}`, - ); -} - -function deleteThisScript() { - fs.unlinkSync(path.join(__filename)); - - // Check for Mac's DS_store file, and if it's the only one left remove it - const remainingFiles = fs.readdirSync(path.join(__dirname)); - if (remainingFiles.length === 1 && remainingFiles[0] === ".DS_store") { - fs.unlinkSync(path.join(__dirname, ".DS_store")); - } - - // Check if the scripts folder is empty - if (fs.readdirSync(path.join(__dirname)).length === 0) { - // Remove the scripts folder - fs.rmdirSync(path.join(__dirname)); - } -} - -console.log(`Adding TypeScript with ${isRollup ? "Rollup" : "webpack"}...`); - -addDepsToPackageJson(); - -changeJsExtensionToTs(path.join(projectRoot, "src")); - -updateSvelteFiles(); - -if (isRollup) { - updateRollupConfig(); -} else { - updateWebpackConfig(); -} - -updateServiceWorker(); - -createTsConfig(); - -configureVsCode(); - -// Delete this script, but not during testing -if (!argv[2]) { - deleteThisScript(); -} - -console.log("Converted to TypeScript."); - -if (fs.existsSync(path.join(projectRoot, "node_modules"))) { - console.log(` -Next: -1. run 'npm install' again to install TypeScript dependencies -2. run 'npm run build' for the @sapper imports in your project to work -`); -} diff --git a/docs/src/ambient.d.ts b/docs/src/ambient.d.ts deleted file mode 100644 index d0023589..00000000 --- a/docs/src/ambient.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * These declarations tell TypeScript that we allow import of images, e.g. - * ``` - - - - ``` - */ -declare module "*.gif" { - const value: string; - export = value; -} - -declare module "*.jpg" { - const value: string; - export = value; -} - -declare module "*.jpeg" { - const value: string; - export = value; -} - -declare module "*.png" { - const value: string; - export = value; -} - -declare module "*.svg" { - const value: string; - export = value; -} - -declare module "*.webp" { - const value: string; - export = value; -} diff --git a/docs/src/client.js b/docs/src/client.js deleted file mode 100644 index daa9ccbd..00000000 --- a/docs/src/client.js +++ /dev/null @@ -1,5 +0,0 @@ -import * as sapper from "@sapper/app"; - -sapper.start({ - target: document.querySelector("#sapper"), -}); diff --git a/docs/src/components/Nav.svelte b/docs/src/components/Nav.svelte deleted file mode 100644 index 31839d0b..00000000 --- a/docs/src/components/Nav.svelte +++ /dev/null @@ -1,61 +0,0 @@ - - - - - diff --git a/docs/src/routes/_error.svelte b/docs/src/routes/_error.svelte deleted file mode 100644 index 320e5870..00000000 --- a/docs/src/routes/_error.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - {status} - - -

{status}

- -

{error.message}

- -{#if dev && error.stack} -
{error.stack}
-{/if} diff --git a/docs/src/routes/_layout.svelte b/docs/src/routes/_layout.svelte deleted file mode 100644 index 8432299e..00000000 --- a/docs/src/routes/_layout.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - - -