@sveltejs/kit 3.0.0-next.2 → 3.0.0-next.21

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 (195) hide show
  1. package/package.json +62 -36
  2. package/src/cli.js +15 -12
  3. package/src/constants.js +6 -1
  4. package/src/core/adapt/builder.js +66 -72
  5. package/src/core/adapt/index.js +17 -6
  6. package/src/core/config/index.js +134 -80
  7. package/src/core/config/options.js +295 -273
  8. package/src/core/config/types.d.ts +1 -1
  9. package/src/core/env.js +146 -16
  10. package/src/core/generate_manifest/index.js +18 -15
  11. package/src/core/postbuild/analyse.js +8 -20
  12. package/src/core/postbuild/crawl.js +22 -6
  13. package/src/core/postbuild/entities.js +8 -2
  14. package/src/core/postbuild/fallback.js +4 -2
  15. package/src/core/postbuild/prerender.js +222 -70
  16. package/src/core/postbuild/queue.js +2 -1
  17. package/src/core/sync/create_manifest_data/conflict.js +1 -1
  18. package/src/core/sync/create_manifest_data/index.js +82 -62
  19. package/src/core/sync/sync.js +40 -31
  20. package/src/core/sync/ts.js +1 -1
  21. package/src/core/sync/utils.js +22 -2
  22. package/src/core/sync/{write_non_ambient.js → write_app_types.js} +107 -58
  23. package/src/core/sync/write_client_manifest.js +14 -29
  24. package/src/core/sync/write_env.js +7 -5
  25. package/src/core/sync/write_server.js +37 -45
  26. package/src/core/sync/write_tsconfig/index.js +274 -0
  27. package/src/core/sync/write_tsconfig/test-app/package.json +7 -0
  28. package/src/core/sync/write_tsconfig/utils.js +77 -0
  29. package/src/core/sync/write_tsconfig/validate.js +128 -0
  30. package/src/core/sync/write_types/index.js +127 -123
  31. package/src/core/utils.js +30 -5
  32. package/src/exports/env/index.js +77 -0
  33. package/src/exports/env/public.d.ts +55 -0
  34. package/src/exports/hooks/index.js +3 -9
  35. package/src/exports/hooks/public.d.ts +195 -0
  36. package/src/exports/hooks/sequence.js +9 -6
  37. package/src/exports/index.js +52 -29
  38. package/src/exports/internal/client.js +5 -0
  39. package/src/exports/internal/env.js +8 -5
  40. package/src/exports/internal/index.js +1 -90
  41. package/src/exports/internal/{event.js → server/event.js} +2 -3
  42. package/src/exports/internal/server/index.js +37 -0
  43. package/src/exports/internal/server/telemetry.js +95 -0
  44. package/src/exports/internal/shared.js +90 -0
  45. package/src/exports/node/index.js +64 -22
  46. package/src/exports/params/index.js +70 -0
  47. package/src/exports/params/public.d.ts +63 -0
  48. package/src/exports/public.d.ts +50 -1733
  49. package/src/exports/remote/index.js +11 -0
  50. package/src/exports/remote/public.d.ts +519 -0
  51. package/src/exports/url.js +86 -0
  52. package/src/exports/vite/build/build_server.js +54 -65
  53. package/src/exports/vite/build/remote.js +24 -19
  54. package/src/exports/vite/build/utils.js +0 -8
  55. package/src/exports/vite/dev/index.js +218 -146
  56. package/src/exports/vite/index.js +1590 -858
  57. package/src/exports/vite/module_ids.js +2 -2
  58. package/src/exports/vite/preview/index.js +40 -32
  59. package/src/exports/vite/public.d.ts +588 -0
  60. package/src/exports/vite/utils.js +84 -46
  61. package/src/pathname.js +55 -0
  62. package/src/runner.js +15 -0
  63. package/src/runtime/app/env/internal.js +4 -4
  64. package/src/runtime/app/env/types.d.ts +1 -1
  65. package/src/runtime/app/environment/index.js +3 -3
  66. package/src/runtime/app/{forms.js → forms/index.js} +73 -42
  67. package/src/runtime/app/forms/public.d.ts +2 -0
  68. package/src/runtime/app/forms/types.d.ts +56 -0
  69. package/src/runtime/app/internal/transport.js +53 -0
  70. package/src/runtime/app/manifest/index.js +1 -0
  71. package/src/runtime/app/{navigation.js → navigation/index.js} +2 -1
  72. package/src/runtime/app/navigation/public.d.ts +237 -0
  73. package/src/runtime/app/paths/client.js +37 -37
  74. package/src/runtime/app/paths/index.js +1 -1
  75. package/src/runtime/app/paths/internal/client.js +34 -2
  76. package/src/runtime/app/paths/internal/server.js +6 -23
  77. package/src/runtime/app/paths/internal.d.ts +3 -0
  78. package/src/runtime/app/paths/public.d.ts +1 -29
  79. package/src/runtime/app/paths/server.js +36 -17
  80. package/src/runtime/app/paths/types.d.ts +11 -19
  81. package/src/runtime/app/server/index.js +2 -2
  82. package/src/runtime/app/server/public.d.ts +201 -0
  83. package/src/runtime/app/server/remote/command.js +13 -11
  84. package/src/runtime/app/server/remote/form.js +61 -39
  85. package/src/runtime/app/server/remote/prerender.js +45 -45
  86. package/src/runtime/app/server/remote/query.js +106 -108
  87. package/src/runtime/app/server/remote/requested.js +27 -19
  88. package/src/runtime/app/server/remote/shared.js +76 -76
  89. package/src/runtime/app/service-worker/index.js +24 -0
  90. package/src/runtime/app/state/client.js +4 -2
  91. package/src/runtime/app/state/index.js +7 -5
  92. package/src/runtime/app/state/public.d.ts +72 -0
  93. package/src/runtime/app/state/server.js +3 -0
  94. package/src/runtime/app/stores.js +15 -78
  95. package/src/runtime/client/bundle.js +1 -1
  96. package/src/runtime/client/client-entry.js +3 -0
  97. package/src/runtime/client/client.js +1336 -648
  98. package/src/runtime/client/constants.js +3 -6
  99. package/src/runtime/client/entry.js +24 -3
  100. package/src/runtime/client/fetcher.js +25 -25
  101. package/src/runtime/client/ndjson.js +1 -1
  102. package/src/runtime/client/parse.js +1 -1
  103. package/src/runtime/client/payload.js +17 -0
  104. package/src/runtime/client/remote-functions/cache.svelte.js +3 -1
  105. package/src/runtime/client/remote-functions/command.svelte.js +37 -61
  106. package/src/runtime/client/remote-functions/form.svelte.js +267 -178
  107. package/src/runtime/client/remote-functions/prerender.svelte.js +32 -11
  108. package/src/runtime/client/remote-functions/query/index.js +10 -17
  109. package/src/runtime/client/remote-functions/query/instance.svelte.js +64 -18
  110. package/src/runtime/client/remote-functions/query/proxy.js +5 -5
  111. package/src/runtime/client/remote-functions/query-batch.svelte.js +61 -70
  112. package/src/runtime/client/remote-functions/query-live/index.js +1 -1
  113. package/src/runtime/client/remote-functions/query-live/instance.svelte.js +63 -21
  114. package/src/runtime/client/remote-functions/query-live/iterator.js +15 -12
  115. package/src/runtime/client/remote-functions/query-live/proxy.js +2 -12
  116. package/src/runtime/client/remote-functions/shared.svelte.js +90 -65
  117. package/src/runtime/client/snapshots.js +147 -0
  118. package/src/runtime/client/state.svelte.js +94 -55
  119. package/src/runtime/client/stream.js +3 -2
  120. package/src/runtime/client/types.d.ts +13 -9
  121. package/src/runtime/client/utils.js +22 -110
  122. package/src/runtime/components/root.svelte +56 -0
  123. package/src/runtime/env/dynamic/private.js +7 -0
  124. package/src/runtime/env/dynamic/public.js +7 -0
  125. package/src/runtime/env/static/private.js +6 -0
  126. package/src/runtime/env/static/public.js +6 -0
  127. package/src/runtime/form-utils.js +172 -61
  128. package/src/runtime/pathname.js +20 -32
  129. package/src/runtime/props.svelte.js +72 -0
  130. package/src/runtime/server/constants.js +0 -3
  131. package/src/runtime/server/cookie.js +72 -55
  132. package/src/runtime/server/csrf.js +65 -0
  133. package/src/runtime/server/data/index.js +49 -53
  134. package/src/runtime/server/dev.js +22 -0
  135. package/src/runtime/server/endpoint.js +6 -7
  136. package/src/runtime/server/env_module.js +0 -5
  137. package/src/runtime/server/errors.js +160 -0
  138. package/src/runtime/server/fetch.js +32 -39
  139. package/src/runtime/server/index.js +90 -64
  140. package/src/runtime/server/internal.js +71 -0
  141. package/src/runtime/server/page/actions.js +85 -64
  142. package/src/runtime/server/page/crypto.js +2 -2
  143. package/src/runtime/server/page/csp.js +88 -104
  144. package/src/runtime/server/page/data_serializer.js +24 -25
  145. package/src/runtime/server/page/index.js +36 -53
  146. package/src/runtime/server/page/load_data.js +50 -57
  147. package/src/runtime/server/page/render.js +173 -239
  148. package/src/runtime/server/page/respond_with_error.js +17 -31
  149. package/src/runtime/server/page/serialize_data.js +2 -13
  150. package/src/runtime/server/page/server_routing.js +85 -26
  151. package/src/runtime/server/remote-functions.js +640 -0
  152. package/src/runtime/server/respond.js +190 -131
  153. package/src/runtime/server/sourcemaps.js +183 -0
  154. package/src/runtime/server/state.js +53 -0
  155. package/src/runtime/server/utils.js +13 -155
  156. package/src/runtime/shared.js +20 -40
  157. package/src/runtime/utils.js +3 -0
  158. package/src/types/ambient-private.d.ts +11 -1
  159. package/src/types/ambient.d.ts +87 -36
  160. package/src/types/global-private.d.ts +25 -25
  161. package/src/types/internal.d.ts +163 -157
  162. package/src/types/private.d.ts +41 -1
  163. package/src/utils/error.js +28 -4
  164. package/src/utils/escape.js +9 -25
  165. package/src/utils/features.js +1 -1
  166. package/src/utils/filesystem.js +1 -23
  167. package/src/utils/fork.js +7 -2
  168. package/src/utils/hash.js +21 -0
  169. package/src/utils/http.js +8 -7
  170. package/src/utils/import.js +9 -2
  171. package/src/utils/imports.js +83 -0
  172. package/src/utils/mime.js +9 -0
  173. package/src/utils/page_nodes.js +6 -7
  174. package/src/utils/params.js +67 -0
  175. package/src/utils/regex.js +9 -0
  176. package/src/utils/routing.js +145 -73
  177. package/src/utils/shared-iterator.js +5 -0
  178. package/src/utils/streaming.js +14 -4
  179. package/src/utils/url.js +33 -2
  180. package/src/version.js +1 -1
  181. package/types/index.d.ts +2616 -2433
  182. package/types/index.d.ts.map +120 -106
  183. package/src/core/sync/write_ambient.js +0 -18
  184. package/src/core/sync/write_root.js +0 -148
  185. package/src/core/sync/write_tsconfig.js +0 -250
  186. package/src/exports/internal/server.js +0 -22
  187. package/src/exports/node/polyfills.js +0 -30
  188. package/src/runtime/server/app.js +0 -9
  189. package/src/runtime/server/remote.js +0 -457
  190. package/src/runtime/shared-server.js +0 -7
  191. package/src/runtime/telemetry/otel.js +0 -21
  192. package/src/runtime/telemetry/record_span.js +0 -65
  193. package/src/types/synthetic/$lib.md +0 -5
  194. /package/src/exports/internal/{remote-functions.js → server/remote-functions.js} +0 -0
  195. /package/src/{runtime/telemetry/noop.js → telemetry.js} +0 -0
