@sveltejs/kit 1.27.7 → 1.29.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "1.27.7",
3
+ "version": "1.29.0",
4
4
  "description": "The fastest way to build Svelte apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -113,7 +113,11 @@ export function fail(status, data) {
113
113
 
114
114
  const basic_param_pattern = /\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;
115
115
 
116
+ let warned = false;
117
+
116
118
  /**
119
+ * @deprecated Use `resolveRoute` from `$app/paths` instead.
120
+ *
117
121
  * Populate a route ID with params to resolve a pathname.
118
122
  * @example
119
123
  * ```js
@@ -130,6 +134,11 @@ const basic_param_pattern = /\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;
130
134
  * @returns {string}
131
135
  */
132
136
  export function resolvePath(id, params) {
137
+ if (!warned) {
138
+ console.warn('`resolvePath` is deprecated. Use `resolveRoute` from `$app/paths` instead.');
139
+ warned = true;
140
+ }
141
+
133
142
  const segments = get_route_segments(id);
134
143
  return (
135
144
  '/' +
@@ -1 +1,50 @@
1
1
  export { base, assets } from '__sveltekit/paths';
2
+ import { base } from '__sveltekit/paths';
3
+ import { get_route_segments } from '../../utils/routing.js';
4
+
5
+ const basic_param_pattern = /\[(\[)?(\.\.\.)?(\w+?)(?:=(\w+))?\]\]?/g;
6
+
7
+ /**
8
+ * Populate a route ID with params to resolve a pathname.
9
+ * @example
10
+ * ```js
11
+ * resolveRoute(
12
+ * `/blog/[slug]/[...somethingElse]`,
13
+ * {
14
+ * slug: 'hello-world',
15
+ * somethingElse: 'something/else'
16
+ * }
17
+ * ); // `/blog/hello-world/something/else`
18
+ * ```
19
+ * @param {string} id
20
+ * @param {Record<string, string | undefined>} params
21
+ * @returns {string}
22
+ */
23
+ export function resolveRoute(id, params) {
24
+ const segments = get_route_segments(id);
25
+ return (
26
+ base +
27
+ '/' +
28
+ segments
29
+ .map((segment) =>
30
+ segment.replace(basic_param_pattern, (_, optional, rest, name) => {
31
+ const param_value = params[name];
32
+
33
+ // This is nested so TS correctly narrows the type
34
+ if (!param_value) {
35
+ if (optional) return '';
36
+ if (rest && param_value !== undefined) return '';
37
+ throw new Error(`Missing parameter '${name}' in route ${id}`);
38
+ }
39
+
40
+ if (param_value.startsWith('/') || param_value.endsWith('/'))
41
+ throw new Error(
42
+ `Parameter '${name}' in route ${id} cannot start or end with a slash -- this would cause an invalid route like foo//bar`
43
+ );
44
+ return param_value;
45
+ })
46
+ )
47
+ .filter(Boolean)
48
+ .join('/')
49
+ );
50
+ }
@@ -559,7 +559,7 @@ export function create_client(app, target) {
559
559
  } else {
560
560
  data = (await node.universal.load.call(null, load_input)) ?? null;
561
561
  }
562
- data = data ? await unwrap_promises(data) : null;
562
+ data = data ? await unwrap_promises(data, route.id) : null;
563
563
  }
564
564
 
565
565
  return {
@@ -1,5 +1,6 @@
1
1
  import { parse, serialize } from 'cookie';
2
- import { normalize_path } from '../../utils/url.js';
2
+ import { normalize_path, resolve } from '../../utils/url.js';
3
+ import { warn_with_callsite } from './utils.js';
3
4
 
4
5
  /**
5
6
  * Tracks all cookies set during dev mode so we can emit warnings
@@ -14,6 +15,27 @@ const cookie_paths = {};
14
15
  */
15
16
  const MAX_COOKIE_SIZE = 4129;
16
17
 
18
+ /**
19
+ *
20
+ * @param {import('cookie').CookieSerializeOptions} opts
21
+ * @param {'set' | 'delete' | 'serialize'} method
22
+ */
23
+ function deprecate_missing_path(opts, method) {
24
+ if (opts.path === undefined) {
25
+ warn_with_callsite(
26
+ `Calling \`cookies.${method}(...)\` without specifying a \`path\` is deprecated, and will be disallowed in SvelteKit 2.0. Relative paths can be used`,
27
+ 1
28
+ );
29
+ }
30
+
31
+ if (opts.path === '') {
32
+ warn_with_callsite(
33
+ `Calling \`cookies.${method}(...)\` with \`path: ''\` will behave differently in SvelteKit 2.0. Instead of using the browser default behaviour, it will set the cookie path to the current pathname`,
34
+ 1
35
+ );
36
+ }
37
+ }
38
+
17
39
  /**
18
40
  * @param {Request} request
19
41
  * @param {URL} url
@@ -107,6 +129,7 @@ export function get_cookies(request, url, trailing_slash) {
107
129
  * @param {import('cookie').CookieSerializeOptions} opts
108
130
  */
109
131
  set(name, value, opts = {}) {
132
+ deprecate_missing_path(opts, 'set');
110
133
  set_internal(name, value, { ...defaults, ...opts });
111
134
  },
112
135
 
@@ -115,7 +138,10 @@ export function get_cookies(request, url, trailing_slash) {
115
138
  * @param {import('cookie').CookieSerializeOptions} opts
116
139
  */
117
140
  delete(name, opts = {}) {
141
+ deprecate_missing_path(opts, 'delete');
142
+
118
143
  cookies.set(name, '', {
144
+ path: default_path, // TODO 2.0 remove this
119
145
  ...opts,
120
146
  maxAge: 0
121
147
  });
@@ -126,7 +152,9 @@ export function get_cookies(request, url, trailing_slash) {
126
152
  * @param {string} value
127
153
  * @param {import('cookie').CookieSerializeOptions} opts
128
154
  */
129
- serialize(name, value, opts) {
155
+ serialize(name, value, opts = {}) {
156
+ deprecate_missing_path(opts, 'serialize');
157
+
130
158
  return serialize(name, value, {
131
159
  ...defaults,
132
160
  ...opts
@@ -174,7 +202,15 @@ export function get_cookies(request, url, trailing_slash) {
174
202
  * @param {import('cookie').CookieSerializeOptions} opts
175
203
  */
176
204
  function set_internal(name, value, opts) {
177
- const path = opts.path ?? default_path;
205
+ let path = opts.path;
206
+
207
+ if (!opts.domain || opts.domain === url.hostname) {
208
+ if (path) {
209
+ if (path[0] === '.') path = resolve(url.pathname, path);
210
+ } else {
211
+ path = default_path;
212
+ }
213
+ }
178
214
 
179
215
  new_cookies[name] = {
180
216
  name,
@@ -194,8 +230,10 @@ export function get_cookies(request, url, trailing_slash) {
194
230
  cookie_paths[name] ??= new Set();
195
231
 
196
232
  if (!value) {
233
+ // @ts-expect-error temporary
197
234
  cookie_paths[name].delete(path);
198
235
  } else {
236
+ // @ts-expect-error temporary
199
237
  cookie_paths[name].add(path);
200
238
  }
201
239
  }
@@ -14,7 +14,10 @@ import * as paths from '__sveltekit/paths';
14
14
  * @returns {typeof fetch}
15
15
  */
16
16
  export function create_fetch({ event, options, manifest, state, get_cookie_header, set_internal }) {
17
- return async (info, init) => {
17
+ /**
18
+ * @type {typeof fetch}
19
+ */
20
+ const server_fetch = async (info, init) => {
18
21
  const original_request = normalize_fetch_input(info, init, event.url);
19
22
 
20
23
  // some runtimes (e.g. Cloudflare) error if you access `request.mode`,
@@ -23,7 +26,7 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade
23
26
  let credentials =
24
27
  (info instanceof Request ? info.credentials : init?.credentials) ?? 'same-origin';
25
28
 
26
- return await options.hooks.handleFetch({
29
+ return options.hooks.handleFetch({
27
30
  event,
28
31
  request: original_request,
29
32
  fetch: async (info, init) => {
@@ -144,6 +147,15 @@ export function create_fetch({ event, options, manifest, state, get_cookie_heade
144
147
  }
145
148
  });
146
149
  };
150
+
151
+ // Don't make this function `async`! Otherwise, the user has to `catch` promises they use for streaming responses or else
152
+ // it will be an unhandled rejection. Instead, we add a `.catch(() => {})` ourselves below to this from happening.
153
+ return (input, init) => {
154
+ // See docs in fetch.js for why we need to do this
155
+ const response = server_fetch(input, init);
156
+ response.catch(() => {});
157
+ return response;
158
+ };
147
159
  }
148
160
 
149
161
  /**
@@ -125,9 +125,9 @@ export async function load_server_data({
125
125
  url
126
126
  });
127
127
 
128
- const data = result ? await unwrap_promises(result) : null;
128
+ const data = result ? await unwrap_promises(result, node.server_id) : null;
129
129
  if (__SVELTEKIT_DEV__) {
130
- validate_load_response(data, /** @type {string} */ (event.route.id));
130
+ validate_load_response(data, node.server_id);
131
131
  }
132
132
 
133
133
  done = true;
@@ -181,9 +181,9 @@ export async function load_data({
181
181
  parent
182
182
  });
183
183
 
184
- const data = result ? await unwrap_promises(result) : null;
184
+ const data = result ? await unwrap_promises(result, node.universal_id) : null;
185
185
  if (__SVELTEKIT_DEV__) {
186
- validate_load_response(data, /** @type {string} */ (event.route.id));
186
+ validate_load_response(data, node.universal_id);
187
187
  }
188
188
 
189
189
  return data;
@@ -195,13 +195,14 @@ export async function load_data({
195
195
  * @param {import('./types.js').Fetched[]} fetched
196
196
  * @param {boolean} csr
197
197
  * @param {Pick<Required<import('@sveltejs/kit').ResolveOptions>, 'filterSerializedResponseHeaders'>} resolve_opts
198
+ * @returns {typeof fetch}
198
199
  */
199
200
  export function create_universal_fetch(event, state, fetched, csr, resolve_opts) {
200
201
  /**
201
202
  * @param {URL | RequestInfo} input
202
203
  * @param {RequestInit} [init]
203
204
  */
204
- return async (input, init) => {
205
+ const universal_fetch = async (input, init) => {
205
206
  const cloned_body = input instanceof Request && input.body ? input.clone().body : null;
206
207
 
207
208
  const cloned_headers =
@@ -329,6 +330,15 @@ export function create_universal_fetch(event, state, fetched, csr, resolve_opts)
329
330
 
330
331
  return proxy;
331
332
  };
333
+
334
+ // Don't make this function `async`! Otherwise, the user has to `catch` promises they use for streaming responses or else
335
+ // it will be an unhandled rejection. Instead, we add a `.catch(() => {})` ourselves below to this from happening.
336
+ return (input, init) => {
337
+ // See docs in fetch.js for why we need to do this
338
+ const response = universal_fetch(input, init);
339
+ response.catch(() => {});
340
+ return response;
341
+ };
332
342
  }
333
343
 
334
344
  /**
@@ -350,12 +360,12 @@ async function stream_to_string(stream) {
350
360
 
351
361
  /**
352
362
  * @param {any} data
353
- * @param {string} [routeId]
363
+ * @param {string} [id]
354
364
  */
355
- function validate_load_response(data, routeId) {
365
+ function validate_load_response(data, id) {
356
366
  if (data != null && Object.getPrototypeOf(data) !== Object.prototype) {
357
367
  throw new Error(
358
- `a load function related to route '${routeId}' returned ${
368
+ `a load function in ${id} returned ${
359
369
  typeof data !== 'object'
360
370
  ? `a ${typeof data}`
361
371
  : data instanceof Response
@@ -159,3 +159,17 @@ export function stringify_uses(node) {
159
159
 
160
160
  return `"uses":{${uses.join(',')}}`;
161
161
  }
162
+
163
+ /**
164
+ * @param {string} message
165
+ * @param {number} offset
166
+ */
167
+ export function warn_with_callsite(message, offset = 0) {
168
+ if (DEV) {
169
+ const stack = fix_stack_trace(new Error()).split('\n');
170
+ const line = stack.at(3 + offset);
171
+ message += `\n${line}`;
172
+ }
173
+
174
+ console.warn(message);
175
+ }
@@ -1,10 +1,54 @@
1
+ import { DEV } from 'esm-env';
2
+
3
+ /** @type {Set<string> | null} */
4
+ let warned = null;
5
+
6
+ // TODO v2: remove all references to unwrap_promises
7
+
1
8
  /**
2
9
  * Given an object, return a new object where all top level values are awaited
3
10
  *
4
11
  * @param {Record<string, any>} object
12
+ * @param {string | null} [id]
5
13
  * @returns {Promise<Record<string, any>>}
6
14
  */
7
- export async function unwrap_promises(object) {
15
+ export async function unwrap_promises(object, id) {
16
+ if (DEV) {
17
+ /** @type {string[]} */
18
+ const promises = [];
19
+
20
+ for (const key in object) {
21
+ if (typeof object[key]?.then === 'function') {
22
+ promises.push(key);
23
+ }
24
+ }
25
+
26
+ if (promises.length > 0) {
27
+ if (!warned) warned = new Set();
28
+
29
+ const last = promises.pop();
30
+
31
+ const properties =
32
+ promises.length > 0
33
+ ? `${promises.map((p) => `"${p}"`).join(', ')} and "${last}" properties`
34
+ : `"${last}" property`;
35
+
36
+ const location = id ? `the \`load\` function in ${id}` : 'a `load` function';
37
+
38
+ const description = promises.length > 0 ? 'are promises' : 'is a promise';
39
+
40
+ const message = `The top-level ${properties} returned from ${location} ${description}.`;
41
+
42
+ if (!warned.has(message)) {
43
+ console.warn(
44
+ `\n${message}\n\nIn SvelteKit 2.0, these will longer be awaited automatically. To get rid of this warning, await all promises included as top-level properties in \`load\` return values.\n`
45
+ );
46
+
47
+ warned.add(message);
48
+ }
49
+ }
50
+ }
51
+
8
52
  for (const key in object) {
9
53
  if (typeof object[key]?.then === 'function') {
10
54
  return Object.fromEntries(
package/src/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // generated during release, do not modify
2
2
 
3
3
  /** @type {string} */
4
- export const VERSION = '1.27.7';
4
+ export const VERSION = '1.29.0';
package/types/index.d.ts CHANGED
@@ -1720,6 +1720,8 @@ declare module '@sveltejs/kit' {
1720
1720
  * */
1721
1721
  export function fail<T extends Record<string, unknown> | undefined = undefined>(status: number, data?: T | undefined): ActionFailure<T>;
1722
1722
  /**
1723
+ * @deprecated Use `resolveRoute` from `$app/paths` instead.
1724
+ *
1723
1725
  * Populate a route ID with params to resolve a pathname.
1724
1726
  * @example
1725
1727
  * ```js
@@ -1997,6 +1999,20 @@ declare module '$app/navigation' {
1997
1999
 
1998
2000
  declare module '$app/paths' {
1999
2001
  export { base, assets } from '__sveltekit/paths';
2002
+ /**
2003
+ * Populate a route ID with params to resolve a pathname.
2004
+ * @example
2005
+ * ```js
2006
+ * resolveRoute(
2007
+ * `/blog/[slug]/[...somethingElse]`,
2008
+ * {
2009
+ * slug: 'hello-world',
2010
+ * somethingElse: 'something/else'
2011
+ * }
2012
+ * ); // `/blog/hello-world/something/else`
2013
+ * ```
2014
+ * */
2015
+ export function resolveRoute(id: string, params: Record<string, string | undefined>): string;
2000
2016
  }
2001
2017
 
2002
2018
  declare module '$app/stores' {
@@ -99,6 +99,7 @@
99
99
  "beforeNavigate",
100
100
  "onNavigate",
101
101
  "afterNavigate",
102
+ "resolveRoute",
102
103
  "getStores",
103
104
  "page",
104
105
  "navigating",
@@ -118,6 +119,7 @@
118
119
  "../src/runtime/app/environment.js",
119
120
  "../src/runtime/app/forms.js",
120
121
  "../src/runtime/app/navigation.js",
122
+ "../src/runtime/app/paths.js",
121
123
  "../src/runtime/app/stores.js"
122
124
  ],
123
125
  "sourcesContent": [
@@ -134,7 +136,8 @@
134
136
  null,
135
137
  null,
136
138
  null,
139
+ null,
137
140
  null
138
141
  ],
139
- "mappings": "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"
142
+ "mappings": "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"
140
143
  }