@sveltejs/kit 3.0.0-next.24 → 3.0.0-next.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/package.json +12 -4
  2. package/src/constants.js +6 -0
  3. package/src/core/adapt/builder.js +1 -2
  4. package/src/core/env.js +3 -6
  5. package/src/core/postbuild/prerender.js +2 -2
  6. package/src/core/sync/write_server.js +3 -17
  7. package/src/core/utils.js +10 -0
  8. package/src/exports/adapter.js +22 -0
  9. package/src/exports/public.d.ts +1 -1
  10. package/src/exports/vite/build/service-worker.js +98 -0
  11. package/src/exports/vite/dev/index.js +17 -3
  12. package/src/exports/vite/index.js +41 -411
  13. package/src/exports/vite/plugins/env-vars.js +42 -0
  14. package/src/exports/vite/plugins/guard.js +205 -0
  15. package/src/exports/vite/utils.js +97 -0
  16. package/src/runtime/app/server/remote/query.js +2 -2
  17. package/src/runtime/client/client.js +4 -4
  18. package/src/runtime/form-utils.js +11 -19
  19. package/src/runtime/server/data/index.js +11 -26
  20. package/src/runtime/server/errors.js +7 -10
  21. package/src/runtime/server/fetch.js +14 -16
  22. package/src/runtime/server/index.js +28 -25
  23. package/src/runtime/server/internal.js +34 -4
  24. package/src/runtime/server/page/actions.js +6 -8
  25. package/src/runtime/server/page/data_serializer.js +6 -10
  26. package/src/runtime/server/page/index.js +9 -14
  27. package/src/runtime/server/page/render.js +16 -29
  28. package/src/runtime/server/page/respond_with_error.js +7 -9
  29. package/src/runtime/server/remote-functions.js +125 -125
  30. package/src/runtime/server/respond.js +53 -28
  31. package/src/runtime/server/state.js +1 -0
  32. package/src/runtime/server/utils.js +0 -7
  33. package/src/runtime/utils.js +41 -0
  34. package/src/types/global-private.d.ts +8 -0
  35. package/src/types/internal.d.ts +7 -11
  36. package/src/utils/filesystem.js +1 -1
  37. package/src/utils/streaming.js +5 -15
  38. package/src/version.js +1 -1
  39. package/types/index.d.ts +20 -1
  40. package/types/index.d.ts.map +4 -1
@@ -1,14 +1,24 @@
1
1
  import { noop } from '../../utils/functions.js';
2
- import { IN_WEBCONTAINER } from '../../constants.js';
2
+ import { stream_from_iterable } from '../utils.js';
3
+ import { IN_WEBCONTAINER, REROUTED_URL_HEADER } from '../../constants.js';
3
4
  import { respond } from './respond.js';
4
5
  import { create_request_state } from './state.js';
5
6
  import { options, get_hooks } from '<sveltekit:generated>/server.js';
6
- import { set_read_implementation, set_manifest, fix_stack_trace } from './internal.js';
7
+ import {
8
+ set_read_implementation,
9
+ set_manifest,
10
+ set_options,
11
+ set_hooks,
12
+ fix_stack_trace
13
+ } from './internal.js';
7
14
  import { set_env } from '<sveltekit:generated>/env/config.js';
8
15
  import { init_tracing } from '@sveltejs/kit/internal/server';
9
16
  import { DEV } from 'esm-env';
10
17
  import { init_transport } from '#app/internal/transport';
11
18
 
19
+ // set at module scope because prerendering evaluates user modules before constructing a `Server`
20
+ set_options(options);
21
+
12
22
  /** @type {Promise<any>} */
13
23
  let init_promise;
14
24
 
@@ -48,16 +58,11 @@ if (DEV) {
48
58
  }
49
59
 
