Skip to content

Commit b3d3f5c

Browse files
authored
[chore] remove InternalHandle (#3541)
* [chore] remove InternalHandle * changeset * address code review comment * format
1 parent e905309 commit b3d3f5c

File tree

5 files changed

+50
-68
lines changed

5 files changed

+50
-68
lines changed

.changeset/tender-buses-talk.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
[chore] remove InternalHandle

packages/kit/src/runtime/server/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ export async function respond(request, options, state = {}) {
122122
let decoded = decodeURI(event.url.pathname);
123123

124124
if (options.paths.base) {
125-
if (!decoded.startsWith(options.paths.base)) return;
125+
if (!decoded.startsWith(options.paths.base)) {
126+
return new Response(undefined, { status: 404 });
127+
}
126128
decoded = decoded.slice(options.paths.base.length) || '/';
127129
}
128130

@@ -187,6 +189,10 @@ export async function respond(request, options, state = {}) {
187189
ssr
188190
});
189191
}
192+
193+
// we can't load the endpoint from our own manifest,
194+
// so we need to make an actual HTTP request
195+
return await fetch(request);
190196
},
191197

192198
// TODO remove for 1.0

packages/kit/src/runtime/server/page/load_node.js

Lines changed: 35 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -159,20 +159,11 @@ export async function load_node({
159159
}
160160
);
161161

162-
if (rendered) {
163-
if (state.prerender) {
164-
state.prerender.dependencies.set(relative, rendered);
165-
}
166-
167-
response = rendered;
168-
} else {
169-
// we can't load the endpoint from our own manifest,
170-
// so we need to make an actual HTTP request
171-
response = await fetch(new URL(requested, event.url).href, {
172-
method: opts.method || 'GET',
173-
headers: opts.headers
174-
});
162+
if (state.prerender) {
163+
state.prerender.dependencies.set(relative, rendered);
175164
}
165+
166+
response = rendered;
176167
} else {
177168
// external
178169
if (resolved.startsWith('//')) {
@@ -204,59 +195,50 @@ export async function load_node({
204195
response = await options.hooks.externalFetch.call(null, external_request);
205196
}
206197

207-
if (response) {
208-
const proxy = new Proxy(response, {
209-
get(response, key, _receiver) {
210-
async function text() {
211-
const body = await response.text();
212-
213-
/** @type {import('types/helper').ResponseHeaders} */
214-
const headers = {};
215-
for (const [key, value] of response.headers) {
216-
if (key === 'set-cookie') {
217-
set_cookie_headers = set_cookie_headers.concat(value);
218-
} else if (key !== 'etag') {
219-
headers[key] = value;
220-
}
198+
const proxy = new Proxy(response, {
199+
get(response, key, _receiver) {
200+
async function text() {
201+
const body = await response.text();
202+
203+
/** @type {import('types/helper').ResponseHeaders} */
204+
const headers = {};
205+
for (const [key, value] of response.headers) {
206+
if (key === 'set-cookie') {
207+
set_cookie_headers = set_cookie_headers.concat(value);
208+
} else if (key !== 'etag') {
209+
headers[key] = value;
221210
}
211+
}
222212

223-
if (!opts.body || typeof opts.body === 'string') {
224-
// prettier-ignore
225-
fetched.push({
213+
if (!opts.body || typeof opts.body === 'string') {
214+
// prettier-ignore
215+
fetched.push({
226216
url: requested,
227217
body: /** @type {string} */ (opts.body),
228218
json: `{"status":${response.status},"statusText":${s(response.statusText)},"headers":${s(headers)},"body":"${escape_json_string_in_html(body)}"}`
229219
});
230-
}
231-
232-
return body;
233220
}
234221

235-
if (key === 'text') {
236-
return text;
237-
}
238-
239-
if (key === 'json') {
240-
return async () => {
241-
return JSON.parse(await text());
242-
};
243-
}
222+
return body;
223+
}
244224

245-
// TODO arrayBuffer?
225+
if (key === 'text') {
226+
return text;
227+
}
246228

247-
return Reflect.get(response, key, response);
229+
if (key === 'json') {
230+
return async () => {
231+
return JSON.parse(await text());
232+
};
248233
}
249-
});
250234

251-
return proxy;
252-
}
235+
// TODO arrayBuffer?
236+
237+
return Reflect.get(response, key, response);
238+
}
239+
});
253240

254-
return (
255-
response ||
256-
new Response('Not found', {
257-
status: 404
258-
})
259-
);
241+
return proxy;
260242
},
261243
stuff: { ...stuff }
262244
};

packages/kit/types/hooks.d.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,6 @@ export interface Handle<Locals = Record<string, any>> {
2424
}): MaybePromise<Response>;
2525
}
2626

27-
// internally, `resolve` could return `undefined`, so we differentiate InternalHandle
28-
// from the public Handle type
29-
export interface InternalHandle<Locals = Record<string, any>> {
30-
(input: {
31-
event: RequestEvent<Locals>;
32-
resolve(event: RequestEvent<Locals>, opts?: ResolveOpts): MaybePromise<Response | undefined>;
33-
}): MaybePromise<Response | undefined>;
34-
}
35-
3627
export interface HandleError<Locals = Record<string, any>> {
3728
(input: { error: Error & { frame?: string }; event: RequestEvent<Locals> }): void;
3829
}

packages/kit/types/internal.d.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { OutputAsset, OutputChunk } from 'rollup';
22
import { InternalApp, SSRManifest } from './app';
33
import { Fallthrough, RequestHandler } from './endpoint';
44
import { Either } from './helper';
5-
import { ExternalFetch, GetSession, HandleError, InternalHandle, RequestEvent } from './hooks';
5+
import { ExternalFetch, GetSession, Handle, HandleError, RequestEvent } from './hooks';
66
import { Load } from './page';
77

88
export interface PrerenderOptions {
@@ -97,7 +97,7 @@ export type SSRNodeLoader = () => Promise<SSRNode>;
9797
export interface Hooks {
9898
externalFetch: ExternalFetch;
9999
getSession: GetSession;
100-
handle: InternalHandle;
100+
handle: Handle;
101101
handleError: HandleError;
102102
}
103103

@@ -228,7 +228,5 @@ export interface MethodOverride {
228228
}
229229

230230
export interface Respond {
231-
(request: Request, options: SSRRenderOptions, state?: SSRRenderState): Promise<
232-
Response | undefined
233-
>;
231+
(request: Request, options: SSRRenderOptions, state?: SSRRenderState): Promise<Response>;
234232
}

0 commit comments

Comments
 (0)