Skip to content

Commit

Permalink
rename app.render to server.respond (#4034)
Browse files Browse the repository at this point in the history
* rename app.render to server.respond

* fix replacements

* try this

* ok i think i got it now

* Update .changeset/late-bobcats-brake.md

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
  • Loading branch information
Rich-Harris and benmccann authored Feb 21, 2022
1 parent 5d5e6e2 commit f223f91
Show file tree
Hide file tree
Showing 23 changed files with 71 additions and 61 deletions.
10 changes: 10 additions & 0 deletions .changeset/late-bobcats-brake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@sveltejs/adapter-cloudflare': patch
'@sveltejs/adapter-cloudflare-workers': patch
'@sveltejs/adapter-netlify': patch
'@sveltejs/adapter-node': patch
'@sveltejs/adapter-vercel': patch
'@sveltejs/kit': patch
---

[breaking] rename `app.render` to `server.respond`
4 changes: 2 additions & 2 deletions packages/adapter-cloudflare-workers/files/entry.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
declare module 'APP' {
export { App } from '@sveltejs/kit';
declare module 'SERVER' {
export { Server } from '@sveltejs/kit';
}

declare module 'MANIFEST' {
Expand Down
6 changes: 3 additions & 3 deletions packages/adapter-cloudflare-workers/files/entry.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { App } from 'APP';
import { Server } from 'SERVER';
import { manifest, prerendered } from 'MANIFEST';
import { getAssetFromKV } from '@cloudflare/kv-asset-handler';

const app = new App(manifest);
const server = new Server(manifest);

const prefix = `/${manifest.appDir}/`;

Expand Down Expand Up @@ -50,7 +50,7 @@ async function handle(event) {

// dynamically-generated pages
try {
return await app.render(request);
return await server.respond(request);
} catch (e) {
return new Response('Error rendering route:' + (e.message || e.toString()), { status: 500 });
}
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-cloudflare-workers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export default function () {

builder.copy(`${files}/entry.js`, `${tmp}/entry.js`, {
replace: {
APP: `${relativePath}/app.js`,
SERVER: `${relativePath}/index.js`,
MANIFEST: './manifest.js'
}
});
Expand Down
4 changes: 2 additions & 2 deletions packages/adapter-cloudflare/files/worker.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
declare module 'APP' {
export { App } from '@sveltejs/kit';
declare module 'SERVER' {
export { Server } from '@sveltejs/kit';
}

declare module 'MANIFEST' {
Expand Down
6 changes: 3 additions & 3 deletions packages/adapter-cloudflare/files/worker.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { App } from 'APP';
import { Server } from 'SERVER';
import { manifest, prerendered } from 'MANIFEST';

const app = new App(manifest);
const server = new Server(manifest);

const prefix = `/${manifest.appDir}/`;

Expand Down Expand Up @@ -50,7 +50,7 @@ export default {

// dynamically-generated pages
try {
return await app.render(req, { platform: { env, context } });
return await server.respond(req, { platform: { env, context } });
} catch (e) {
return new Response('Error rendering route: ' + (e.message || e.toString()), { status: 500 });
}
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-cloudflare/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export default function (options = {}) {

builder.copy(`${files}/worker.js`, `${tmp}/_worker.js`, {
replace: {
APP: `${relativePath}/app.js`,
SERVER: `${relativePath}/index.js`,
MANIFEST: './manifest.js'
}
});
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-netlify/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export default function ({ split = false } = {}) {
const redirects = [];

const replace = {
'0APP': './server/app.js' // digit prefix prevents CJS build from using this as a variable name, which would also get replaced
'0SERVER': './server/index.js' // digit prefix prevents CJS build from using this as a variable name, which would also get replaced
};

if (esm) {
Expand Down
4 changes: 2 additions & 2 deletions packages/adapter-netlify/src/handler.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
declare module '0APP' {
export { App } from '@sveltejs/kit';
declare module '0SERVER' {
export { Server } from '@sveltejs/kit';
}
6 changes: 3 additions & 3 deletions packages/adapter-netlify/src/handler.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import './shims';
import { App } from '0APP';
import { Server } from '0SERVER';

/**
* @param {import('@sveltejs/kit').SSRManifest} manifest
* @returns {import('@netlify/functions').Handler}
*/
export function init(manifest) {
const app = new App(manifest);
const server = new Server(manifest);

return async (event) => {
const rendered = await app.render(to_request(event));
const rendered = await server.respond(to_request(event));

const partial_response = {
statusCode: rendered.status,
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-node/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export default function ({

builder.copy(files, out, {
replace: {
APP: './server/app.js',
SERVER: './server/index.js',
MANIFEST: './manifest.js',
PATH_ENV: JSON.stringify(path_env),
HOST_ENV: JSON.stringify(host_env),
Expand Down
2 changes: 1 addition & 1 deletion packages/adapter-node/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ export default [
format: 'esm'
},
plugins: [nodeResolve(), commonjs(), json()],
external: ['APP', 'MANIFEST', ...require('module').builtinModules]
external: ['SERVER', 'MANIFEST', ...require('module').builtinModules]
}
];
4 changes: 2 additions & 2 deletions packages/adapter-node/src/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
declare module 'APP' {
export { App } from '@sveltejs/kit';
declare module 'SERVER' {
export { Server } from '@sveltejs/kit';
}

declare module 'MANIFEST' {
Expand Down
6 changes: 3 additions & 3 deletions packages/adapter-node/src/handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import path from 'path';
import sirv from 'sirv';
import { fileURLToPath } from 'url';
import { getRequest, setResponse } from '@sveltejs/kit/node';
import { App } from 'APP';
import { Server } from 'SERVER';
import { manifest } from 'MANIFEST';

/* global ORIGIN, PROTOCOL_HEADER, HOST_HEADER */

const app = new App(manifest);
const server = new Server(manifest);
const origin = ORIGIN;
const protocol_header = PROTOCOL_HEADER && process.env[PROTOCOL_HEADER];
const host_header = (HOST_HEADER && process.env[HOST_HEADER]) || 'host';
Expand Down Expand Up @@ -45,7 +45,7 @@ const ssr = async (req, res) => {
return res.end(err.reason || 'Invalid request body');
}

setResponse(res, await app.render(request));
setResponse(res, await server.respond(request));
};

/** @param {import('polka').Middleware[]} handlers */
Expand Down
4 changes: 2 additions & 2 deletions packages/adapter-vercel/files/ambient.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
declare module 'APP' {
export { App } from '@sveltejs/kit';
declare module 'SERVER' {
export { Server } from '@sveltejs/kit';
}

declare module 'MANIFEST' {
Expand Down
6 changes: 3 additions & 3 deletions packages/adapter-vercel/files/entry.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import './shims';
import { getRequest, setResponse } from '@sveltejs/kit/node';
import { App } from 'APP';
import { Server } from 'SERVER';
import { manifest } from 'MANIFEST';

const app = new App(manifest);
const server = new Server(manifest);

/**
* @param {import('http').IncomingMessage} req
Expand All @@ -19,5 +19,5 @@ export default async (req, res) => {
return res.end(err.reason || 'Invalid request body');
}

setResponse(res, await app.render(request));
setResponse(res, await server.respond(request));
};
2 changes: 1 addition & 1 deletion packages/adapter-vercel/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export default function ({ external = [] } = {}) {

builder.copy(files, tmp, {
replace: {
APP: `${relativePath}/app.js`,
SERVER: `${relativePath}/index.js`,
MANIFEST: './manifest.js'
}
});
Expand Down
10 changes: 5 additions & 5 deletions packages/kit/src/core/adapt/prerender/prerender.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ export async function prerender({ cwd, out, log, config, build_data, fallback, a

const server_root = resolve_path(cwd, `${SVELTE_KIT}/output`);

/** @type {import('types').AppModule} */
const { App, override } = await import(pathToFileURL(`${server_root}/server/app.js`).href);
/** @type {import('types').ServerModule} */
const { Server, override } = await import(pathToFileURL(`${server_root}/server/index.js`).href);
const { manifest } = await import(pathToFileURL(`${server_root}/server/manifest.js`).href);

override({
Expand All @@ -77,7 +77,7 @@ export async function prerender({ cwd, out, log, config, build_data, fallback, a
read: (file) => readFileSync(join(config.kit.files.assets, file))
});

const app = new App(manifest);
const server = new Server(manifest);

const error = normalise_error_handler(log, config.kit.prerender.onError);

Expand Down Expand Up @@ -145,7 +145,7 @@ export async function prerender({ cwd, out, log, config, build_data, fallback, a
/** @type {Map<string, import('types').PrerenderDependency>} */
const dependencies = new Map();

const response = await app.render(new Request(`http://sveltekit-prerender${encoded}`), {
const response = await server.respond(new Request(`http://sveltekit-prerender${encoded}`), {
prerender: {
all,
dependencies
Expand Down Expand Up @@ -282,7 +282,7 @@ export async function prerender({ cwd, out, log, config, build_data, fallback, a
}

if (fallback) {
const rendered = await app.render(new Request('http://sveltekit-prerender/[fallback]'), {
const rendered = await server.respond(new Request('http://sveltekit-prerender/[fallback]'), {
prerender: {
fallback,
all: false,
Expand Down
12 changes: 6 additions & 6 deletions packages/kit/src/core/build/build_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { s } from '../../utils/misc.js';
* }} opts
* @returns
*/
const app_template = ({ config, hooks, has_service_worker, template }) => `
const server_template = ({ config, hooks, has_service_worker, template }) => `
import root from '__GENERATED__/root.svelte';
import { respond } from '${runtime}/server/index.js';
import { set_paths, assets, base } from '${runtime}/paths.js';
Expand Down Expand Up @@ -55,7 +55,7 @@ export function override(settings) {
read = settings.read;
}
export class App {
export class Server {
constructor(manifest) {
const hooks = get_hooks(user_hooks);
Expand Down Expand Up @@ -95,7 +95,7 @@ export class App {
};
}
render(request, options = {}) {
respond(request, options = {}) {
if (!(request instanceof Request)) {
throw new Error('The first argument to app.render must be a Request object. See https://github.com/sveltejs/kit/pull/3384 for details');
}
Expand Down Expand Up @@ -139,7 +139,7 @@ export async function build_server(

/** @type {Record<string, string>} */
const input = {
app: `${build_dir}/app.js`
index: `${build_dir}/index.js`
};

// add entry points for every endpoint...
Expand Down Expand Up @@ -172,8 +172,8 @@ export async function build_server(
};

fs.writeFileSync(
input.app,
app_template({
input.index,
server_template({
config,
hooks: app_relative(hooks_file),
has_service_worker: service_worker_register && !!service_worker_entry_file,
Expand Down
16 changes: 8 additions & 8 deletions packages/kit/src/core/preview/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ export async function preview({
}) {
__fetch_polyfill();

const app_file = resolve(cwd, `${SVELTE_KIT}/output/server/app.js`);
const index_file = resolve(cwd, `${SVELTE_KIT}/output/server/index.js`);
const manifest_file = resolve(cwd, `${SVELTE_KIT}/output/server/manifest.js`);

/** @type {import('types').AppModule} */
const { App, override } = await import(pathToFileURL(app_file).href);
/** @type {import('types').ServerModule} */
const { Server, override } = await import(pathToFileURL(index_file).href);

const { manifest } = await import(pathToFileURL(manifest_file).href);

Expand Down Expand Up @@ -66,12 +66,12 @@ export async function preview({
read: (file) => fs.readFileSync(join(config.kit.files.assets, file))
});

const app = new App(manifest);
const server = new Server(manifest);

/** @type {import('vite').UserConfig} */
const vite_config = (config.kit.vite && (await config.kit.vite())) || {};

const server = await get_server(use_https, vite_config, (req, res) => {
const http_server = await get_server(use_https, vite_config, (req, res) => {
if (req.url == null) {
throw new Error('Invalid request url');
}
Expand All @@ -93,7 +93,7 @@ export async function preview({
return res.end(err.reason || 'Invalid request body');
}

setResponse(res, await app.render(request));
setResponse(res, await server.respond(request));
} else {
res.statusCode = 404;
res.end('Not found');
Expand All @@ -120,9 +120,9 @@ export async function preview({
}
});

await server.listen(port, host || '0.0.0.0');
await http_server.listen(port, host || '0.0.0.0');

return Promise.resolve(server);
return Promise.resolve(http_server);
}

/**
Expand Down
10 changes: 5 additions & 5 deletions packages/kit/types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ import {
} from './internal';
import './ambient';

export class App {
constructor(manifest: SSRManifest);
render(request: Request, options?: RequestOptions): Promise<Response>;
}

export interface Adapter {
name: string;
adapt(builder: Builder): Promise<void>;
Expand Down Expand Up @@ -371,6 +366,11 @@ export interface RequestOptions {

export type ResolveOptions = Partial<RequiredResolveOptions>;

export class Server {
constructor(manifest: SSRManifest);
respond(request: Request, options?: RequestOptions): Promise<Response>;
}

export interface SSRManifest {
appDir: string;
assets: Set<string>;
Expand Down
12 changes: 6 additions & 6 deletions packages/kit/types/internal.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import {
Handle,
HandleError,
RequestEvent,
App,
RequestOptions,
PrerenderErrorHandler
PrerenderErrorHandler,
Server
} from './index';

export interface AdapterEntry {
Expand All @@ -38,8 +38,8 @@ export interface AdapterEntry {
}) => void;
}

export interface AppModule {
App: typeof InternalApp;
export interface ServerModule {
Server: typeof InternalServer;

override(options: {
paths: {
Expand Down Expand Up @@ -117,8 +117,8 @@ export interface Hooks {

export type HttpMethod = 'get' | 'head' | 'post' | 'put' | 'delete' | 'patch';

export class InternalApp extends App {
render(
export class InternalServer extends Server {
respond(
request: Request,
options?: RequestOptions & {
prerender?: PrerenderOptions;
Expand Down

0 comments on commit f223f91

Please sign in to comment.