50
60
  export class Server {
51
- /** @type {import('types').SSROptions} */
52
- #options;
53
-
54
61
  /** @type {import('@sveltejs/kit').SSRManifest} */
55
62
  #manifest;
56
63
 
57
64
  /** @param {import('@sveltejs/kit').SSRManifest} manifest */
58
65
  constructor(manifest) {
59
- /** @type {import('types').SSROptions} */
60
- this.#options = options;
61
66
  this.#manifest = manifest;
62
67
 
63
68
  // Since AsyncLocalStorage is not working in webcontainers, we don't reset `sync_store`
@@ -105,14 +110,11 @@ export class Server {
105
110
  return result;
106
111
  }
107
112
 
108
- // TODO remove the cast once TypeScript's lib includes `ReadableStream.from`
109
- return /** @type {ReadableStream} */ (
110
- /** @type {any} */ (ReadableStream).from(
111
- (async function* () {
112
- const stream = await result;
113
- if (stream) yield* stream;
114
- })()
115
- )
113
+ return stream_from_iterable(
114
+ (async function* () {
115
+ const stream = await result;
116
+ if (stream) yield* stream;
117
+ })()
116
118
  );
117
119
  };
118
120
 
@@ -125,7 +127,7 @@ export class Server {
125
127
  try {
126
128
  const module = await get_hooks();
127
129
 
128
- this.#options.hooks = {
130
+ set_hooks({
129
131
  handle: module.handle || (({ event, resolve }) => resolve(event)),
130
132
  handleError:
131
133
  module.handleError ||
@@ -154,7 +156,7 @@ export class Server {
154
156
  }),
155
157
  handleFetch: module.handleFetch || (({ request, fetch }) => fetch(request)),
156
158
  reroute: module.reroute || noop
157
- };
159
+ });
158
160
 
159
161
  init_transport(module.transport ?? {});
160
162
 
@@ -163,14 +165,14 @@ export class Server {
163
165
  }
164
166
  } catch (e) {
165
167
  if (__SVELTEKIT_DEV__) {
166
- this.#options.hooks = {
168
+ set_hooks({
167
169
  handle: () => {
168
170
  throw e;
169
171
  },
170
172
  handleError: ({ error }) => console.error(error),
171
173
  handleFetch: ({ request, fetch }) => fetch(request),
172
174
  reroute: noop
173
- };
175
+ });
174
176
  } else {
175
177
  throw e;
176
178
  }
@@ -183,18 +185,19 @@ export class Server {
183
185
  * @param {import('types').InternalRequestOptions} options
184
186
  */
185
187
  async respond(request, options) {
186
- const response = await respond(
187
- request,
188
- this.#options,
189
- this.#manifest,
190
- create_request_state(options)
191
- );
188
+ const request_state = create_request_state(options);
189
+
190
+ const response = await respond(request, this.#manifest, request_state);
192
191
 
193
192
  if (DEV) {
194
193
  const error = decoded_responses.get(response);
195
194
  if (error) console.error(fix_stack_trace(error));
196
195
  }
197
196
 
197
+ if (request_state.rerouted_url) {
198
+ response.headers.set(REROUTED_URL_HEADER, request_state.rerouted_url);
199
+ }
200
+
198
201
  return response;
199
202
  }
200
203
  }
@@ -1,4 +1,5 @@
1
1
  /** @import { SSRManifest } from '@sveltejs/kit'; */
2
+ /** @import { ServerHooks, SSROptions } from 'types'; */
2
3
  import { restore, save } from './dev.js';
3
4
  import {
4
5
  has_data_suffix,
@@ -16,6 +17,8 @@ const styleText =
16
17
 
17
18
  const read_implementation_key = Symbol.for('sveltekit.read_implementation');
18
19
  const manifest_key = Symbol.for('sveltekit.manifest');
20
+ const options_key = Symbol.for('sveltekit.options');
21
+ const hooks_key = Symbol.for('sveltekit.hooks');
19
22
 
20
23
  export let read_implementation = /** @type {((path: string) => ReadableStream<any>) | null} */ (
21
24
  (__SVELTEKIT_DEV__ && restore(read_implementation_key)) ?? null
@@ -25,6 +28,12 @@ export let manifest = /** @type {SSRManifest} */ (
25
28
  (__SVELTEKIT_DEV__ && restore(manifest_key)) ?? null
26
29
  );
27
30
 
31
+ export let options = /** @type {SSROptions} */ (
32
+ (__SVELTEKIT_DEV__ && restore(options_key)) ?? null
33
+ );
34
+
35
+ export let hooks = /** @type {ServerHooks} */ ((__SVELTEKIT_DEV__ && restore(hooks_key)) ?? null);
36
+
28
37
  /**
29
38
  * @param {(path: string) => ReadableStream<any>} fn
30
39
  */
@@ -42,11 +51,28 @@ export function set_manifest(value) {
42
51
  if (__SVELTEKIT_DEV__) save(manifest_key, value);
43
52
  }
44
53
 
54
+ /**
55
+ * @param {SSROptions} value
56
+ */
57
+ export function set_options(value) {
58
+ options = value;
59
+ if (__SVELTEKIT_DEV__) save(options_key, value);
60
+ }
61
+
62
+ /**
63
+ * @param {ServerHooks} value
64
+ */
65
+ export function set_hooks(value) {
66
+ hooks = value;
67
+ if (__SVELTEKIT_DEV__) save(hooks_key, value);
68
+ }
69
+
45
70
  /**
46
71
  * @param {number} status
47
72
  * @param {Request} request
73
+ * @returns {string}
48
74
  */
49
- export function log_response(status, request) {
75
+ export function format_response(status, request) {
50
76
  const url = new URL(request.url);
51
77
  const requested = url.href.replace(url.origin, '');
52
78
 
@@ -59,13 +85,17 @@ export function log_response(status, request) {
59
85
  const pathname = strip_resolution_suffix(url.pathname) || '/';
60
86
  log += pathname + styleText('dim', requested.slice(pathname.length));
61
87
  } else if (has_remote_prefix(url)) {
62
- const id = /** @type {string} */ (strip_remote_prefix(url).split('/').pop());
63
- log += styleText('dim', url.pathname.slice(0, -id.length)) + id + styleText('dim', url.search);
88
+ const id = /** @type {string} */ (strip_remote_prefix(url));
89
+ const [file_hash, name, arg_hash] = id.split('/');
90
+
91
+ log += styleText('dim', `${url.pathname.slice(0, -id.length)}${file_hash}/`) + name;
92
+ if (arg_hash) log += styleText('dim', `/${arg_hash}`);
93
+ if (url.search) log += styleText('dim', url.search);
64
94
  } else {
65
95
  log += requested;
66
96
  }
67
97
 
68
- console.log(log);
98
+ return log;
69
99
  }
70
100
 
71
101
  export { fix_stack_trace, set_fix_stack_trace } from './sourcemaps.js';
@@ -1,6 +1,6 @@
1
1
  /** @import { RequestEvent, Actions } from '@sveltejs/kit' */
2
2
  /** @import { ActionResult } from '$app/forms' */
3
- /** @import { SSROptions, SSRNode, ServerNode, ServerActionResult } from 'types' */
3
+ /** @import { SSRNode, ServerNode, ServerActionResult } from 'types' */
4
4
  import { DEV } from 'esm-env';
5
5
  import { HttpError, Redirect, ActionFailure, SvelteKitError } from '@sveltejs/kit/internal';
6
6
  import { with_request_store, merge_tracing, record_span } from '@sveltejs/kit/internal/server';
@@ -23,28 +23,26 @@ export function is_action_json_request(event) {
23
23
  /**
24
24
  * @param {RequestEvent} event
25
25
  * @param {import('types').RequestState} state
26
- * @param {SSROptions} options
27
26
  * @param {SSRNode['server'] | undefined} server
28
27
  */
29
- export async function handle_action_json_request(event, state, options, server) {
28
+ export async function handle_action_json_request(event, state, server) {
30
29
  const result = await handle_action_request(event, state, server);
31
- return action_result_json(event, state, options, result);
30
+ return action_result_json(event, state, result);
32
31
  }
33
32
 
34
33
  /**
35
34
  * @param {RequestEvent} event
36
35
  * @param {import('types').RequestState} state
37
- * @param {SSROptions} options
38
36
  * @param {ServerActionResult} result
39
37
  * @returns {Promise<Response>}
40
38
  */
41
- async function action_result_json(event, state, options, result) {
39
+ async function action_result_json(event, state, result) {
42
40
  if (result.type === 'redirect') {
43
41
  return action_json(result);
44
42
  }
45
43
 
46
44
  if (result.type === 'error') {
47
- const error = await handle_error_and_jsonify(event, state, options, result.error);
45
+ const error = await handle_error_and_jsonify(event, state, result.error);
48
46
  return action_json({ ...result, error }, { status: error.status });
49
47
  }
50
48
 
@@ -64,7 +62,7 @@ async function action_result_json(event, state, options, result) {
64
62
  { status: result.status }
65
63
  );
66
64
  } catch (e) {
67
- return action_result_json(event, state, options, action_error_result(e, result.location));
65
+ return action_result_json(event, state, action_error_result(e, result.location));
68
66
  }
69
67
  }
70
68
 
@@ -1,7 +1,7 @@
1
1
  import * as devalue from 'devalue';
2
2
  import { compact } from '../../../utils/array.js';
3
3
  import { create_async_iterator } from '../../../utils/streaming.js';
4
- import { clarify_devalue_error, get_global_name, serialize_uses } from '../utils.js';
4
+ import { clarify_devalue_error, serialize_uses } from '../utils.js';
5
5
  import { handle_error_and_jsonify } from '../errors.js';
6
6
  import { encoders } from '#app/internal/transport';
7
7
 
@@ -10,15 +10,14 @@ import { encoders } from '#app/internal/transport';
10
10
  * async iterable containing their resolutions
11
11
  * @param {import('@sveltejs/kit').RequestEvent} event
12
12
  * @param {import('types').RequestState} state
13
- * @param {import('types').SSROptions} options
14
13
  * @returns {import('./types.js').ServerDataSerializer}
15
14
  */
16
- export function server_data_serializer(event, state, options) {
15
+ export function server_data_serializer(event, state) {
17
16
  let promise_id = 1;
18
17
  let max_nodes = -1;
19
18
 
20
19
  const iterator = create_async_iterator();
21
- const global = get_global_name(options);
20
+ const global = __SVELTEKIT_GLOBAL_NAME__;
22
21
 
23
22
  /** @param {number} index */
24
23
  function get_replacer(index) {
@@ -31,7 +30,7 @@ export function server_data_serializer(event, state, options) {
31
30
  .then(/** @param {any} data */ (data) => ({ data }))
32
31
  .catch(
33
32
  /** @param {any} error */ async (error) => ({
34
- error: await handle_error_and_jsonify(event, state, options, error)
33
+ error: await handle_error_and_jsonify(event, state, error)
35
34
  })
36
35
  )
37
36
  .then(
@@ -46,7 +45,6 @@ export function server_data_serializer(event, state, options) {
46
45
  error = await handle_error_and_jsonify(
47
46
  event,
48
47
  state,
49
- options,
50
48
  new Error(`Failed to serialize promise while rendering ${event.route.id}`, {
51
49
  cause: e
52
50
  })
@@ -127,10 +125,9 @@ export function server_data_serializer(event, state, options) {
127
125
  * async iterable containing their resolutions
128
126
  * @param {import('@sveltejs/kit').RequestEvent} event
129
127
  * @param {import('types').RequestState} state
130
- * @param {import('types').SSROptions} options
131
128
  * @returns {import('./types.js').ServerDataSerializerJson}
132
129
  */
133
- export function server_data_serializer_json(event, state, options) {
130
+ export function server_data_serializer_json(event, state) {
134
131
  let promise_id = 1;
135
132
 
136
133
  const iterator = create_async_iterator();
@@ -152,7 +149,7 @@ export function server_data_serializer_json(event, state, options) {
152
149
  .catch(
153
150
  /** @param {any} e */ async (e) => {
154
151
  key = 'error';
155
- return handle_error_and_jsonify(event, state, options, /** @type {any} */ (e));
152
+ return handle_error_and_jsonify(event, state, /** @type {any} */ (e));
156
153
  }
157
154
  )
158
155
  .then(
@@ -165,7 +162,6 @@ export function server_data_serializer_json(event, state, options) {
165
162
  const error = await handle_error_and_jsonify(
166
163
  event,
167
164
  state,
168
- options,
169
165
  new Error(`Failed to serialize promise while rendering ${event.route.id}`, {
170
166
  cause: e
171
167
  })
@@ -1,5 +1,5 @@
1
1
  /** @import { RequestEvent, SSRManifest } from '@sveltejs/kit' */
2
- /** @import { PageNodeIndexes, RequestState, RequiredResolveOptions, ServerDataNode, SSRNode, SSROptions } from 'types' */
2
+ /** @import { PageNodeIndexes, RequestState, RequiredResolveOptions, ServerDataNode, SSRNode } from 'types' */
3
3
  import { text } from '@sveltejs/kit';
4
4
  import { Redirect } from '@sveltejs/kit/internal';
5
5
  import { compact } from '../../../utils/array.js';
@@ -32,13 +32,12 @@ const MAX_DEPTH = 10;
32
32
  * @param {RequestEvent} event
33
33
  * @param {RequestState} state
34
34
  * @param {PageNodeIndexes} page
35
- * @param {SSROptions} options
36
35
  * @param {SSRManifest} manifest
37
36
  * @param {import('../../../utils/page_nodes.js').PageNodes} nodes
38
37
  * @param {RequiredResolveOptions} resolve_opts
39
38
  * @returns {Promise<Response>}
40
39
  */
41
- export async function render_page(event, state, page, options, manifest, nodes, resolve_opts) {
40
+ export async function render_page(event, state, page, manifest, nodes, resolve_opts) {
42
41
  if (state.depth > MAX_DEPTH) {
43
42
  // infinite request cycle detected
44
43
  return text(`Not found: ${event.url.pathname}`, {
@@ -48,7 +47,7 @@ export async function render_page(event, state, page, options, manifest, nodes,
48
47
 
49
48
  if (is_action_json_request(event)) {
50
49
  const node = await manifest._.nodes[page.leaf]();
51
- return handle_action_json_request(event, state, options, node?.server);
50
+ return handle_action_json_request(event, state, node?.server);
52
51
  }
53
52
 
54
53
  try {
@@ -150,10 +149,9 @@ export async function render_page(event, state, page, options, manifest, nodes,
150
149
  error: null,
151
150
  event,
152
151
  state,
153
- options,
154
152
  manifest,
155
153
  resolve_opts,
156
- data_serializer: server_data_serializer(event, state, options)
154
+ data_serializer: server_data_serializer(event, state)
157
155
  });
158
156
  }
159
157
 
@@ -163,10 +161,10 @@ export async function render_page(event, state, page, options, manifest, nodes,
163
161
  /** @type {Error | null} */
164
162
  let load_error = null;
165
163
 
166
- const data_serializer = server_data_serializer(event, state, options);
164
+ const data_serializer = server_data_serializer(event, state);
167
165
  const data_serializer_json =
168
166
  (state.prerendering || state.prerender_default === true) && should_prerender_data
169
- ? server_data_serializer_json(event, state, options)
167
+ ? server_data_serializer_json(event, state)
170
168
  : null;
171
169
 
172
170
  /** @type {Array<Promise<ServerDataNode | null>>} */
@@ -274,7 +272,7 @@ export async function render_page(event, state, page, options, manifest, nodes,
274
272
  return redirect_response(err.status, err.location);
275
273
  }
276
274
 
277
- const error = await handle_error_and_jsonify(event, state, options, err);
275
+ const error = await handle_error_and_jsonify(event, state, err);
278
276
  const status = error.status;
279
277
 
280
278
  for (const { error: index, idx } of nearest_error_pages(i, branch, page.errors)) {
@@ -293,7 +291,6 @@ export async function render_page(event, state, page, options, manifest, nodes,
293
291
  return await render_response({
294
292
  event,
295
293
  state,
296
- options,
297
294
  manifest,
298
295
  resolve_opts,
299
296
  page_config: {
@@ -311,7 +308,7 @@ export async function render_page(event, state, page, options, manifest, nodes,
311
308
 
312
309
  // if we're still here, it means the error happened in the root layout,
313
310
  // which means we have to fall back to error.html
314
- return static_error_page(options, status, error.message);
311
+ return static_error_page(status, error.message);
315
312
  }
316
313
  } else {
317
314
  // push an empty slot so we can rewind past gaps to the
@@ -339,7 +336,6 @@ export async function render_page(event, state, page, options, manifest, nodes,
339
336
  return await render_response({
340
337
  event,
341
338
  state,
342
- options,
343
339
  manifest,
344
340
  resolve_opts,
345
341
  page_config: {
@@ -351,7 +347,7 @@ export async function render_page(event, state, page, options, manifest, nodes,
351
347
  branch: compact(branch),
352
348
  action_result,
353
349
  fetched,
354
- data_serializer: !ssr ? server_data_serializer(event, state, options) : data_serializer,
350
+ data_serializer: !ssr ? server_data_serializer(event, state) : data_serializer,
355
351
  error_components: await load_error_components(ssr, branch, page, manifest)
356
352
  });
357
353
  } catch (e) {
@@ -365,7 +361,6 @@ export async function render_page(event, state, page, options, manifest, nodes,
365
361
  return await respond_with_error({
366
362
  event,
367
363
  state,
368
- options,
369
364
  manifest,
370
365
  error: e,
371
366
  resolve_opts
@@ -18,8 +18,8 @@ import {
18
18
  route_id_resolution_pathname
19
19
  } from '../../pathname.js';
20
20
  import { try_get_request_store, with_request_store } from '@sveltejs/kit/internal/server';
21
- import { text_encoder } from '../../utils.js';
22
- import { count_non_ssi_comments, get_global_name } from '../utils.js';
21
+ import { stream_text } from '../../utils.js';
22
+ import { count_non_ssi_comments } from '../utils.js';
23
23
  import { handle_error_and_jsonify } from '../errors.js';
24
24
  import * as env from '<sveltekit:generated>/env/config.js';
25
25
  import { collect_remote_data } from '../remote-functions.js';
@@ -27,6 +27,7 @@ import Root from '../../components/root.svelte';
27
27
  import { render } from 'svelte/server';
28
28
  import { Props, RenderNode } from '../../props.svelte.js';
29
29
  import { has_custom_transporters, uneval } from '#app/internal/transport';
30
+ import { options } from '../internal.js';
30
31
 
31
32
  // TODO rename this function/module
32
33
 
@@ -35,7 +36,6 @@ import { has_custom_transporters, uneval } from '#app/internal/transport';
35
36
  * @param {{
36
37
  * branch: Array<import('./types.js').Loaded>;
37
38
  * fetched: Array<import('./types.js').Fetched>;
38
- * options: import('types').SSROptions;
39
39
  * manifest: import('@sveltejs/kit').SSRManifest;
40
40
  * page_config: { ssr: boolean; csr: boolean };
41
41
  * status: number;
@@ -51,7 +51,6 @@ import { has_custom_transporters, uneval } from '#app/internal/transport';
51
51
  export async function render_response({
52
52
  branch,
53
53
  fetched,
54
- options,
55
54
  manifest,
56
55
  page_config,
57
56
  status,
@@ -134,7 +133,7 @@ export async function render_response({
134
133
  if (!paths.assets || (paths.assets[0] === '/' && paths.assets !== SVELTE_KIT_ASSETS)) {
135
134
  assets = base;
136
135
  }
137
- } else if (options.hash_routing) {
136
+ } else if (__SVELTEKIT_HASH_ROUTING__) {
138
137
  // we have to assume that we're in the right place
139
138
  base_expression = "new URL('.', location).pathname.slice(0, -1)";
140
139
  }
@@ -203,7 +202,7 @@ export async function render_response({
203
202
  throw e;
204
203
  }
205
204
 
206
- const handled = handle_error_and_jsonify(event, render_state, options, e);
205
+ const handled = handle_error_and_jsonify(event, render_state, e);
207
206
 
208
207
  // TODO 4.0 make this an async function and await `handled`
209
208
  if (handled instanceof Promise) {
@@ -312,7 +311,10 @@ export async function render_response({
312
311
  * @param {string[]} attributes
313
312
  */
314
313
  const add_preload = (path, attributes) => {
315
- if (options.link_header_preload && !(state.prerendering || state.prerender_default === true)) {
314
+ if (
315
+ __SVELTEKIT_LINK_HEADER_PRELOAD__ &&
316
+ !(state.prerendering || state.prerender_default === true)
317
+ ) {
316
318
  link_headers.add(`<${encodeURI(path)}>; ${attributes.join('; ')}; nopush`);
317
319
  } else {
318
320
  head.add_link_tag(path, attributes);
@@ -329,7 +331,7 @@ export async function render_response({
329
331
  // include them in disabled state so that Vite can detect them and doesn't try to add them
330
332
  attributes.push('disabled', 'media="(max-width: 0)"');
331
333
  } else {
332
- if (options.link_header_preload && resolve_opts.preload({ type: 'css', path })) {
334
+ if (__SVELTEKIT_LINK_HEADER_PRELOAD__ && resolve_opts.preload({ type: 'css', path })) {
333
335
  link_headers.add(`<${encodeURI(path)}>; rel="preload"; as="style"; nopush`);
334
336
  }
335
337
  }
@@ -347,7 +349,7 @@ export async function render_response({
347
349
  }
348
350
  }
349
351
 
350
- const global = get_global_name(options);
352
+ const global = __SVELTEKIT_GLOBAL_NAME__;
351
353
  const { data, chunks } = data_serializer.get_data(csp);
352
354
 
353
355
  if (page_config.ssr && page_config.csr) {
@@ -509,7 +511,7 @@ export async function render_response({
509
511
  ); // make output after it's put together with the rest more readable
510
512
  hydrate.push(`params: ${devalue.uneval(event.params)}`, `server_route: ${stringified}`);
511
513
  }
512
- } else if (options.embedded) {
514
+ } else if (__SVELTEKIT_EMBEDDED__) {
513
515
  hydrate.push(`params: ${devalue.uneval(event.params)}`, `route: ${s(event.route)}`);
514
516
  }
515
517
 
@@ -517,7 +519,7 @@ export async function render_response({
517
519
  args.push(`{\n${indent}\t${hydrate.join(`,\n${indent}\t`)}\n${indent}}`);
518
520
  }
519
521
 
520
- const remote_data = await collect_remote_data({}, event, state, options);
522
+ const remote_data = await collect_remote_data({}, event, state);
521
523
 
522
524
  const serialized_data =
523
525
  Object.keys(remote_data).length > 0
@@ -549,7 +551,7 @@ export async function render_response({
549
551
  blocks.push(boot);
550
552
  }
551
553
 
552
- if (options.service_worker) {
554
+ if (__SVELTEKIT_SERVICE_WORKER__) {
553
555
  let opts = ", { type: 'module' }";
554
556
  if (options.service_worker_options != null) {
555
557
  const service_worker_options = { ...options.service_worker_options, type: 'module' };
@@ -610,7 +612,7 @@ export async function render_response({
610
612
  headers.set('content-security-policy-report-only', report_only_header);
611
613
  }
612
614
 
613
- if (options.link_header_preload && link_headers.size) {
615
+ if (__SVELTEKIT_LINK_HEADER_PRELOAD__ && link_headers.size) {
614
616
  headers.set('link', Array.from(link_headers).join(', '));
615
617
  }
616
618
  }
@@ -657,22 +659,7 @@ export async function render_response({
657
659
  status,
658
660
  headers
659
661
  })
660
- : new Response(
661
- new ReadableStream({
662
- async start(controller) {
663
- controller.enqueue(text_encoder.encode(transformed + '\n'));
664
- for await (const chunk of chunks) {
665
- if (chunk.length) controller.enqueue(text_encoder.encode(chunk));
666
- }
667
- controller.close();
668
- },
669
-
670
- type: 'bytes'
671
- }),
672
- {
673
- headers
674
- }
675
- );
662
+ : new Response(stream_text(transformed + '\n', chunks), { headers });
676
663
  }
677
664
 
678
665
  class Head {
@@ -14,17 +14,16 @@ import { server_data_serializer } from './data_serializer.js';
14
14
  * @param {{
15
15
  * event: import('@sveltejs/kit').RequestEvent;
16
16
  * state: import('types').RequestState;
17
- * options: import('types').SSROptions;
18
17
  * manifest: import('@sveltejs/kit').SSRManifest;
19
18
  * error: unknown;
20
19
  * resolve_opts: import('types').RequiredResolveOptions;
21
20
  * }} opts
22
21
  */
23
- export async function respond_with_error({ event, state, options, manifest, error, resolve_opts }) {
22
+ export async function respond_with_error({ event, state, manifest, error, resolve_opts }) {
24
23
  // reroute to the fallback page to prevent an infinite chain of requests.
25
24
  if (event.request.headers.get('x-sveltekit-error')) {
26
- const transformed = await handle_error_and_jsonify(event, state, options, error);
27
- return static_error_page(options, transformed.status, transformed.message);
25
+ const transformed = await handle_error_and_jsonify(event, state, error);
26
+ return static_error_page(transformed.status, transformed.message);
28
27
  }
29
28
 
30
29
  /** @type {import('./types.js').Fetched[]} */
@@ -35,9 +34,9 @@ export async function respond_with_error({ event, state, options, manifest, erro
35
34
  const nodes = new PageNodes([default_layout]);
36
35
  const ssr = nodes.ssr();
37
36
  const csr = nodes.csr();
38
- const data_serializer = server_data_serializer(event, state, options);
37
+ const data_serializer = server_data_serializer(event, state);
39
38
  // Do this here first in case the awaits below before rendering themselves error
40
- const transformed = await handle_error_and_jsonify(event, state, options, error);
39
+ const transformed = await handle_error_and_jsonify(event, state, error);
41
40
 
42
41
  if (ssr) {
43
42
  state.error = true;
@@ -80,7 +79,6 @@ export async function respond_with_error({ event, state, options, manifest, erro
80
79
  }
81
80
 
82
81
  return await render_response({
83
- options,
84
82
  manifest,
85
83
  page_config: {
86
84
  ssr,
@@ -103,8 +101,8 @@ export async function respond_with_error({ event, state, options, manifest, erro
103
101
  return redirect_response(e.status, e.location);
104
102
  }
105
103
 
106
- const transformed = await handle_error_and_jsonify(event, state, options, e);
104
+ const transformed = await handle_error_and_jsonify(event, state, e);
107
105
 
108
- return static_error_page(options, transformed.status, transformed.message);
106
+ return static_error_page(transformed.status, transformed.message);
109
107
  }
110
108
  }