From 442ee4f26ccd18c72d4d8569b8620e521dec6799 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Mon, 7 Dec 2020 13:34:12 -0500 Subject: [PATCH] format/lint --- packages/adapter-netlify/files/render.js | 2 +- packages/adapter-vercel/src/index.js | 6 +- packages/adapter-vercel/src/server.js | 3 +- packages/app-utils/package.json | 2 +- packages/app-utils/rollup.config.js | 4 +- packages/app-utils/src/files/index.js | 6 +- packages/app-utils/src/http/get_body/index.js | 5 +- .../src/http/get_body/read_only_form_data.js | 4 +- .../create-svelte/cli/modifications/utils.js | 6 +- .../create-svelte/template/snowpack.config.js | 2 +- packages/kit/.eslintrc.json | 2 +- packages/kit/src/api/adapt/Builder.js | 12 +- packages/kit/src/api/adapt/prerender.js | 34 ++-- .../basic/.svelte/build/optimized/client.json | 2 +- .../test/fixtures/basic/static/answer.md | 2 +- packages/kit/src/api/adapt/test/index.js | 15 +- packages/kit/src/api/build/css_injection.js | 21 +-- packages/kit/src/api/build/index.js | 66 ++++--- packages/kit/src/api/dev/index.js | 17 +- packages/kit/src/api/dev/transform.spec.js | 19 +- packages/kit/src/core/create_app.js | 23 +-- packages/kit/src/core/create_manifest_data.js | 12 +- .../core/test/create_manifest_data.spec.js | 165 +++++++++--------- packages/kit/src/renderer/endpoint.js | 10 +- packages/kit/src/renderer/index.js | 8 +- packages/kit/src/renderer/page.js | 59 +++---- .../src/runtime/internal/renderer/index.js | 55 +++--- .../kit/src/runtime/internal/router/index.js | 15 +- packages/kit/src/runtime/internal/start.js | 9 +- 29 files changed, 258 insertions(+), 328 deletions(-) diff --git a/packages/adapter-netlify/files/render.js b/packages/adapter-netlify/files/render.js index 25f9fc1f4f08..33dca214cae6 100644 --- a/packages/adapter-netlify/files/render.js +++ b/packages/adapter-netlify/files/render.js @@ -42,4 +42,4 @@ exports.handler = async (event) => { statusCode: 404, body: 'Not found' }; -}; \ No newline at end of file +}; diff --git a/packages/adapter-vercel/src/index.js b/packages/adapter-vercel/src/index.js index 0af7338c0c19..06b7955c5be3 100644 --- a/packages/adapter-vercel/src/index.js +++ b/packages/adapter-vercel/src/index.js @@ -3,11 +3,7 @@ import { resolve, join } from 'path'; import { copy } from '@sveltejs/app-utils/files'; import { prerender, generate_manifest_module } from '@sveltejs/app-utils/renderer'; -export async function builder({ - dir, - manifest, - log -}) { +export async function builder({ dir, manifest, log }) { const lambda_directory = resolve('api'); const static_directory = resolve('public'); const server_directory = resolve(join('api', 'server')); diff --git a/packages/adapter-vercel/src/server.js b/packages/adapter-vercel/src/server.js index c6c0e2a1650d..9507195423d9 100644 --- a/packages/adapter-vercel/src/server.js +++ b/packages/adapter-vercel/src/server.js @@ -43,8 +43,7 @@ export const handler = async (event) => { client, root, setup, - load: (route) => - require(`./server/routes/${route.name}.js`), + load: (route) => require(`./server/routes/${route.name}.js`), dev: false, only_prerender: false } diff --git a/packages/app-utils/package.json b/packages/app-utils/package.json index ace7185817df..70cc72075420 100644 --- a/packages/app-utils/package.json +++ b/packages/app-utils/package.json @@ -5,7 +5,7 @@ "clean": "node rimraf.js files http renderer", "dev": "npm run clean && rollup -cw", "build": "npm run clean && rollup -c", - "lint": "eslint --ignore-pattern node_modules/ --ignore-pattern files/ --ignore-pattern http/ --ignore-pattern renderer/ \"**/*.{ts,js,svelte}\" && npm run check-format", + "lint": "eslint --ignore-pattern node_modules/ --ignore-pattern dist/ --ignore-pattern files/ --ignore-pattern http/ --ignore-pattern renderer/ \"**/*.{ts,js,svelte}\" && npm run check-format", "format": "prettier --write . --config ../../.prettierrc --ignore-path .gitignore", "check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore", "prepublishOnly": "npm run build", diff --git a/packages/app-utils/rollup.config.js b/packages/app-utils/rollup.config.js index 00e6b31e1e5c..fc6c1be44b50 100644 --- a/packages/app-utils/rollup.config.js +++ b/packages/app-utils/rollup.config.js @@ -24,8 +24,6 @@ export default { sourcemap: true } ], - plugins: [ - nodeResolve() - ], + plugins: [nodeResolve()], external: [...require('module').builtinModules, ...Object.keys(pkg.dependencies)] }; diff --git a/packages/app-utils/src/files/index.js b/packages/app-utils/src/files/index.js index 45aff70bbbe6..ac9a96551560 100644 --- a/packages/app-utils/src/files/index.js +++ b/packages/app-utils/src/files/index.js @@ -10,11 +10,7 @@ export function mkdirp(dir) { } } -export function copy( - from, - to, - filter = () => true -) { +export function copy(from, to, filter = () => true) { if (!filter(path.basename(from))) return []; const files = []; diff --git a/packages/app-utils/src/http/get_body/index.js b/packages/app-utils/src/http/get_body/index.js index d72bd855072b..e5246ba77561 100644 --- a/packages/app-utils/src/http/get_body/index.js +++ b/packages/app-utils/src/http/get_body/index.js @@ -1,4 +1,3 @@ - import { read_only_form_data } from './read_only_form_data'; export function get_body(req) { @@ -10,7 +9,7 @@ export function get_body(req) { if (!has_body) return Promise.resolve(undefined); - const [type, ...directives] = (headers['content-type'] ).split(/;\s*/); + const [type, ...directives] = headers['content-type'].split(/;\s*/); switch (type) { case 'application/octet-stream': @@ -70,7 +69,7 @@ async function get_multipart(req, boundary) { const { data, append } = read_only_form_data(); parts.slice(1, -1).forEach((part) => { - const match = /\s*([\s\S]+?)\r\n\r\n([\s\S]*)\s*/.exec(part) ; + const match = /\s*([\s\S]+?)\r\n\r\n([\s\S]*)\s*/.exec(part); const raw_headers = match[1]; const body = match[2].trim(); diff --git a/packages/app-utils/src/http/get_body/read_only_form_data.js b/packages/app-utils/src/http/get_body/read_only_form_data.js index ccbaa7c589b7..e18b46808cc1 100644 --- a/packages/app-utils/src/http/get_body/read_only_form_data.js +++ b/packages/app-utils/src/http/get_body/read_only_form_data.js @@ -4,7 +4,7 @@ export function read_only_form_data() { return { append(key, value) { if (map.has(key)) { - (map.get(key) ).push(value); + map.get(key).push(value); } else { map.set(key, [value]); } @@ -15,7 +15,7 @@ export function read_only_form_data() { } class ReadOnlyFormData { - #map + #map; constructor(map) { this.#map = map; diff --git a/packages/create-svelte/cli/modifications/utils.js b/packages/create-svelte/cli/modifications/utils.js index d241eb5e6efe..a6cc517c5da3 100644 --- a/packages/create-svelte/cli/modifications/utils.js +++ b/packages/create-svelte/cli/modifications/utils.js @@ -20,11 +20,7 @@ export function update_package_json(cwd, newDevDeps) { /** * Updates a Svelte component, doing all given replacements. */ -export function update_component( - cwd, - filepath, - replacements -) { +export function update_component(cwd, filepath, replacements) { const file = path.join(cwd, filepath); let code = fs.readFileSync(file, 'utf-8'); diff --git a/packages/create-svelte/template/snowpack.config.js b/packages/create-svelte/template/snowpack.config.js index 7455cb829f7a..adb7e99ea205 100644 --- a/packages/create-svelte/template/snowpack.config.js +++ b/packages/create-svelte/template/snowpack.config.js @@ -5,6 +5,6 @@ module.exports = { 'src/components': '/_components' }, alias: { - '$components': './src/components' + $components: './src/components' } }; diff --git a/packages/kit/.eslintrc.json b/packages/kit/.eslintrc.json index 11dde8fbdc5e..82026adab74e 100644 --- a/packages/kit/.eslintrc.json +++ b/packages/kit/.eslintrc.json @@ -4,4 +4,4 @@ "parserOptions": { "sourceType": "module" } -} \ No newline at end of file +} diff --git a/packages/kit/src/api/adapt/Builder.js b/packages/kit/src/api/adapt/Builder.js index 7c96c85d3fbe..ed498390cea4 100644 --- a/packages/kit/src/api/adapt/Builder.js +++ b/packages/kit/src/api/adapt/Builder.js @@ -6,12 +6,7 @@ export default class Builder { #static_files; #manifest; - constructor({ - generated_files, - static_files, - log, - manifest - }) { + constructor({ generated_files, static_files, log, manifest }) { this.#generated_files = generated_files; this.#static_files = static_files; this.#manifest = manifest; @@ -31,10 +26,7 @@ export default class Builder { copy(this.#static_files, dest); } - async prerender({ - force = false, - dest - }) { + async prerender({ force = false, dest }) { await prerender({ out: dest, force, diff --git a/packages/kit/src/api/adapt/prerender.js b/packages/kit/src/api/adapt/prerender.js index 8138cfa009bf..5f2b4f81e5a2 100644 --- a/packages/kit/src/api/adapt/prerender.js +++ b/packages/kit/src/api/adapt/prerender.js @@ -42,13 +42,7 @@ function get_srcset_urls(attrs) { const OK = 2; const REDIRECT = 3; -export async function prerender({ - dir, - out, - manifest, - log, - force -}) { +export async function prerender({ dir, out, manifest, log, force }) { const seen = new Set(); const server_root = resolve_path(dir); @@ -58,16 +52,19 @@ export async function prerender({ if (seen.has(path)) return; seen.add(path); - const rendered = await app.render({ - host: null, // TODO ??? - method: 'GET', - headers: {}, - path, - body: null, - query: new URLSearchParams() - }, { - only_prerender: !force - }); + const rendered = await app.render( + { + host: null, // TODO ??? + method: 'GET', + headers: {}, + path, + body: null, + query: new URLSearchParams() + }, + { + only_prerender: !force + } + ); if (rendered) { const response_type = Math.floor(rendered.status / 100); @@ -162,7 +159,8 @@ export async function prerender({ if (parts[parts.length - 1] === 'index.html') parts.pop(); const file_exists = - (parsed.pathname.startsWith('/_app/') && fs.existsSync(`${dir}/client/${parsed.pathname}`)) || + (parsed.pathname.startsWith('/_app/') && + fs.existsSync(`${dir}/client/${parsed.pathname}`)) || fs.existsSync(`${out}${parsed.pathname}`) || fs.existsSync(`static${parsed.pathname}`) || fs.existsSync(`static${parsed.pathname}/index.html`); diff --git a/packages/kit/src/api/adapt/test/fixtures/basic/.svelte/build/optimized/client.json b/packages/kit/src/api/adapt/test/fixtures/basic/.svelte/build/optimized/client.json index 9e26dfeeb6e6..0967ef424bce 100644 --- a/packages/kit/src/api/adapt/test/fixtures/basic/.svelte/build/optimized/client.json +++ b/packages/kit/src/api/adapt/test/fixtures/basic/.svelte/build/optimized/client.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/packages/kit/src/api/adapt/test/fixtures/basic/static/answer.md b/packages/kit/src/api/adapt/test/fixtures/basic/static/answer.md index f70d7bba4ae1..d81cc0710eb6 100644 --- a/packages/kit/src/api/adapt/test/fixtures/basic/static/answer.md +++ b/packages/kit/src/api/adapt/test/fixtures/basic/static/answer.md @@ -1 +1 @@ -42 \ No newline at end of file +42 diff --git a/packages/kit/src/api/adapt/test/index.js b/packages/kit/src/api/adapt/test/index.js index cd038438174c..9a47d7e5d040 100644 --- a/packages/kit/src/api/adapt/test/index.js +++ b/packages/kit/src/api/adapt/test/index.js @@ -46,26 +46,17 @@ suite('copy files', () => { rimraf.sync(dest); builder.copy_static_files(dest); - assert.equal( - glob('**', { cwd: static_files }), - glob('**', { cwd: dest }) - ); + assert.equal(glob('**', { cwd: static_files }), glob('**', { cwd: dest })); rimraf.sync(dest); builder.copy_client_files(dest); - assert.equal( - glob('**', { cwd: `${generated_files}/client` }), - glob('**', { cwd: dest }) - ); + assert.equal(glob('**', { cwd: `${generated_files}/client` }), glob('**', { cwd: dest })); rimraf.sync(dest); builder.copy_server_files(dest); - assert.equal( - glob('**', { cwd: `${generated_files}/server` }), - glob('**', { cwd: dest }) - ); + assert.equal(glob('**', { cwd: `${generated_files}/server` }), glob('**', { cwd: dest })); }); suite.run(); diff --git a/packages/kit/src/api/build/css_injection.js b/packages/kit/src/api/build/css_injection.js index 510c0f8f599b..303e35d84a92 100644 --- a/packages/kit/src/api/build/css_injection.js +++ b/packages/kit/src/api/build/css_injection.js @@ -1,12 +1,3 @@ - - - - - - - - - const inject_styles = ` export default function(files) { return Promise.all(files.map(function(file) { return new Promise(function(fulfil, reject) { @@ -93,11 +84,7 @@ export const css_injection = { }; } }, - async generateBundle( - - _options, - bundle - ) { + async generateBundle(_options, bundle) { const inject_styles_file = Object.keys(bundle).find((f) => f.startsWith('inject_styles')); let has_css = false; @@ -109,11 +96,7 @@ export const css_injection = { if (chunk.code) { chunk.code = chunk.code.replace(/___SVELTE_CSS_INJECTION___([0-9a-f]+)___/g, (_m, id) => { id = Buffer.from(id, 'hex').toString(); - const target = ( - Object.values(bundle).find( - (c) => (c).modules && (c).modules[id] - ) - ); + const target = Object.values(bundle).find((c) => c.modules && c.modules[id]); if (target) { const css_files = find_css(target, bundle); diff --git a/packages/kit/src/api/build/index.js b/packages/kit/src/api/build/index.js index ec7ad1290d37..c3e0ba54fb5c 100644 --- a/packages/kit/src/api/build/index.js +++ b/packages/kit/src/api/build/index.js @@ -59,25 +59,35 @@ export async function build(config) { process.stdout.write('\x1b[s'); const tick = bold(green('✔')); - const render = () => process.stdout.write('\x1b[u' + ` + const render = () => + process.stdout.write( + '\x1b[u' + + ` ${bold(cyan('Transforming...'))} ${progress.transformed_client ? `${tick} client` : gray('⧗ client')} ${progress.transformed_server ? `${tick} server` : gray('⧗ server')} ${bold(cyan('Optimizing...'))} ${progress.optimized_client ? `${tick} client ` : gray('⧗ client')} ${progress.optimized_server ? `${tick} server ` : gray('⧗ server')} - `.replace(/^\t/gm, '').trimStart()); + ` + .replace(/^\t/gm, '') + .trimStart() + ); render(); const mount = `--mount.${config.paths.routes}=/_app/routes --mount.${config.paths.setup}=/_app/setup`; const promises = { - transform_client: exec(`node ${snowpack_bin} build ${mount} --out=${UNOPTIMIZED}/client`).then(() => { - progress.transformed_client = true; - render(); - }), - transform_server: exec(`node ${snowpack_bin} build ${mount} --out=${UNOPTIMIZED}/server --ssr`).then(() => { + transform_client: exec(`node ${snowpack_bin} build ${mount} --out=${UNOPTIMIZED}/client`).then( + () => { + progress.transformed_client = true; + render(); + } + ), + transform_server: exec( + `node ${snowpack_bin} build ${mount} --out=${UNOPTIMIZED}/server --ssr` + ).then(() => { progress.transformed_server = true; render(); }) @@ -227,7 +237,7 @@ export async function build(config) { layout: ${stringify_component(manifest.layout)}, error: ${stringify_component(manifest.error)}, components: [ - ${manifest.components.map(c => stringify_component(c)).join(',\n\t\t\t\t')} + ${manifest.components.map((c) => stringify_component(c)).join(',\n\t\t\t\t')} ], pages: [ ${manifest.pages @@ -239,17 +249,23 @@ export async function build(config) { endpoints: [ ${manifest.endpoints .map(({ name, pattern, file, params }) => { - return `{ name: ${s(name)}, pattern: ${pattern}, file: ${s(file)}, params: ${s(params)} }`; + return `{ name: ${s(name)}, pattern: ${pattern}, file: ${s(file)}, params: ${s( + params + )} }`; }) .join(',\n\t\t\t\t')} ] } - `.replace(/^\t{2}/gm, '').trim(); + ` + .replace(/^\t{2}/gm, '') + .trim(); fs.writeFileSync('.svelte/build/manifest.js', `export default ${stringified_manifest};`); fs.writeFileSync('.svelte/build/manifest.cjs', `module.exports = ${stringified_manifest};`); - fs.writeFileSync(`${UNOPTIMIZED}/server/app.js`, ` + fs.writeFileSync( + `${UNOPTIMIZED}/server/app.js`, + ` import * as renderer from '@sveltejs/kit/dist/renderer'; import root from './_app/assets/generated/root.js'; import * as setup from './_app/setup/index.js'; @@ -270,7 +286,9 @@ export async function build(config) { static_dir: paths.static, template, manifest, - target: ${s(config.target)},${config.startGlobal ? `\n\t\t\t\t\tstart_global: ${s(config.startGlobal)},` : ''} + target: ${s(config.target)},${ + config.startGlobal ? `\n\t\t\t\t\tstart_global: ${s(config.startGlobal)},` : '' + } client, root, setup, @@ -279,23 +297,23 @@ export async function build(config) { only_prerender }); } - `.replace(/^\t{3}/gm, '').trim()); + ` + .replace(/^\t{3}/gm, '') + .trim() + ); const server_input = { app: `${UNOPTIMIZED}/server/app.js` }; - [ - manifest.layout, - manifest.error, - ...manifest.components, - ...manifest.endpoints - ].forEach((item) => { - server_input[`routes/${item.name}`] = `${UNOPTIMIZED}/server${item.url.replace( - /\.\w+$/, - '.js' - )}`; - }); + [manifest.layout, manifest.error, ...manifest.components, ...manifest.endpoints].forEach( + (item) => { + server_input[`routes/${item.name}`] = `${UNOPTIMIZED}/server${item.url.replace( + /\.\w+$/, + '.js' + )}`; + } + ); const server_chunks = await rollup({ input: server_input, diff --git a/packages/kit/src/api/dev/index.js b/packages/kit/src/api/dev/index.js index 1fb49bce16e3..bf2b11fa7228 100644 --- a/packages/kit/src/api/dev/index.js +++ b/packages/kit/src/api/dev/index.js @@ -77,8 +77,16 @@ class Watcher extends EventEmitter { pkg ); - this.snowpack_config.mount[resolve(this.config.paths.routes)] = { url: '/_app/routes', static: false, resolve: true }; - this.snowpack_config.mount[resolve(this.config.paths.setup)] = { url: '/_app/setup', static: false, resolve: true }; + this.snowpack_config.mount[resolve(this.config.paths.routes)] = { + url: '/_app/routes', + static: false, + resolve: true + }; + this.snowpack_config.mount[resolve(this.config.paths.setup)] = { + url: '/_app/setup', + static: false, + resolve: true + }; this.snowpack = await snowpack.startDevServer({ cwd: process.cwd(), @@ -156,9 +164,8 @@ class Watcher extends EventEmitter { }, { static_dir: this.config.paths.static, - template: ({ head, body }) => template - .replace('%svelte.head%', () => head) - .replace('%svelte.body%', () => body), + template: ({ head, body }) => + template.replace('%svelte.head%', () => head).replace('%svelte.body%', () => body), manifest: this.manifest, target: this.config.target, client: { diff --git a/packages/kit/src/api/dev/transform.spec.js b/packages/kit/src/api/dev/transform.spec.js index c45daa486326..1ba57d1934b1 100644 --- a/packages/kit/src/api/dev/transform.spec.js +++ b/packages/kit/src/api/dev/transform.spec.js @@ -3,10 +3,7 @@ import * as assert from 'uvu/assert'; import { transform } from './transform'; function compare(a, b) { - assert.equal( - a.replace(/^\t+/gm, '').trim(), - b.replace(/^\t+/gm, '').trim() - ); + assert.equal(a.replace(/^\t+/gm, '').trim(), b.replace(/^\t+/gm, '').trim()); } test('extracts imports', () => { @@ -19,9 +16,12 @@ test('extracts imports', () => { console.log(foo, bar, baz); `); - compare(code, ` + compare( + code, + ` console.log(foo, bar, baz); - `); + ` + ); assert.equal(deps, [ { name: 'foo', prop: 'default', source: './foo.js' }, @@ -42,7 +42,9 @@ test('transforms exported functions safely', () => { } `); - compare(code, ` + compare( + code, + ` function foo() { console.log('foo'); } exports.foo = foo; @@ -50,7 +52,8 @@ test('transforms exported functions safely', () => { function bar() { foo(); } exports.bar = bar; - `); + ` + ); assert.equal(deps, []); }); diff --git a/packages/kit/src/core/create_app.js b/packages/kit/src/core/create_app.js index be2f748e06e3..6a08bb2b73b8 100644 --- a/packages/kit/src/core/create_app.js +++ b/packages/kit/src/core/create_app.js @@ -2,10 +2,7 @@ import * as fs from 'fs'; import { mkdirp } from '@sveltejs/app-utils/files'; import { stringify, walk, write_if_changed } from '../utils'; -export function create_app({ - manifest_data, - output -}) { +export function create_app({ manifest_data, output }) { if (!fs.existsSync(output)) mkdirp(output); const client_manifest = generate_client_manifest(manifest_data); @@ -48,11 +45,11 @@ export function create_serviceworker_manifest({ } function generate_client_manifest(manifest_data) { - const page_ids = new Set(manifest_data.pages.map(page => - page.pattern.toString())); + const page_ids = new Set(manifest_data.pages.map((page) => page.pattern.toString())); - const endpoints_to_ignore = manifest_data.endpoints.filter(route => - !page_ids.has(route.pattern.toString())); + const endpoints_to_ignore = manifest_data.endpoints.filter( + (route) => !page_ids.has(route.pattern.toString()) + ); const component_indexes = {}; @@ -87,7 +84,9 @@ function generate_client_manifest(manifest_data) { ? `${param.slice(3)}: d(m[${i + 1}]).split('/')` : `${param}: d(m[${i + 1}])`; }); - return `[components[${component_indexes[part.component.name]}], m => ({ ${props.join(', ')} })]`; + return `[components[${ + component_indexes[part.component.name] + }], m => ({ ${props.join(', ')} })]`; } return `[components[${component_indexes[part.component.name]}]]`; @@ -95,7 +94,9 @@ function generate_client_manifest(manifest_data) { .filter(Boolean) .join(',\n\t\t\t\t')} ] - }`).join(',\n\n\t\t')} + }` + ) + .join(',\n\n\t\t')} ]`.replace(/^\t/gm, ''); if (needs_decode) { @@ -110,7 +111,7 @@ function generate_client_manifest(manifest_data) { export const pages = ${pages}; export const ignore = [ - ${endpoints_to_ignore.map(route => route.pattern).join(',\n\t\t\t')} + ${endpoints_to_ignore.map((route) => route.pattern).join(',\n\t\t\t')} ]; export { layout }; diff --git a/packages/kit/src/core/create_manifest_data.js b/packages/kit/src/core/create_manifest_data.js index 7ba2329ab781..4a9fe1d35f2f 100644 --- a/packages/kit/src/core/create_manifest_data.js +++ b/packages/kit/src/core/create_manifest_data.js @@ -2,10 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import { posixify, reserved_words } from '../utils'; -export default function create_manifest_data( - cwd, - extensions = '.svelte .html' -) { +export default function create_manifest_data(cwd, extensions = '.svelte .html') { const component_extensions = extensions.split(' '); function find_layout(file_name, component_name, dir = '') { @@ -38,12 +35,7 @@ export default function create_manifest_data( url: '/_app/assets/components/error.svelte' }; - function walk( - dir, - parent_segments, - parent_params, - stack - ) { + function walk(dir, parent_segments, parent_params, stack) { const items = fs .readdirSync(dir) .map((basename) => { diff --git a/packages/kit/src/core/test/create_manifest_data.spec.js b/packages/kit/src/core/test/create_manifest_data.spec.js index 36b3526551e6..131b7c5dc9dc 100644 --- a/packages/kit/src/core/test/create_manifest_data.spec.js +++ b/packages/kit/src/core/test/create_manifest_data.spec.js @@ -4,58 +4,51 @@ import * as assert from 'uvu/assert'; import create_manifest_data from '../create_manifest_data'; test('creates routes', () => { - const { components, pages, endpoints } = create_manifest_data(path.join(__dirname, 'samples/basic')); + const { components, pages, endpoints } = create_manifest_data( + path.join(__dirname, 'samples/basic') + ); const index = { name: 'index', file: 'index.svelte', url: '/_app/routes/index.svelte' }; const about = { name: 'about', file: 'about.svelte', url: '/_app/routes/about.svelte' }; const blog = { name: 'blog', file: 'blog/index.svelte', url: '/_app/routes/blog/index.svelte' }; - const blog_$slug = { name: 'blog_$slug', file: 'blog/[slug].svelte', url: '/_app/routes/blog/[slug].svelte' }; + const blog_$slug = { + name: 'blog_$slug', + file: 'blog/[slug].svelte', + url: '/_app/routes/blog/[slug].svelte' + }; - assert.equal(components, [ - index, - about, - blog, - blog_$slug - ]); + assert.equal(components, [index, about, blog, blog_$slug]); assert.equal(pages, [ { path: '/', pattern: /^\/$/, - parts: [ - { component: index, params: [] } - ] + parts: [{ component: index, params: [] }] }, { path: '/about', pattern: /^\/about\/?$/, - parts: [ - { component: about, params: [] } - ] + parts: [{ component: about, params: [] }] }, { path: '/blog', pattern: /^\/blog\/?$/, - parts: [ - { component: blog, params: [] } - ] + parts: [{ component: blog, params: [] }] }, { path: null, pattern: /^\/blog\/([^/]+?)\/?$/, - parts: [ - { component: blog_$slug, params: ['slug'] } - ] + parts: [{ component: blog_$slug, params: ['slug'] }] } ]); assert.equal(endpoints, [ { name: 'route_index', - pattern: /^\/$/, + pattern: /^\/$/, file: 'index.js', url: '/_app/routes/index.js', params: [] @@ -94,59 +87,65 @@ test('encodes invalid characters', () => { // question_mark ]); - assert.equal(pages.map(p => p.pattern), [ - // /^\/%22\/?$/, - /^\/%23\/?$/ - // /^\/%3F\/?$/ - ]); + assert.equal( + pages.map((p) => p.pattern), + [ + // /^\/%22\/?$/, + /^\/%23\/?$/ + // /^\/%3F\/?$/ + ] + ); }); test('allows regex qualifiers', () => { const { pages } = create_manifest_data(path.join(__dirname, 'samples/qualifiers')); - assert.equal(pages.map(p => p.pattern), [ - /^\/([0-9-a-z]{3,})\/?$/, - /^\/([a-z]{2})\/?$/, - /^\/([^/]+?)\/?$/ - ]); + assert.equal( + pages.map((p) => p.pattern), + [/^\/([0-9-a-z]{3,})\/?$/, /^\/([a-z]{2})\/?$/, /^\/([^/]+?)\/?$/] + ); }); test('sorts routes correctly', () => { const { pages } = create_manifest_data(path.join(__dirname, 'samples/sorting')); - assert.equal(pages.map(p => p.parts.map(part => part && part.component.file)), [ - ['index.svelte'], - ['about.svelte'], - ['post/index.svelte'], - ['post/bar.svelte'], - ['post/foo.svelte'], - ['post/f[xx].svelte'], - ['post/[id([0-9-a-z]{3,})].svelte'], - ['post/[id].svelte'], - ['[wildcard].svelte'], - ['[...spread]/deep/[...deep_spread]/xyz.svelte'], - ['[...spread]/deep/[...deep_spread]/index.svelte'], - ['[...spread]/deep/index.svelte'], - ['[...spread]/abc.svelte'], - ['[...spread]/index.svelte'] - ]); + assert.equal( + pages.map((p) => p.parts.map((part) => part && part.component.file)), + [ + ['index.svelte'], + ['about.svelte'], + ['post/index.svelte'], + ['post/bar.svelte'], + ['post/foo.svelte'], + ['post/f[xx].svelte'], + ['post/[id([0-9-a-z]{3,})].svelte'], + ['post/[id].svelte'], + ['[wildcard].svelte'], + ['[...spread]/deep/[...deep_spread]/xyz.svelte'], + ['[...spread]/deep/[...deep_spread]/index.svelte'], + ['[...spread]/deep/index.svelte'], + ['[...spread]/abc.svelte'], + ['[...spread]/index.svelte'] + ] + ); }); test('ignores files and directories with leading underscores', () => { const { endpoints } = create_manifest_data(path.join(__dirname, 'samples/hidden-underscore')); - assert.equal(endpoints.map(r => r.file), [ - 'index.js', - 'e/f/g/h.js' - ]); + assert.equal( + endpoints.map((r) => r.file), + ['index.js', 'e/f/g/h.js'] + ); }); test('ignores files and directories with leading dots except .well-known', () => { const { endpoints } = create_manifest_data(path.join(__dirname, 'samples/hidden-dot')); - assert.equal(endpoints.map(r => r.file), [ - '.well-known/dnt-policy.txt.js' - ]); + assert.equal( + endpoints.map((r) => r.file), + ['.well-known/dnt-policy.txt.js'] + ); }); test('allows multiple slugs', () => { @@ -164,7 +163,9 @@ test('allows multiple slugs', () => { }); test('allows multiple slugs with nested square brackets', () => { - const { endpoints } = create_manifest_data(path.join(__dirname, 'samples/nested-square-brackets')); + const { endpoints } = create_manifest_data( + path.join(__dirname, 'samples/nested-square-brackets') + ); assert.equal(endpoints, [ { @@ -199,64 +200,60 @@ test('errors when trying to use reserved characters in route regexp', () => { }, /Invalid route \[foo\(\[a-z\]\(\[0-9\]\)\)\].js — cannot use \(, \), \? or : in route qualifiers/); }); -test('ignores things that look like lockfiles' , () => { +test('ignores things that look like lockfiles', () => { const { endpoints } = create_manifest_data(path.join(__dirname, 'samples/lockfiles')); - assert.equal(endpoints, [{ - file: 'foo.js', - url: '/_app/routes/foo.js', - name: 'route_foo', - params: [], - pattern: /^\/foo\/?$/ - }]); + assert.equal(endpoints, [ + { + file: 'foo.js', + url: '/_app/routes/foo.js', + name: 'route_foo', + params: [], + pattern: /^\/foo\/?$/ + } + ]); }); -test('works with custom extensions' , () => { - const { components, pages, endpoints } = create_manifest_data(path.join(__dirname, 'samples/custom-extension'), '.jazz .beebop .funk .svelte'); +test('works with custom extensions', () => { + const { components, pages, endpoints } = create_manifest_data( + path.join(__dirname, 'samples/custom-extension'), + '.jazz .beebop .funk .svelte' + ); const index = { name: 'index', file: 'index.funk', url: '/_app/routes/index.funk' }; const about = { name: 'about', file: 'about.jazz', url: '/_app/routes/about.jazz' }; const blog = { name: 'blog', file: 'blog/index.svelte', url: '/_app/routes/blog/index.svelte' }; - const blog_$slug = { name: 'blog_$slug', file: 'blog/[slug].beebop', url: '/_app/routes/blog/[slug].beebop' }; + const blog_$slug = { + name: 'blog_$slug', + file: 'blog/[slug].beebop', + url: '/_app/routes/blog/[slug].beebop' + }; - assert.equal(components, [ - index, - about, - blog, - blog_$slug - ]); + assert.equal(components, [index, about, blog, blog_$slug]); assert.equal(pages, [ { path: '/', pattern: /^\/$/, - parts: [ - { component: index, params: [] } - ] + parts: [{ component: index, params: [] }] }, { path: '/about', pattern: /^\/about\/?$/, - parts: [ - { component: about, params: [] } - ] + parts: [{ component: about, params: [] }] }, { path: '/blog', pattern: /^\/blog\/?$/, - parts: [ - { component: blog, params: [] } - ] + parts: [{ component: blog, params: [] }] }, { path: null, pattern: /^\/blog\/([^/]+?)\/?$/, - parts: [ - { component: blog_$slug, params: ['slug'] } - ] + parts: [{ component: blog_$slug, params: ['slug'] }] } ]); diff --git a/packages/kit/src/renderer/endpoint.js b/packages/kit/src/renderer/endpoint.js index 512a1bf297a8..75149b09b824 100644 --- a/packages/kit/src/renderer/endpoint.js +++ b/packages/kit/src/renderer/endpoint.js @@ -1,11 +1,5 @@ -export default function render_route( - request, - context, - options -) { - const route = options.manifest.endpoints.find((route) => - route.pattern.test(request.path) - ); +export default function render_route(request, context, options) { + const route = options.manifest.endpoints.find((route) => route.pattern.test(request.path)); if (!route) return null; return Promise.resolve(options.load(route)).then(async (mod) => { diff --git a/packages/kit/src/renderer/index.js b/packages/kit/src/renderer/index.js index e4f4a6b4bc3b..a10c9af5b500 100644 --- a/packages/kit/src/renderer/index.js +++ b/packages/kit/src/renderer/index.js @@ -6,11 +6,9 @@ function md5(body) { return createHash('md5').update(body).digest('hex'); } -export async function render( - request, - options -) { - const { context, headers = {} } = (await (options.setup.prepare && options.setup.prepare(request.headers))) || {}; +export async function render(request, options) { + const { context, headers = {} } = + (await (options.setup.prepare && options.setup.prepare(request.headers))) || {}; try { const response = await (render_endpoint(request, context, options) || diff --git a/packages/kit/src/renderer/page.js b/packages/kit/src/renderer/page.js index fd707254ea63..30037cec471f 100644 --- a/packages/kit/src/renderer/page.js +++ b/packages/kit/src/renderer/page.js @@ -1,4 +1,4 @@ - import devalue from 'devalue'; +import devalue from 'devalue'; import { createReadStream, existsSync } from 'fs'; import * as mime from 'mime'; import fetch, { Response } from 'node-fetch'; @@ -6,14 +6,7 @@ import { writable } from 'svelte/store'; import { parse, resolve, URLSearchParams } from 'url'; import { render } from './index'; -async function get_response({ - request, - options, - session, - page, - status = 200, - error -}) { +async function get_response({ request, options, session, page, status = 200, error }) { let redirected; const base = ''; // TODO @@ -109,14 +102,12 @@ async function get_response({ const match = page && page.pattern.exec(request.path); // the last part has all parameters from any segment in the URL - const params = page ? parts_to_params(match, page.parts[page.parts.length - 1] ) : {}; + const params = page ? parts_to_params(match, page.parts[page.parts.length - 1]) : {}; const preloaded = []; let can_prerender = true; - const page_parts = error - ? [{ component: options.manifest.error, params: [] }] - : page.parts; + const page_parts = error ? [{ component: options.manifest.error, params: [] }] : page.parts; const parts = await Promise.all( [{ component: options.manifest.layout, params: [] }, ...page_parts].map(async (part, i) => { @@ -132,16 +123,18 @@ async function get_response({ // these are only the parameters up to the current URL segment const params = parts_to_params(match, part); - const props = mod.preload ? await mod.preload.call( - preload_context, - { - host: request.host, - path: request.path, - query: request.query, - params - }, - session - ) : {}; + const props = mod.preload + ? await mod.preload.call( + preload_context, + { + host: request.host, + path: request.path, + query: request.query, + params + }, + session + ) + : {}; preloaded[i] = props; return { component: mod.default, props }; @@ -167,7 +160,7 @@ async function get_response({ params, error }, - components: parts.map(part => part.component) + components: parts.map((part) => part.component) }; // leveln (instead of levels[n]) makes it easy to avoid @@ -197,7 +190,7 @@ async function get_response({ if (page) { // TODO handle error page deps - (page.parts.filter(Boolean) ).forEach((part) => { + page.parts.filter(Boolean).forEach((part) => { const page_deps = deps[part.component.name]; if (!page_deps) return; // we don't have this info during dev @@ -222,7 +215,11 @@ async function get_response({