@@ -6,10 +6,10 @@ export const sveltekit_env_public_client = '\0virtual:__sveltekit/env/public/cli
6
6
  export const sveltekit_env_public_server = '\0virtual:__sveltekit/env/public/server';
7
7
  export const sveltekit_env_private = '\0virtual:__sveltekit/env/private';
8
8
  export const sveltekit_env_service_worker = '\0virtual:__sveltekit/env/service-worker';
9
-
9
+ export const sveltekit_server = '\0virtual:__sveltekit/server';
10
10
  export const service_worker = '\0virtual:service-worker';
11
11
 
12
- export const sveltekit_server = '\0virtual:__sveltekit/server';
12
+ export const sveltekit_manifest_data = '\0virtual:__sveltekit/manifest-data';
13
13
 
14
14
  export const app_server = posixify(
15
15
  fileURLToPath(new URL('../../runtime/app/server/index.js', import.meta.url))
@@ -1,25 +1,24 @@
1
+ /** @import { NextHandleFunction } from 'connect' */
2
+ /** @import { PreviewServer, ResolvedConfig } from 'vite' */
3
+ /** @import { ValidatedConfig, ServerInternalModule, ServerModule } from 'types' */
1
4
  import fs from 'node:fs';
2
5
  import { join } from 'node:path';
3
6
  import { pathToFileURL } from 'node:url';
4
- import { lookup } from 'mrmime';
7
+ import { lookup } from '../../../utils/mime.js';
5
8
  import sirv from 'sirv';
6
9
  import { loadEnv, normalizePath } from 'vite';
7
10
  import { createReadableStream, getRequest, setResponse } from '../../../exports/node/index.js';
8
11
  import { SVELTE_KIT_ASSETS } from '../../../constants.js';
9
12
  import { is_chrome_devtools_request, not_found } from '../utils.js';
10
-
11
- /** @typedef {import('http').IncomingMessage} Req */
12
- /** @typedef {import('http').ServerResponse} Res */
13
- /** @typedef {(req: Req, res: Res, next: () => void) => void} Handler */
13
+ import { stackless } from '../../../utils/error.js';
14
14
 
15
15
  /**
16
- * @param {import('vite').PreviewServer} vite
17
- * @param {import('vite').ResolvedConfig} vite_config
18
- * @param {import('types').ValidatedConfig} svelte_config
19
- * @param {import('@sveltejs/kit').Adapter | undefined} adapter
16
+ * @param {PreviewServer} vite
17
+ * @param {ResolvedConfig} vite_config
18
+ * @param {ValidatedConfig} svelte_config
20
19
  */
21
- export async function preview(vite, vite_config, svelte_config, adapter) {
22
- const { paths } = svelte_config.kit;
20
+ export async function preview(vite, vite_config, svelte_config) {
21
+ const { paths } = svelte_config;
23
22
  const base = paths.base;
24
23
  const assets = paths.assets ? SVELTE_KIT_ASSETS : paths.base;
25
24
 
@@ -27,10 +26,10 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
27
26
 
28
27
  const etag = `"${Date.now()}"`;
29
28
 
30
- const dir = join(svelte_config.kit.outDir, 'output/server');
29
+ const dir = join(svelte_config.outDir, 'output/server');
31
30
 
32
- if (!fs.existsSync(dir)) {
33
- throw new Error(`Server files not found at ${dir}, did you run \`build\` first?`);
31
+ if (!fs.existsSync(`${dir}/manifest.js`)) {
32
+ throw stackless(`Server files not found at ${dir}, did you run \`build\` first?`);
34
33
  }
35
34
 
36
35
  const instrumentation = join(dir, 'instrumentation.server.js');
@@ -38,10 +37,10 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
38
37
  await import(pathToFileURL(instrumentation).href);
39
38
  }
40
39
 
41
- /** @type {import('types').ServerInternalModule} */
40
+ /** @type {ServerInternalModule} */
42
41
  const { set_assets } = await import(pathToFileURL(join(dir, 'internal.js')).href);
43
42
 
44
- /** @type {import('types').ServerModule} */
43
+ /** @type {ServerModule} */
45
44
  const { Server } = await import(pathToFileURL(join(dir, 'index.js')).href);
46
45
 
47
46
  const { manifest } = await import(pathToFileURL(join(dir, 'manifest.js')).href);
@@ -49,12 +48,21 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
49
48
  set_assets(assets);
50
49
 
51
50
  const server = new Server(manifest);
52
- await server.init({
53
- env: loadEnv(vite_config.mode, svelte_config.kit.env.dir, ''),
54
- read: (file) => createReadableStream(`${dir}/${file}`)
55
- });
56
51
 
57
- const emulator = await adapter?.emulate?.();
52
+ try {
53
+ await server.init({
54
+ env: loadEnv(vite_config.mode, svelte_config.env.dir, ''),
55
+ read: (file) => createReadableStream(`${dir}/${file}`)
56
+ });
57
+ } catch (error) {
58
+ // Vite erases the error message when starting the preview server so we store
59
+ // it in the stack instead. This ensures errors thrown using `stackless`
60
+ // are still readable
61
+ if (error instanceof Error) error.stack = error.message;
62
+ throw error;
63
+ }
64
+
65
+ const emulator = await svelte_config.adapter?.emulate?.();
58
66
 
59
67
  return () => {
60
68
  // Remove the base middleware. It screws with the URL.
@@ -73,10 +81,10 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
73
81
  vite.middlewares.use(
74
82
  scoped(
75
83
  assets,
76
- sirv(join(svelte_config.kit.outDir, 'output/client'), {
84
+ sirv(join(svelte_config.outDir, 'output/client'), {
77
85
  setHeaders: (res, pathname) => {
78
86
  // only apply to immutable directory, not e.g. version.json
79
- if (pathname.startsWith(`/${svelte_config.kit.appDir}/immutable`)) {
87
+ if (pathname.startsWith(`/${svelte_config.appDir}/immutable`)) {
80
88
  res.setHeader('cache-control', 'public,max-age=31536000,immutable');
81
89
  }
82
90
  }
@@ -114,7 +122,7 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
114
122
 
115
123
  // prerendered dependencies
116
124
  vite.middlewares.use(
117
- scoped(base, mutable(join(svelte_config.kit.outDir, 'output/prerendered/dependencies')))
125
+ scoped(base, mutable(join(svelte_config.outDir, 'output/prerendered/dependencies')))
118
126
  );
119
127
 
120
128
  // prerendered pages (we can't just use sirv because we need to
@@ -135,10 +143,10 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
135
143
 
136
144
  const { pathname, search } = new URL(/** @type {string} */ (req.url), 'http://dummy');
137
145
 
138
- const dir = pathname.startsWith(`/${svelte_config.kit.appDir}/remote/`) ? 'data' : 'pages';
146
+ const dir = pathname.startsWith(`/${svelte_config.appDir}/remote/`) ? 'data' : 'pages';
139
147
 
140
148
  let filename = normalizePath(
141
- join(svelte_config.kit.outDir, `output/prerendered/${dir}` + pathname)
149
+ join(svelte_config.outDir, `output/prerendered/${dir}` + pathname)
142
150
  );
143
151
 
144
152
  try {
@@ -196,12 +204,12 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
196
204
  vite.middlewares.use(async (req, res) => {
197
205
  const host = req.headers[':authority'] || req.headers.host;
198
206
 
199
- const request = await getRequest({
207
+ const request = getRequest({
200
208
  base: `${protocol}://${host}`,
201
209
  request: req
202
210
  });
203
211
 
204
- await setResponse(
212
+ setResponse(
205
213
  res,
206
214
  await server.respond(request, {
207
215
  getClientAddress: () => {
@@ -214,7 +222,7 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
214
222
  return fs.readFileSync(join(dir, file));
215
223
  }
216
224
 
217
- return fs.readFileSync(join(svelte_config.kit.files.assets, file));
225
+ return fs.readFileSync(join(svelte_config.files.assets, file));
218
226
  },
219
227
  emulator
220
228
  })
@@ -225,7 +233,7 @@ export async function preview(vite, vite_config, svelte_config, adapter) {
225
233
 
226
234
  /**
227
235
  * @param {string} dir
228
- * @returns {Handler}
236
+ * @returns {NextHandleFunction}
229
237
  */
230
238
  const mutable = (dir) =>
231
239
  fs.existsSync(dir)
@@ -237,8 +245,8 @@ const mutable = (dir) =>
237
245
 
238
246
  /**
239
247
  * @param {string} scope
240
- * @param {Handler} handler
241
- * @returns {Handler}
248
+ * @param {NextHandleFunction} handler
249
+ * @returns {NextHandleFunction}
242
250
  */
243
251
  function scoped(scope, handler) {
244
252
  if (scope === '') return handler;