From 9661b21ff858d65dd21afd9e1f82a76d0a62fba4 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 6 Mar 2022 11:43:17 -0500 Subject: [PATCH 01/15] use relative asset paths --- packages/kit/src/core/build/build_server.js | 2 +- packages/kit/src/core/dev/plugin.js | 2 +- .../kit/src/runtime/server/page/render.js | 19 +++++++++++-------- packages/kit/types/internal.d.ts | 2 +- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/kit/src/core/build/build_server.js b/packages/kit/src/core/build/build_server.js index 1d9e69020520..07de01704393 100644 --- a/packages/kit/src/core/build/build_server.js +++ b/packages/kit/src/core/build/build_server.js @@ -61,6 +61,7 @@ export class Server { this.options = { amp: ${config.kit.amp}, + app_dir: ${s(config.kit.appDir)}, csp: ${s(config.kit.csp)}, dev: false, floc: ${config.kit.floc}, @@ -83,7 +84,6 @@ export class Server { manifest, method_override: ${s(config.kit.methodOverride)}, paths: { base, assets }, - prefix: assets + '/${config.kit.appDir}/', prerender: ${config.kit.prerender.enabled}, read, root, diff --git a/packages/kit/src/core/dev/plugin.js b/packages/kit/src/core/dev/plugin.js index 1045292bc3d3..ea3fc4ab2737 100644 --- a/packages/kit/src/core/dev/plugin.js +++ b/packages/kit/src/core/dev/plugin.js @@ -261,6 +261,7 @@ export async function create_plugin(config, cwd) { const rendered = await respond(request, { amp: config.kit.amp, + app_dir: config.kit.appDir, csp: config.kit.csp, dev: true, floc: config.kit.floc, @@ -297,7 +298,6 @@ export async function create_plugin(config, cwd) { base: config.kit.paths.base, assets }, - prefix: '', prerender: config.kit.prerender.enabled, read: (file) => fs.readFileSync(path.join(config.kit.files.assets, file)), root, diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index e3ead7fe9e4b..be3cc67603c9 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -157,9 +157,16 @@ export async function render_response({ const target = hash(body); + const segments = url.pathname.slice(options.paths.base.length).split('/').slice(2); + const assets = + options.paths.assets || (segments.length > 0 ? segments.map(() => '..').join('/') : '.'); + + /** @param {string} path */ + const prefix = (path) => (path.startsWith('/') ? path : `${assets}/${options.app_dir}/${path}`); + // prettier-ignore const init_app = ` - import { start } from ${s(options.prefix + options.manifest._.entry.file)}; + import { start } from ${s(prefix(options.manifest._.entry.file))}; start({ target: document.querySelector('[data-hydrate="${target}"]').parentNode, paths: ${s(options.paths)}, @@ -174,7 +181,7 @@ export async function render_response({ error: ${serialize_error(error)}, nodes: [ ${(branch || []) - .map(({ node }) => `import(${s(options.prefix + node.entry)})`) + .map(({ node }) => `import(${s(prefix(node.entry))})`) .join(',\n\t\t\t\t\t\t')} ], params: ${devalue(params)} @@ -221,7 +228,7 @@ export async function render_response({ .map((dep) => { const attributes = [ 'rel="stylesheet"', - `href="${options.prefix + dep}"` + `href="${prefix(dep)}"` ]; if (csp.style_needs_nonce) { @@ -240,7 +247,7 @@ export async function render_response({ if (page_config.router || page_config.hydrate) { head += Array.from(modulepreloads) - .map((dep) => `\n\t`) + .map((dep) => `\n\t`) .join(''); const attributes = ['type="module"', `data-hydrate="${target}"`]; @@ -293,10 +300,6 @@ export async function render_response({ } } - const segments = url.pathname.slice(options.paths.base.length).split('/').slice(2); - const assets = - options.paths.assets || (segments.length > 0 ? segments.map(() => '..').join('/') : '.'); - const html = await resolve_opts.transformPage({ html: options.template({ head, body, assets, nonce: /** @type {string} */ (csp.nonce) }) }); diff --git a/packages/kit/types/internal.d.ts b/packages/kit/types/internal.d.ts index 85f5bc04c2f1..6d04a9f784c9 100644 --- a/packages/kit/types/internal.d.ts +++ b/packages/kit/types/internal.d.ts @@ -239,6 +239,7 @@ export type SSRNodeLoader = () => Promise; export interface SSROptions { amp: boolean; + app_dir: string; csp: ValidatedConfig['kit']['csp']; dev: boolean; floc: boolean; @@ -252,7 +253,6 @@ export interface SSROptions { base: string; assets: string; }; - prefix: string; prerender: boolean; read(file: string): Buffer; root: SSRComponent['default']; From 4ce3db27ce17a0c240a72130208c9821a0f08dd5 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 12 Jul 2022 13:20:36 -0400 Subject: [PATCH 02/15] complete merge --- packages/kit/src/core/dev/plugin.js | 393 ---------------------------- packages/kit/src/vite/dev/index.js | 2 +- 2 files changed, 1 insertion(+), 394 deletions(-) delete mode 100644 packages/kit/src/core/dev/plugin.js diff --git a/packages/kit/src/core/dev/plugin.js b/packages/kit/src/core/dev/plugin.js deleted file mode 100644 index ea3fc4ab2737..000000000000 --- a/packages/kit/src/core/dev/plugin.js +++ /dev/null @@ -1,393 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { URL } from 'url'; -import colors from 'kleur'; -import sirv from 'sirv'; -import { installFetch } from '../../install-fetch.js'; -import * as sync from '../sync/sync.js'; -import { getRequest, setResponse } from '../../node.js'; -import { SVELTE_KIT_ASSETS } from '../constants.js'; -import { get_mime_lookup, get_runtime_path, resolve_entry } from '../utils.js'; -import { coalesce_to_error } from '../../utils/error.js'; -import { load_template } from '../config/index.js'; -import { sequence } from '../../hooks.js'; -import { posixify } from '../../utils/filesystem.js'; - -/** - * @param {import('types').ValidatedConfig} config - * @param {string} cwd - * @returns {Promise} - */ -export async function create_plugin(config, cwd) { - const runtime = get_runtime_path(config); - - /** @type {import('types').Handle} */ - let amp; - - if (config.kit.amp) { - process.env.VITE_SVELTEKIT_AMP = 'true'; - amp = (await import('./amp_hook.js')).handle; - } - - process.env.VITE_SVELTEKIT_APP_VERSION_POLL_INTERVAL = '0'; - - /** @type {import('types').Respond} */ - const respond = (await import(`${runtime}/server/index.js`)).respond; - - return { - name: 'vite-plugin-svelte-kit', - - configureServer(vite) { - installFetch(); - - /** @type {import('types').SSRManifest} */ - let manifest; - - function update_manifest() { - const { manifest_data } = sync.update(config); - - manifest = { - appDir: config.kit.appDir, - assets: new Set(manifest_data.assets.map((asset) => asset.file)), - _: { - mime: get_mime_lookup(manifest_data), - entry: { - file: `/@fs${runtime}/client/start.js`, - css: [], - js: [] - }, - nodes: manifest_data.components.map((id) => { - return async () => { - const url = id.startsWith('..') ? `/@fs${path.posix.resolve(id)}` : `/${id}`; - - const module = /** @type {import('types').SSRComponent} */ ( - await vite.ssrLoadModule(url) - ); - const node = await vite.moduleGraph.getModuleByUrl(url); - - if (!node) throw new Error(`Could not find node for ${url}`); - - const deps = new Set(); - find_deps(node, deps); - - /** @type {Record} */ - const styles = {}; - - for (const dep of deps) { - const parsed = new URL(dep.url, 'http://localhost/'); - const query = parsed.searchParams; - - // TODO what about .scss files, etc? - if ( - dep.file.endsWith('.css') || - (query.has('svelte') && query.get('type') === 'style') - ) { - try { - const mod = await vite.ssrLoadModule(dep.url); - styles[dep.url] = mod.default; - } catch { - // this can happen with dynamically imported modules, I think - // because the Vite module graph doesn't distinguish between - // static and dynamic imports? TODO investigate, submit fix - } - } - } - - return { - module, - entry: url.endsWith('.svelte') ? url : url + '?import', - css: [], - js: [], - // in dev we inline all styles to avoid FOUC - styles - }; - }; - }), - routes: manifest_data.routes.map((route) => { - if (route.type === 'page') { - return { - type: 'page', - key: route.key, - pattern: route.pattern, - params: get_params(route.params), - shadow: route.shadow - ? async () => { - const url = path.resolve(cwd, /** @type {string} */ (route.shadow)); - return await vite.ssrLoadModule(url); - } - : null, - a: route.a.map((id) => manifest_data.components.indexOf(id)), - b: route.b.map((id) => manifest_data.components.indexOf(id)) - }; - } - - return { - type: 'endpoint', - pattern: route.pattern, - params: get_params(route.params), - load: async () => { - const url = path.resolve(cwd, route.file); - return await vite.ssrLoadModule(url); - } - }; - }) - } - }; - } - - /** @param {Error} error */ - function fix_stack_trace(error) { - // TODO https://github.com/vitejs/vite/issues/7045 - - // ideally vite would expose ssrRewriteStacktrace, but - // in lieu of that, we can implement it ourselves. we - // don't want to mutate the error object, because - // the stack trace could be 'fixed' multiple times, - // and Vite will fix stack traces before we even - // see them if they occur during ssrLoadModule - const original = error.stack; - vite.ssrFixStacktrace(error); - const fixed = error.stack; - error.stack = original; - - return fixed; - } - - update_manifest(); - - vite.watcher.on('add', update_manifest); - vite.watcher.on('remove', update_manifest); - - const assets = config.kit.paths.assets ? SVELTE_KIT_ASSETS : config.kit.paths.base; - const asset_server = sirv(config.kit.files.assets, { - dev: true, - etag: true, - maxAge: 0, - extensions: [] - }); - - return () => { - remove_html_middlewares(vite.middlewares); - - vite.middlewares.use(async (req, res) => { - try { - if (!req.url || !req.method) throw new Error('Incomplete request'); - - const base = `${vite.config.server.https ? 'https' : 'http'}://${req.headers.host}`; - - const decoded = decodeURI(new URL(base + req.url).pathname); - - if (decoded.startsWith(assets)) { - const pathname = decoded.slice(assets.length); - const file = config.kit.files.assets + pathname; - - if (fs.existsSync(file) && !fs.statSync(file).isDirectory()) { - req.url = encodeURI(pathname); // don't need query/hash - asset_server(req, res); - return; - } - } - - if (req.url === '/favicon.ico') return not_found(res); - - if (!decoded.startsWith(config.kit.paths.base)) return not_found(res); - - /** @type {Partial} */ - const user_hooks = resolve_entry(config.kit.files.hooks) - ? await vite.ssrLoadModule(`/${config.kit.files.hooks}`) - : {}; - - const handle = user_hooks.handle || (({ event, resolve }) => resolve(event)); - - /** @type {import('types').Hooks} */ - const hooks = { - getSession: user_hooks.getSession || (() => ({})), - handle: amp ? sequence(amp, handle) : handle, - handleError: - user_hooks.handleError || - (({ /** @type {Error & { frame?: string }} */ error }) => { - console.error(colors.bold().red(error.message)); - if (error.frame) { - console.error(colors.gray(error.frame)); - } - if (error.stack) { - console.error(colors.gray(error.stack)); - } - }), - externalFetch: user_hooks.externalFetch || fetch - }; - - if (/** @type {any} */ (hooks).getContext) { - // TODO remove this for 1.0 - throw new Error( - 'The getContext hook has been removed. See https://kit.svelte.dev/docs/hooks' - ); - } - - if (/** @type {any} */ (hooks).serverFetch) { - // TODO remove this for 1.0 - throw new Error('The serverFetch hook has been renamed to externalFetch.'); - } - - // TODO the / prefix will probably fail if outDir is outside the cwd (which - // could be the case in a monorepo setup), but without it these modules - // can get loaded twice via different URLs, which causes failures. Might - // require changes to Vite to fix - const { default: root } = await vite.ssrLoadModule( - `/${posixify(path.relative(cwd, `${config.kit.outDir}/generated/root.svelte`))}` - ); - - const paths = await vite.ssrLoadModule( - process.env.BUNDLED - ? `/${posixify(path.relative(cwd, `${config.kit.outDir}/runtime/paths.js`))}` - : `/@fs${runtime}/paths.js` - ); - - paths.set_paths({ - base: config.kit.paths.base, - assets - }); - - let request; - - try { - request = await getRequest(base, req); - } catch (/** @type {any} */ err) { - res.statusCode = err.status || 400; - return res.end(err.reason || 'Invalid request body'); - } - - const template = load_template(cwd, config); - - const rendered = await respond(request, { - amp: config.kit.amp, - app_dir: config.kit.appDir, - csp: config.kit.csp, - dev: true, - floc: config.kit.floc, - get_stack: (error) => { - return fix_stack_trace(error); - }, - handle_error: (error, event) => { - hooks.handleError({ - error: new Proxy(error, { - get: (target, property) => { - if (property === 'stack') { - return fix_stack_trace(error); - } - - return Reflect.get(target, property, target); - } - }), - event, - - // TODO remove for 1.0 - // @ts-expect-error - get request() { - throw new Error( - 'request in handleError has been replaced with event. See https://github.com/sveltejs/kit/pull/3384 for details' - ); - } - }); - }, - hooks, - hydrate: config.kit.browser.hydrate, - manifest, - method_override: config.kit.methodOverride, - paths: { - base: config.kit.paths.base, - assets - }, - prerender: config.kit.prerender.enabled, - read: (file) => fs.readFileSync(path.join(config.kit.files.assets, file)), - root, - router: config.kit.browser.router, - template: ({ head, body, assets, nonce }) => { - return ( - template - .replace(/%svelte\.assets%/g, assets) - .replace(/%svelte\.nonce%/g, nonce) - // head and body must be replaced last, in case someone tries to sneak in %svelte.assets% etc - .replace('%svelte.head%', () => head) - .replace('%svelte.body%', () => body) - ); - }, - template_contains_nonce: template.includes('%svelte.nonce%'), - trailing_slash: config.kit.trailingSlash - }); - - if (rendered) { - setResponse(res, rendered); - } else { - not_found(res); - } - } catch (e) { - const error = coalesce_to_error(e); - vite.ssrFixStacktrace(error); - res.statusCode = 500; - res.end(error.stack); - } - }); - }; - } - }; -} - -/** @param {string[]} array */ -function get_params(array) { - // given an array of params like `['x', 'y', 'z']` for - // src/routes/[x]/[y]/[z]/svelte, create a function - // that turns a RegExpExecArray into ({ x, y, z }) - - /** @param {RegExpExecArray} match */ - const fn = (match) => { - /** @type {Record} */ - const params = {}; - array.forEach((key, i) => { - if (key.startsWith('...')) { - params[key.slice(3)] = match[i + 1] || ''; - } else { - params[key] = match[i + 1]; - } - }); - return params; - }; - - return fn; -} - -/** @param {import('http').ServerResponse} res */ -function not_found(res) { - res.statusCode = 404; - res.end('Not found'); -} - -/** - * @param {import('connect').Server} server - */ -function remove_html_middlewares(server) { - const html_middlewares = [ - 'viteIndexHtmlMiddleware', - 'vite404Middleware', - 'viteSpaFallbackMiddleware' - ]; - for (let i = server.stack.length - 1; i > 0; i--) { - // @ts-expect-error using internals until https://github.com/vitejs/vite/pull/4640 is merged - if (html_middlewares.includes(server.stack[i].handle.name)) { - server.stack.splice(i, 1); - } - } -} - -/** - * @param {import('vite').ModuleNode} node - * @param {Set} deps - */ -function find_deps(node, deps) { - for (const dep of node.importedModules) { - if (!deps.has(dep)) { - deps.add(dep); - find_deps(dep, deps); - } - } -} diff --git a/packages/kit/src/vite/dev/index.js b/packages/kit/src/vite/dev/index.js index 54a3e77d01e1..00d8ede629c6 100644 --- a/packages/kit/src/vite/dev/index.js +++ b/packages/kit/src/vite/dev/index.js @@ -306,6 +306,7 @@ export async function dev(vite, vite_config, svelte_config) { const rendered = await respond( request, { + app_dir: svelte_config.kit.appDir, csp: svelte_config.kit.csp, dev: true, get_stack: (error) => { @@ -341,7 +342,6 @@ export async function dev(vite, vite_config, svelte_config) { base: svelte_config.kit.paths.base, assets }, - prefix: '', prerender: { default: svelte_config.kit.prerender.default, enabled: svelte_config.kit.prerender.enabled From f9d2eef0efaa98ab6e629aaf3c5484000df72a90 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 12 Jul 2022 13:22:09 -0400 Subject: [PATCH 03/15] oops, think i messed up the merge --- packages/kit/src/runtime/server/page/render.js | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index 6ff5ee05391a..25865da969dc 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -244,22 +244,16 @@ export async function render_response({ .map((dep) => `\n\t`) .join(''); - if (page_config.router || page_config.hydrate) { - head += Array.from(modulepreloads) - .map((dep) => `\n\t`) - .join(''); + const attributes = ['type="module"', `data-sveltekit-hydrate="${target}"`]; - const attributes = ['type="module"', `data-sveltekit-hydrate="${target}"`]; + csp.add_script(init_app); - csp.add_script(init_app); - - if (csp.script_needs_nonce) { - attributes.push(`nonce="${csp.nonce}"`); - } - - body += `\n\t\t`; + if (csp.script_needs_nonce) { + attributes.push(`nonce="${csp.nonce}"`); } + body += `\n\t\t`; + body += serialized_data .map(({ url, body, response }) => render_json_payload_script( From 20d94f3e57e7685fed38c6f7f202bef0eff1a3e1 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 18:38:55 -0400 Subject: [PATCH 04/15] configure vite to use relative base --- packages/kit/src/runtime/server/page/render.js | 2 +- packages/kit/src/vite/build/utils.js | 12 ++++-------- packages/kit/src/vite/index.js | 8 ++++---- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index e1464f7cfc09..25affb3b50b4 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -177,7 +177,7 @@ export async function render_response({ options.paths.assets || (segments.length > 0 ? segments.map(() => '..').join('/') : '.'); /** @param {string} path */ - const prefix = (path) => (path.startsWith('/') ? path : `${assets}/${options.app_dir}/${path}`); + const prefix = (path) => (path.startsWith('/') ? path : `${assets}/${path}`); // prettier-ignore const init_app = ` diff --git a/packages/kit/src/vite/build/utils.js b/packages/kit/src/vite/build/utils.js index fee56e4130b1..cf1a5686d99c 100644 --- a/packages/kit/src/vite/build/utils.js +++ b/packages/kit/src/vite/build/utils.js @@ -96,9 +96,9 @@ export const get_default_config = function ({ config, input, ssr, outDir }) { input, output: { format: 'esm', - entryFileNames: ssr ? '[name].js' : 'immutable/[name]-[hash].js', - chunkFileNames: 'immutable/chunks/[name]-[hash].js', - assetFileNames: 'immutable/assets/[name]-[hash][extname]' + entryFileNames: ssr ? '[name].js' : `${config.kit.appDir}/immutable/[name]-[hash].js`, + chunkFileNames: `${config.kit.appDir}/immutable/chunks/[name]-[hash].js`, + assetFileNames: `${config.kit.appDir}/immutable/assets/[name]-[hash][extname]` }, preserveEntrySignatures: 'strict' }, @@ -130,11 +130,7 @@ export const get_default_config = function ({ config, input, ssr, outDir }) { * @returns {string} */ export function assets_base(config) { - // TODO this is so that Vite's preloading works. Unfortunately, it fails - // during `svelte-kit preview`, because we use a local asset path. This - // may be fixed in Vite 3: https://github.com/vitejs/vite/issues/2009 - const { base, assets } = config.paths; - return `${assets || base}/${config.appDir}/`; + return config.paths.assets || './'; } /** diff --git a/packages/kit/src/vite/index.js b/packages/kit/src/vite/index.js index d5a78ea08925..232c875bb739 100644 --- a/packages/kit/src/vite/index.js +++ b/packages/kit/src/vite/index.js @@ -178,7 +178,7 @@ function kit() { paths = { build_dir: `${svelte_config.kit.outDir}/build`, output_dir: `${svelte_config.kit.outDir}/output`, - client_out_dir: `${svelte_config.kit.outDir}/output/client/${svelte_config.kit.appDir}` + client_out_dir: `${svelte_config.kit.outDir}/output/client` }; if (is_build) { @@ -199,7 +199,7 @@ function kit() { /** @type {import('vite').UserConfig} */ const result = { appType: 'custom', - base: '/', + base: '', build: { rollupOptions: { // Vite dependency crawler needs an explicit JS entry point @@ -312,8 +312,8 @@ function kit() { const files = new Set([ ...static_files, - ...chunks.map((chunk) => `${svelte_config.kit.appDir}/${chunk.fileName}`), - ...assets.map((chunk) => `${svelte_config.kit.appDir}/${chunk.fileName}`) + ...chunks.map((chunk) => chunk.fileName), + ...assets.map((chunk) => chunk.fileName) ]); // TODO is this right? From b98f632e8996f46a69edbc4503ec0bf427609f3e Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 18:41:34 -0400 Subject: [PATCH 05/15] remove unused app_dir --- packages/kit/src/vite/build/build_server.js | 1 - packages/kit/src/vite/dev/index.js | 1 - packages/kit/types/internal.d.ts | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/kit/src/vite/build/build_server.js b/packages/kit/src/vite/build/build_server.js index 7c8bb390d84a..4dc6a36d7e5c 100644 --- a/packages/kit/src/vite/build/build_server.js +++ b/packages/kit/src/vite/build/build_server.js @@ -46,7 +46,6 @@ export function override(settings) { export class Server { constructor(manifest) { this.options = { - app_dir: ${s(config.kit.appDir)}, csp: ${s(config.kit.csp)}, dev: false, get_stack: error => String(error), // for security diff --git a/packages/kit/src/vite/dev/index.js b/packages/kit/src/vite/dev/index.js index 72717656e0ac..84bb869b2992 100644 --- a/packages/kit/src/vite/dev/index.js +++ b/packages/kit/src/vite/dev/index.js @@ -302,7 +302,6 @@ export async function dev(vite, vite_config, svelte_config) { const rendered = await respond( request, { - app_dir: svelte_config.kit.appDir, csp: svelte_config.kit.csp, dev: true, get_stack: (error) => { diff --git a/packages/kit/types/internal.d.ts b/packages/kit/types/internal.d.ts index 8f826e3190ba..d7d9fc5fa210 100644 --- a/packages/kit/types/internal.d.ts +++ b/packages/kit/types/internal.d.ts @@ -232,7 +232,6 @@ export interface SSRNode { export type SSRNodeLoader = () => Promise; export interface SSROptions { - app_dir: string; csp: ValidatedConfig['kit']['csp']; dev: boolean; get_stack: (error: Error) => string | undefined; From 6e15e930c3cfd80e0568cab46e0726041a0f72bf Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 18:48:59 -0400 Subject: [PATCH 06/15] fix version.json --- packages/kit/src/vite/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/vite/index.js b/packages/kit/src/vite/index.js index 232c875bb739..68923d38242d 100644 --- a/packages/kit/src/vite/index.js +++ b/packages/kit/src/vite/index.js @@ -267,7 +267,7 @@ function kit() { }); fs.writeFileSync( - `${paths.client_out_dir}/version.json`, + `${paths.client_out_dir}/${svelte_config.kit.appDir}/version.json`, JSON.stringify({ version: process.env.VITE_SVELTEKIT_APP_VERSION }) ); From 75769b709bdce81ca664120516698932f323a00f Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 19:21:54 -0400 Subject: [PATCH 07/15] use absolute base for SSR, if specified --- packages/kit/src/vite/build/utils.js | 2 +- packages/kit/src/vite/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/kit/src/vite/build/utils.js b/packages/kit/src/vite/build/utils.js index cf1a5686d99c..ed85f37d0f7e 100644 --- a/packages/kit/src/vite/build/utils.js +++ b/packages/kit/src/vite/build/utils.js @@ -130,7 +130,7 @@ export const get_default_config = function ({ config, input, ssr, outDir }) { * @returns {string} */ export function assets_base(config) { - return config.paths.assets || './'; + return config.paths.assets || config.paths.base || './'; } /** diff --git a/packages/kit/src/vite/index.js b/packages/kit/src/vite/index.js index 68923d38242d..cf3cecd8dd5b 100644 --- a/packages/kit/src/vite/index.js +++ b/packages/kit/src/vite/index.js @@ -199,7 +199,7 @@ function kit() { /** @type {import('vite').UserConfig} */ const result = { appType: 'custom', - base: '', + base: './', build: { rollupOptions: { // Vite dependency crawler needs an explicit JS entry point From 83dbbb23be5f58dfb875ab4488a194250350ec62 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 19:41:26 -0400 Subject: [PATCH 08/15] handle fallback case, explain prefixing logic a bit --- .../spa/src/routes/fallback/[...rest].svelte | 1 + packages/adapter-static/test/test.js | 5 +++- .../kit/src/runtime/server/page/render.js | 26 ++++++++++++++----- 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte diff --git a/packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte b/packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte new file mode 100644 index 000000000000..671b43ec7195 --- /dev/null +++ b/packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte @@ -0,0 +1 @@ +

the fallback page was rendered

diff --git a/packages/adapter-static/test/test.js b/packages/adapter-static/test/test.js index 93bbd1e97c77..3e414f86798e 100644 --- a/packages/adapter-static/test/test.js +++ b/packages/adapter-static/test/test.js @@ -14,8 +14,11 @@ run('prerendered', (test) => { }); run('spa', (test) => { - test('generates a fallback page', ({ cwd }) => { + test('generates a fallback page', async ({ base, cwd, page }) => { assert.ok(fs.existsSync(`${cwd}/build/200.html`)); + + await page.goto(`${base}/fallback/a/b/c`); + assert.equal(await page.textContent('h1'), 'the fallback page was rendered'); }); test('does not prerender pages without prerender=true', ({ cwd }) => { diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index 25affb3b50b4..ff3cc64c4ed0 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -172,16 +172,28 @@ export async function render_response({ const target = hash(body); - const segments = event.url.pathname.slice(options.paths.base.length).split('/').slice(2); - const assets = - options.paths.assets || (segments.length > 0 ? segments.map(() => '..').join('/') : '.'); + /** @type {string} */ + let asset_prefix; + + if (options.paths.assets) { + // if an asset path is specified, use it + asset_prefix = options.paths.assets; + } else if (state.prerendering?.fallback) { + // if we're creating a fallback page, asset paths need to be root-relative + asset_prefix = options.paths.base; + } else { + // otherwise we want asset paths to be relative to the page, so that they + // will work in odd contexts like IPFS, the internet archive, and so on + const segments = event.url.pathname.slice(options.paths.base.length).split('/').slice(2); + asset_prefix = segments.length > 0 ? segments.map(() => '..').join('/') : '.'; + } /** @param {string} path */ - const prefix = (path) => (path.startsWith('/') ? path : `${assets}/${path}`); + const prefixed = (path) => (path.startsWith('/') ? path : `${asset_prefix}/${path}`); // prettier-ignore const init_app = ` - import { start } from ${s(prefix(entry.file))}; + import { start } from ${s(prefixed(entry.file))}; start({ target: document.querySelector('[data-sveltekit-hydrate="${target}"]').parentNode, paths: ${s(options.paths)}, @@ -228,7 +240,7 @@ export async function render_response({ .map((dep) => { const attributes = [ 'rel="stylesheet"', - `href="${prefix(dep)}"` + `href="${prefixed(dep)}"` ]; if (csp.style_needs_nonce) { @@ -247,7 +259,7 @@ export async function render_response({ if (page_config.router || page_config.hydrate) { head += Array.from(modulepreloads) - .map((dep) => `\n\t`) + .map((dep) => `\n\t`) .join(''); const attributes = ['type="module"', `data-sveltekit-hydrate="${target}"`]; From aa69472c7b2861e7bed82c5152bcc9d5f68e2db3 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 19:43:53 -0400 Subject: [PATCH 09/15] oops --- packages/kit/src/runtime/server/page/render.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/packages/kit/src/runtime/server/page/render.js b/packages/kit/src/runtime/server/page/render.js index ff3cc64c4ed0..d714e3896222 100644 --- a/packages/kit/src/runtime/server/page/render.js +++ b/packages/kit/src/runtime/server/page/render.js @@ -172,24 +172,27 @@ export async function render_response({ const target = hash(body); - /** @type {string} */ - let asset_prefix; + /** + * The prefix to use for static assets. Replaces `%sveltekit.assets%` in the template + * @type {string} + */ + let assets; if (options.paths.assets) { // if an asset path is specified, use it - asset_prefix = options.paths.assets; + assets = options.paths.assets; } else if (state.prerendering?.fallback) { // if we're creating a fallback page, asset paths need to be root-relative - asset_prefix = options.paths.base; + assets = options.paths.base; } else { // otherwise we want asset paths to be relative to the page, so that they // will work in odd contexts like IPFS, the internet archive, and so on const segments = event.url.pathname.slice(options.paths.base.length).split('/').slice(2); - asset_prefix = segments.length > 0 ? segments.map(() => '..').join('/') : '.'; + assets = segments.length > 0 ? segments.map(() => '..').join('/') : '.'; } /** @param {string} path */ - const prefixed = (path) => (path.startsWith('/') ? path : `${asset_prefix}/${path}`); + const prefixed = (path) => (path.startsWith('/') ? path : `${assets}/${path}`); // prettier-ignore const init_app = ` From 60075a438d95cbe52475b4c7df8052dfbadb5ff1 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 20:04:08 -0400 Subject: [PATCH 10/15] always use relative paths for client bundle --- packages/kit/src/vite/build/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/vite/build/utils.js b/packages/kit/src/vite/build/utils.js index ed85f37d0f7e..764b01b8120b 100644 --- a/packages/kit/src/vite/build/utils.js +++ b/packages/kit/src/vite/build/utils.js @@ -86,7 +86,7 @@ export function find_deps(manifest, entry, add_dynamic_css) { export const get_default_config = function ({ config, input, ssr, outDir }) { return { appType: 'custom', - base: assets_base(config.kit), + base: ssr ? assets_base(config.kit) : './', build: { cssCodeSplit: true, manifest: true, From 9425ef05d3452adec4bad6be0a2b632bb0a605ad Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 14 Jul 2022 20:04:23 -0400 Subject: [PATCH 11/15] changeset --- .changeset/wicked-spoons-leave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/wicked-spoons-leave.md diff --git a/.changeset/wicked-spoons-leave.md b/.changeset/wicked-spoons-leave.md new file mode 100644 index 000000000000..b83f016ce693 --- /dev/null +++ b/.changeset/wicked-spoons-leave.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +Use relative asset paths where possible From e23d134b315b5a257a205577e0b0b832a817a044 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 15 Jul 2022 10:52:04 -0400 Subject: [PATCH 12/15] fix ssr chunkFileNames --- packages/kit/src/vite/build/utils.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/kit/src/vite/build/utils.js b/packages/kit/src/vite/build/utils.js index 764b01b8120b..a6bb4e2b0e47 100644 --- a/packages/kit/src/vite/build/utils.js +++ b/packages/kit/src/vite/build/utils.js @@ -84,6 +84,8 @@ export function find_deps(manifest, entry, add_dynamic_css) { * @return {import('vite').UserConfig} */ export const get_default_config = function ({ config, input, ssr, outDir }) { + const prefix = `${config.kit.appDir}/immutable`; + return { appType: 'custom', base: ssr ? assets_base(config.kit) : './', @@ -96,9 +98,11 @@ export const get_default_config = function ({ config, input, ssr, outDir }) { input, output: { format: 'esm', - entryFileNames: ssr ? '[name].js' : `${config.kit.appDir}/immutable/[name]-[hash].js`, - chunkFileNames: `${config.kit.appDir}/immutable/chunks/[name]-[hash].js`, - assetFileNames: `${config.kit.appDir}/immutable/assets/[name]-[hash][extname]` + entryFileNames: ssr ? '[name].js' : `${prefix}/[name]-[hash].js`, + chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[name]-[hash].js`, + // assetFileNames is the same for ssr/client/workers because we're not actually + // outputting the assets in SSR mode, but they need to point to the same place + assetFileNames: `${prefix}/assets/[name]-[hash][extname]` }, preserveEntrySignatures: 'strict' }, From fc2e7635ed342a7e1052ff6f7d854e43024771ca Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sun, 31 Jul 2022 10:33:27 -0400 Subject: [PATCH 13/15] bump vite version, add worker.rollupOptions config --- CONTRIBUTING.md | 3 +- packages/adapter-static/package.json | 2 +- .../test/apps/prerendered/package.json | 2 +- .../adapter-static/test/apps/spa/package.json | 2 +- .../templates/default/package.json | 2 +- .../templates/default/package.template.json | 2 +- .../templates/skeleton/package.template.json | 2 +- packages/kit/package.json | 4 +- packages/kit/src/vite/build/utils.js | 8 ++ packages/kit/test/apps/amp/package.json | 2 +- packages/kit/test/apps/basics/package.json | 2 +- packages/kit/test/apps/options-2/package.json | 2 +- packages/kit/test/apps/options/package.json | 2 +- packages/kit/test/apps/writes/package.json | 2 +- .../kit/test/prerendering/basics/package.json | 2 +- .../test/prerendering/fallback/package.json | 2 +- .../test/prerendering/options/package.json | 2 +- .../test/prerendering/paths-base/package.json | 2 +- .../prerendering/trailing-slash/package.json | 2 +- pnpm-lock.yaml | 76 +++++++++---------- sites/kit.svelte.dev/package.json | 2 +- 21 files changed, 67 insertions(+), 58 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef527cd886a1..9f5643fa9833 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -48,6 +48,7 @@ You may need to install some dependencies first, e.g. with `npx playwright insta If there are tests that fail on the CI, you can retrieve the failed screenshots by going to the summary page of the CI run. You can usually find this by clicking on "Details" of the check results, click "Summary" at the top-left corner, and then scroll to the bottom "Artifacts" section to download the archive. It is very easy to introduce flakiness in a browser test. If you try to fix the flakiness in a test, you can run it until failure to gain some confidence you've fixed the test with a command like: + ``` npx playwright test --workers=1 --repeat-each 1000 --max-failures 1 -g "accepts a Request object" ``` @@ -60,7 +61,7 @@ If you would like to test local changes to Vite or another dependency, you can b { // ... "dependencies": { - "vite": "^2.0.0" + "vite": "^3.0.0" }, "pnpm": { "overrides": { diff --git a/packages/adapter-static/package.json b/packages/adapter-static/package.json index c8b196c7f108..6d3eb40ccb63 100644 --- a/packages/adapter-static/package.json +++ b/packages/adapter-static/package.json @@ -35,6 +35,6 @@ "svelte": "^3.48.0", "typescript": "^4.7.4", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" } } diff --git a/packages/adapter-static/test/apps/prerendered/package.json b/packages/adapter-static/test/apps/prerendered/package.json index 425cb7a94356..be6e5d480e24 100644 --- a/packages/adapter-static/test/apps/prerendered/package.json +++ b/packages/adapter-static/test/apps/prerendered/package.json @@ -10,7 +10,7 @@ "devDependencies": { "@sveltejs/kit": "workspace:*", "svelte": "^3.48.0", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/adapter-static/test/apps/spa/package.json b/packages/adapter-static/test/apps/spa/package.json index 156d0fe3bd5a..84a4c3ed4d5f 100644 --- a/packages/adapter-static/test/apps/spa/package.json +++ b/packages/adapter-static/test/apps/spa/package.json @@ -12,7 +12,7 @@ "@sveltejs/kit": "workspace:*", "sirv-cli": "^2.0.2", "svelte": "^3.48.0", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/create-svelte/templates/default/package.json b/packages/create-svelte/templates/default/package.json index 630e6f122b83..835257cc8bde 100644 --- a/packages/create-svelte/templates/default/package.json +++ b/packages/create-svelte/templates/default/package.json @@ -14,7 +14,7 @@ "svelte": "^3.48.0", "svelte-preprocess": "^4.10.6", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module", "dependencies": { diff --git a/packages/create-svelte/templates/default/package.template.json b/packages/create-svelte/templates/default/package.template.json index 3e51b6a62117..d4cc74df2dfb 100644 --- a/packages/create-svelte/templates/default/package.template.json +++ b/packages/create-svelte/templates/default/package.template.json @@ -11,7 +11,7 @@ "@sveltejs/adapter-auto": "next", "@sveltejs/kit": "next", "svelte": "^3.46.0", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module", "dependencies": { diff --git a/packages/create-svelte/templates/skeleton/package.template.json b/packages/create-svelte/templates/skeleton/package.template.json index 6168c971b6ac..83ae22e7e99a 100644 --- a/packages/create-svelte/templates/skeleton/package.template.json +++ b/packages/create-svelte/templates/skeleton/package.template.json @@ -11,7 +11,7 @@ "@sveltejs/adapter-auto": "workspace:*", "@sveltejs/kit": "workspace:*", "svelte": "^3.44.0", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/package.json b/packages/kit/package.json index b22547e00afb..58e7c6d84b87 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -44,11 +44,11 @@ "typescript": "^4.7.4", "undici": "^5.6.1", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "peerDependencies": { "svelte": "^3.44.0", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "bin": { "svelte-kit": "svelte-kit.js" diff --git a/packages/kit/src/vite/build/utils.js b/packages/kit/src/vite/build/utils.js index eb985184980e..180cef9303d1 100644 --- a/packages/kit/src/vite/build/utils.js +++ b/packages/kit/src/vite/build/utils.js @@ -135,6 +135,14 @@ export const get_default_config = function ({ config, input, ssr, outDir }) { JSON.parse(fs.readFileSync(new URL('../../../package.json', import.meta.url), 'utf-8')) .devDependencies ) + }, + worker: { + rollupOptions: { + output: { + entryFileNames: `${prefix}/workers/[name]-[hash].js`, + chunkFileNames: `${prefix}/workers/chunks/[name]-[hash].js` + } + } } }; }; diff --git a/packages/kit/test/apps/amp/package.json b/packages/kit/test/apps/amp/package.json index ea35010815f5..02747ab57a09 100644 --- a/packages/kit/test/apps/amp/package.json +++ b/packages/kit/test/apps/amp/package.json @@ -19,7 +19,7 @@ "svelte": "^3.48.0", "svelte-check": "^2.7.1", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/apps/basics/package.json b/packages/kit/test/apps/basics/package.json index dfa4862f57ec..8c5de50425d5 100644 --- a/packages/kit/test/apps/basics/package.json +++ b/packages/kit/test/apps/basics/package.json @@ -18,7 +18,7 @@ "svelte": "^3.48.0", "svelte-check": "^2.7.1", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/apps/options-2/package.json b/packages/kit/test/apps/options-2/package.json index df605763d4f0..407627619dc3 100644 --- a/packages/kit/test/apps/options-2/package.json +++ b/packages/kit/test/apps/options-2/package.json @@ -18,7 +18,7 @@ "svelte": "^3.48.0", "svelte-check": "^2.7.1", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/apps/options/package.json b/packages/kit/test/apps/options/package.json index 2b927be74002..b76eb9c00f62 100644 --- a/packages/kit/test/apps/options/package.json +++ b/packages/kit/test/apps/options/package.json @@ -17,7 +17,7 @@ "svelte": "^3.48.0", "svelte-check": "^2.7.1", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/apps/writes/package.json b/packages/kit/test/apps/writes/package.json index f07e6655f6b2..a0b7685bd503 100644 --- a/packages/kit/test/apps/writes/package.json +++ b/packages/kit/test/apps/writes/package.json @@ -18,7 +18,7 @@ "svelte": "^3.48.0", "svelte-check": "^2.7.1", "typescript": "^4.7.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/prerendering/basics/package.json b/packages/kit/test/prerendering/basics/package.json index db8df5f35cc4..53a3f9871a0b 100644 --- a/packages/kit/test/prerendering/basics/package.json +++ b/packages/kit/test/prerendering/basics/package.json @@ -15,7 +15,7 @@ "svelte-check": "^2.7.1", "typescript": "^4.7.4", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/prerendering/fallback/package.json b/packages/kit/test/prerendering/fallback/package.json index ee20095cd9d8..782aa22807a3 100644 --- a/packages/kit/test/prerendering/fallback/package.json +++ b/packages/kit/test/prerendering/fallback/package.json @@ -15,7 +15,7 @@ "svelte-check": "^2.7.1", "typescript": "^4.7.4", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/prerendering/options/package.json b/packages/kit/test/prerendering/options/package.json index 71a5279c38ba..8500b590d0dc 100644 --- a/packages/kit/test/prerendering/options/package.json +++ b/packages/kit/test/prerendering/options/package.json @@ -15,7 +15,7 @@ "svelte-check": "^2.7.1", "typescript": "^4.7.4", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/prerendering/paths-base/package.json b/packages/kit/test/prerendering/paths-base/package.json index 465028077b7b..d897f33f6d47 100644 --- a/packages/kit/test/prerendering/paths-base/package.json +++ b/packages/kit/test/prerendering/paths-base/package.json @@ -15,7 +15,7 @@ "svelte-check": "^2.7.1", "typescript": "^4.7.4", "uvu": "^0.5.3", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/packages/kit/test/prerendering/trailing-slash/package.json b/packages/kit/test/prerendering/trailing-slash/package.json index b0073089142f..a00ad89af1ef 100644 --- a/packages/kit/test/prerendering/trailing-slash/package.json +++ b/packages/kit/test/prerendering/trailing-slash/package.json @@ -15,7 +15,7 @@ "svelte-check": "^2.7.1", "typescript": "^4.7.4", "uvu": "^0.5.4", - "vite": "^3.0.0" + "vite": "^3.0.4" }, "type": "module" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a62e86a8a81f..334382626b5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -153,7 +153,7 @@ importers: tiny-glob: ^0.2.9 typescript: ^4.7.4 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 dependencies: tiny-glob: 0.2.9 devDependencies: @@ -164,17 +164,17 @@ importers: svelte: 3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/adapter-static/test/apps/prerendered: specifiers: '@sveltejs/kit': workspace:* svelte: ^3.48.0 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../../../kit svelte: 3.48.0 - vite: 3.0.0 + vite: 3.0.4 packages/adapter-static/test/apps/spa: specifiers: @@ -182,13 +182,13 @@ importers: '@sveltejs/kit': workspace:* sirv-cli: ^2.0.2 svelte: ^3.48.0 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/adapter-node': link:../../../../adapter-node '@sveltejs/kit': link:../../../../kit sirv-cli: 2.0.2 svelte: 3.48.0 - vite: 3.0.0 + vite: 3.0.4 packages/adapter-vercel: specifiers: @@ -253,7 +253,7 @@ importers: svelte: ^3.48.0 svelte-preprocess: ^4.10.6 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 dependencies: '@fontsource/fira-mono': 4.5.8 '@lukeed/uuid': 2.0.0 @@ -264,7 +264,7 @@ importers: svelte: 3.48.0 svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit: specifiers: @@ -300,9 +300,9 @@ importers: typescript: ^4.7.4 undici: ^5.6.1 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.0 + '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.4 chokidar: 3.5.3 sade: 1.8.1 devDependencies: @@ -335,7 +335,7 @@ importers: typescript: 4.7.4 undici: 5.6.1 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/apps/amp: specifiers: @@ -346,7 +346,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/amp': link:../../../../amp '@sveltejs/kit': link:../../.. @@ -355,7 +355,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/apps/basics: specifiers: @@ -365,7 +365,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 @@ -373,7 +373,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/apps/options: specifiers: @@ -382,14 +382,14 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/apps/options-2: specifiers: @@ -399,7 +399,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/adapter-node': link:../../../../adapter-node '@sveltejs/kit': link:../../.. @@ -407,7 +407,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/apps/writes: specifiers: @@ -417,7 +417,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 @@ -425,7 +425,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/prerendering/basics: specifiers: @@ -434,14 +434,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/prerendering/fallback: specifiers: @@ -450,14 +450,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/prerendering/options: specifiers: @@ -466,14 +466,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/prerendering/paths-base: specifiers: @@ -482,14 +482,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 packages/kit/test/prerendering/trailing-slash: specifiers: @@ -498,14 +498,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.4 - vite: ^3.0.0 + vite: ^3.0.4 devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 - vite: 3.0.0 + vite: 3.0.4 sites/kit.svelte.dev: specifiers: @@ -522,7 +522,7 @@ importers: shiki-twoslash: ^3.0.2 svelte: ^3.48.0 typescript: ^4.7.4 - vite: ^3.0.0 + vite: ^3.0.4 vite-imagetools: ^4.0.3 devDependencies: '@sveltejs/adapter-auto': link:../../packages/adapter-auto @@ -538,7 +538,7 @@ importers: shiki-twoslash: 3.1.0 svelte: 3.48.0 typescript: 4.7.4 - vite: 3.0.0 + vite: 3.0.4 vite-imagetools: 4.0.4 packages: @@ -972,7 +972,7 @@ packages: golden-fleece: 1.0.9 dev: true - /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.0: + /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.4: resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -990,7 +990,7 @@ packages: magic-string: 0.26.2 svelte: 3.48.0 svelte-hmr: 0.14.12_svelte@3.48.0 - vite: 3.0.0 + vite: 3.0.4 transitivePeerDependencies: - supports-color dev: false @@ -4459,9 +4459,9 @@ packages: magic-string: 0.26.2 dev: true - /vite/3.0.0: - resolution: {integrity: sha512-M7phQhY3+fRZa0H+1WzI6N+/onruwPTBTMvaj7TzgZ0v2TE+N2sdLKxJOfOv9CckDWt5C4HmyQP81xB4dwRKzA==} - engines: {node: '>=14.18.0'} + /vite/3.0.4: + resolution: {integrity: sha512-NU304nqnBeOx2MkQnskBQxVsa0pRAH5FphokTGmyy8M3oxbvw7qAXts2GORxs+h/2vKsD+osMhZ7An6yK6F1dA==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: less: '*' diff --git a/sites/kit.svelte.dev/package.json b/sites/kit.svelte.dev/package.json index 616f17709c90..5be7b5e4436b 100644 --- a/sites/kit.svelte.dev/package.json +++ b/sites/kit.svelte.dev/package.json @@ -21,7 +21,7 @@ "shiki-twoslash": "^3.0.2", "svelte": "^3.48.0", "typescript": "^4.7.4", - "vite": "^3.0.0", + "vite": "^3.0.4", "vite-imagetools": "^4.0.3" }, "type": "module" From 1bfb35a8cca75e4611441afd586150a730889f21 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Tue, 16 Aug 2022 21:08:31 -0400 Subject: [PATCH 14/15] fix test --- .../routes/fallback/{[...rest].svelte => [...rest]/+page.svelte} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/adapter-static/test/apps/spa/src/routes/fallback/{[...rest].svelte => [...rest]/+page.svelte} (100%) diff --git a/packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte b/packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest]/+page.svelte similarity index 100% rename from packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest].svelte rename to packages/adapter-static/test/apps/spa/src/routes/fallback/[...rest]/+page.svelte From 90193bdaa8c2cff1d2c4f79bc4d2ebf5613c4820 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 17 Aug 2022 15:03:30 -0400 Subject: [PATCH 15/15] ugh --- pnpm-lock.yaml | 125 ------------------------------------------------- 1 file changed, 125 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 84cc8d7b6bdc..92e3c04316db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,11 +149,7 @@ importers: svelte: ^3.48.0 typescript: ^4.7.4 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../kit '@types/node': 16.11.42 @@ -162,29 +158,17 @@ importers: svelte: 3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/adapter-static/test/apps/prerendered: specifiers: '@sveltejs/kit': workspace:* svelte: ^3.48.0 -<<<<<<< HEAD - vite: ^3.0.4 - devDependencies: - '@sveltejs/kit': link:../../../../kit - svelte: 3.48.0 - vite: 3.0.8 -======= vite: 3.0.2 devDependencies: '@sveltejs/kit': link:../../../../kit svelte: 3.48.0 vite: 3.0.2 ->>>>>>> master packages/adapter-static/test/apps/spa: specifiers: @@ -192,21 +176,13 @@ importers: '@sveltejs/kit': workspace:* sirv-cli: ^2.0.2 svelte: ^3.48.0 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/adapter-node': link:../../../../adapter-node '@sveltejs/kit': link:../../../../kit sirv-cli: 2.0.2 svelte: 3.48.0 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/adapter-vercel: specifiers: @@ -319,15 +295,9 @@ importers: typescript: ^4.7.4 undici: ^5.8.1 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 - dependencies: - '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.8 -======= vite: 3.0.2 dependencies: '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.48.0+vite@3.0.2 ->>>>>>> master chokidar: 3.5.3 cookie: 0.5.0 devalue: 2.0.1 @@ -355,11 +325,7 @@ importers: svelte-preprocess: 4.10.7_lvfi2wesz6u4l5rfbnetbucfmm typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/apps/amp: specifiers: @@ -370,11 +336,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/amp': link:../../../../amp '@sveltejs/kit': link:../../.. @@ -383,11 +345,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/apps/basics: specifiers: @@ -397,11 +355,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 @@ -409,11 +363,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/apps/options: specifiers: @@ -422,22 +372,14 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/apps/options-2: specifiers: @@ -447,11 +389,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/adapter-node': link:../../../../adapter-node '@sveltejs/kit': link:../../.. @@ -459,11 +397,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/apps/writes: specifiers: @@ -473,11 +407,7 @@ importers: svelte: ^3.48.0 svelte-check: ^2.7.1 typescript: ^4.7.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. cross-env: 7.0.3 @@ -485,11 +415,7 @@ importers: svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/prerendering/basics: specifiers: @@ -498,22 +424,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/prerendering/fallback: specifiers: @@ -522,22 +440,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/prerendering/options: specifiers: @@ -546,22 +456,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/prerendering/paths-base: specifiers: @@ -570,22 +472,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.3 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/kit/test/prerendering/trailing-slash: specifiers: @@ -594,22 +488,14 @@ importers: svelte-check: ^2.7.1 typescript: ^4.7.4 uvu: ^0.5.4 -<<<<<<< HEAD - vite: ^3.0.4 -======= vite: 3.0.2 ->>>>>>> master devDependencies: '@sveltejs/kit': link:../../.. svelte: 3.48.0 svelte-check: 2.8.0_svelte@3.48.0 typescript: 4.7.4 uvu: 0.5.4 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master packages/migrate: specifiers: @@ -1109,11 +995,7 @@ packages: golden-fleece: 1.0.9 dev: true -<<<<<<< HEAD - /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.8: -======= /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.48.0+vite@3.0.2: ->>>>>>> master resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -1131,11 +1013,7 @@ packages: magic-string: 0.26.2 svelte: 3.48.0 svelte-hmr: 0.14.12_svelte@3.48.0 -<<<<<<< HEAD - vite: 3.0.8 -======= vite: 3.0.2 ->>>>>>> master transitivePeerDependencies: - supports-color dev: false @@ -4592,8 +4470,6 @@ packages: magic-string: 0.26.2 dev: true -<<<<<<< HEAD -======= /vite/3.0.2: resolution: {integrity: sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==} engines: {node: ^14.18.0 || >=16.0.0} @@ -4620,7 +4496,6 @@ packages: optionalDependencies: fsevents: 2.3.2 ->>>>>>> master /vite/3.0.8: resolution: {integrity: sha512-AOZ4eN7mrkJiOLuw8IA7piS4IdOQyQCA81GxGsAQvAZzMRi9ZwGB3TOaYsj4uLAWK46T5L4AfQ6InNGlxX30IQ==} engines: {node: ^14.18.0 || >=16.0.0}