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

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 (92) hide show
  1. package/package.json +40 -5
  2. package/src/cli.js +3 -3
  3. package/src/constants.js +13 -1
  4. package/src/core/adapt/builder.js +2 -3
  5. package/src/core/env.js +139 -181
  6. package/src/core/postbuild/analyse.js +9 -4
  7. package/src/core/postbuild/prerender.js +3 -4
  8. package/src/core/sync/create_manifest_data/index.js +29 -33
  9. package/src/core/sync/sync.js +23 -40
  10. package/src/core/sync/write_app_manifest.js +83 -0
  11. package/src/core/sync/write_client_manifest.js +6 -4
  12. package/src/core/sync/write_server.js +10 -6
  13. package/src/core/sync/write_types/index.js +2 -2
  14. package/src/core/utils.js +0 -28
  15. package/src/exports/hooks/public.d.ts +9 -1
  16. package/src/exports/node/index.js +77 -5
  17. package/src/exports/vite/build/build_server.js +3 -3
  18. package/src/exports/vite/build/utils.js +48 -4
  19. package/src/exports/vite/dev/index.js +11 -22
  20. package/src/exports/vite/index.js +62 -345
  21. package/src/exports/vite/module_ids.js +1 -11
  22. package/src/exports/vite/plugins/env-vars.js +117 -0
  23. package/src/exports/vite/preview/index.js +6 -4
  24. package/src/exports/vite/utils.js +2 -4
  25. package/src/runtime/app/env/{types.d.ts → client.js} +9 -4
  26. package/src/runtime/app/env/index.js +1 -2
  27. package/src/runtime/app/env/private/index.js +1 -0
  28. package/src/runtime/app/env/public/client.js +1 -1
  29. package/src/runtime/app/env/public/server.js +1 -1
  30. package/src/runtime/app/env/{internal.js → server.js} +4 -4
  31. package/src/runtime/app/forms/client.js +263 -0
  32. package/src/runtime/app/forms/index.js +1 -263
  33. package/src/runtime/app/forms/public.d.ts +1 -1
  34. package/src/runtime/app/forms/server.js +6 -0
  35. package/src/runtime/app/forms/shared.js +34 -0
  36. package/src/runtime/app/manifest/index.js +1 -1
  37. package/src/runtime/app/navigation/client.js +15 -0
  38. package/src/runtime/app/navigation/index.js +1 -15
  39. package/src/runtime/app/navigation/public.d.ts +1 -1
  40. package/src/runtime/app/navigation/server.js +15 -0
  41. package/src/runtime/app/paths/server.js +1 -1
  42. package/src/runtime/app/server/remote/form.js +11 -1
  43. package/src/runtime/app/server/remote/prerender.js +1 -2
  44. package/src/runtime/app/server/remote/query.js +1 -1
  45. package/src/runtime/app/state/client.svelte.js +207 -0
  46. package/src/runtime/app/state/index.js +1 -66
  47. package/src/runtime/app/state/public.d.ts +1 -1
  48. package/src/runtime/client/bundle.js +1 -1
  49. package/src/runtime/client/client.js +206 -274
  50. package/src/runtime/client/fetcher.js +18 -8
  51. package/src/runtime/client/remote-functions/form.svelte.js +9 -6
  52. package/src/runtime/client/remote-functions/prerender.svelte.js +1 -1
  53. package/src/runtime/client/remote-functions/query-live/iterator.js +1 -1
  54. package/src/runtime/client/remote-functions/shared.svelte.js +2 -2
  55. package/src/runtime/client/snapshots.js +1 -3
  56. package/src/runtime/client/stream.js +27 -20
  57. package/src/runtime/client/utils.js +7 -3
  58. package/src/runtime/components/root.svelte +5 -5
  59. package/src/runtime/env/dynamic/private.js +1 -1
  60. package/src/runtime/env/static/private.js +1 -1
  61. package/src/runtime/error-chain.js +54 -0
  62. package/src/runtime/form-utils.js +53 -77
  63. package/src/runtime/invalid-import.js +1 -0
  64. package/src/runtime/props.svelte.js +1 -1
  65. package/src/runtime/server/data/index.js +1 -1
  66. package/src/runtime/server/endpoint.js +8 -3
  67. package/src/runtime/server/env_module.js +1 -1
  68. package/src/runtime/server/errors.js +2 -2
  69. package/src/runtime/server/index.js +2 -2
  70. package/src/runtime/server/page/actions.js +77 -122
  71. package/src/runtime/server/page/index.js +37 -69
  72. package/src/runtime/server/page/render.js +18 -23
  73. package/src/runtime/server/remote-functions.js +14 -42
  74. package/src/runtime/server/respond.js +23 -3
  75. package/src/telemetry.js +1 -33
  76. package/src/types/ambient-private.d.ts +9 -17
  77. package/src/types/internal.d.ts +20 -4
  78. package/src/types/private.d.ts +1 -1
  79. package/src/utils/exports.js +1 -0
  80. package/src/utils/filesystem.js +9 -21
  81. package/src/utils/functions.js +10 -0
  82. package/src/utils/routing.js +0 -11
  83. package/src/utils/url.js +0 -11
  84. package/src/version.js +1 -1
  85. package/types/index.d.ts +34 -28
  86. package/types/index.d.ts.map +7 -5
  87. package/src/runtime/app/env/private.js +0 -1
  88. package/src/runtime/app/env/standard-schema.d.ts +0 -0
  89. package/src/runtime/app/state/client.js +0 -63
  90. package/src/runtime/client/state.svelte.js +0 -98
  91. package/src/runtime/server/ambient.d.ts +0 -4
  92. package/src/utils/path.js +0 -23
@@ -94,7 +94,7 @@ export function find_deps(manifest, entry, add_dynamic_css, root) {
94
94
  imports: Array.from(imports),
95
95
  stylesheets: Array.from(stylesheets),
96
96
  // TODO do we need this separately?
97
- fonts: filter_fonts(assets),
97
+ fonts: filter_fonts(assets, manifest, root),
98
98
  stylesheet_map
99
99
  };
100
100
  }
@@ -116,12 +116,56 @@ export function resolve_symlinks(manifest, file, root) {
116
116
  return { chunk, file };
117
117
  }
118
118
 
119
+ /** @type {WeakMap<import('vite').Manifest, Map<string, string>>} */
120
+ const source_maps = new WeakMap();
121
+
119
122
  /**
120
123
  * @param {string[]} assets
121
- * @returns {string[]}
124
+ * @param {import('vite').Manifest} manifest
125
+ * @param {string} root
126
+ * @returns {import('types').FontDependency[]}
122
127
  */
123
- export function filter_fonts(assets) {
124
- return assets.filter((asset) => /\.(woff2?|ttf|otf)$/.test(asset));
128
+ export function filter_fonts(assets, manifest, root) {
129
+ let sources = source_maps.get(manifest);
130
+
131
+ if (!sources) {
132
+ sources = new Map();
133
+ source_maps.set(manifest, sources);
134
+
135
+ // identical files are emitted once but can have several sources — keep the first
136
+ for (const key of Object.keys(manifest).sort()) {
137
+ const { file, src } = manifest[key];
138
+ if (src && !sources.has(file)) {
139
+ sources.set(file, src);
140
+ }
141
+ }
142
+ }
143
+
144
+ return assets
145
+ .filter((asset) => /\.(woff2?|ttf|otf)$/.test(asset))
146
+ .map((file) => {
147
+ const src = sources.get(file) ?? file;
148
+ const marker = '/node_modules/';
149
+ const index = src.lastIndexOf(marker);
150
+
151
+ // Vite follows package manager symlinks when generating the manifest. Prefer the
152
+ // project-local node_modules path when it points to the same file.
153
+ if (index !== -1) {
154
+ const filename = `node_modules/${src.slice(index + marker.length)}`;
155
+ const source = path.resolve(root, src);
156
+ const unresolved = path.resolve(root, filename);
157
+
158
+ if (
159
+ fs.existsSync(source) &&
160
+ fs.existsSync(unresolved) &&
161
+ fs.realpathSync(unresolved) === fs.realpathSync(source)
162
+ ) {
163
+ return { file, filename };
164
+ }
165
+ }
166
+
167
+ return { file, filename: normalizePath(path.relative(root, path.resolve(root, src))) };
168
+ });
125
169
  }
126
170
 
127
171
  /**
@@ -25,6 +25,9 @@ import { SCHEME } from '../../../utils/url.js';
25
25
  import { check_feature } from '../../../utils/features.js';
26
26
  import { escape_html } from '../../../utils/escape.js';
27
27
  import { get_runner } from '../../../runner.js';
28
+ import { write_server } from '../../../core/sync/write_server.js';
29
+ import { write_tsconfig } from '../../../core/sync/write_tsconfig/index.js';
30
+ import create_manifest_data from '../../../core/sync/create_manifest_data/index.js';
28
31
 
29
32
  // vite-specifc queries that we should skip handling for css urls
30
33
  const vite_css_query_regex = /(?:\?|&)(?:raw|url|inline)(?:&|$)/;
@@ -74,7 +77,7 @@ export async function dev(
74
77
  return fetch(info, init);
75
78
  };
76
79
 
77
- sync.init(svelte_config, root);
80
+ write_tsconfig(svelte_config, root);
78
81
 
79
82
  /** @type {ManifestData} */
80
83
  let manifest_data;
@@ -135,7 +138,8 @@ export async function dev(
135
138
 
136
139
  async function update_manifest() {
137
140
  try {
138
- ({ manifest_data } = sync.create(svelte_config, root));
141
+ manifest_data = create_manifest_data(svelte_config, root);
142
+ sync.create(svelte_config, root, manifest_data, false);
139
143
  set_manifest_data(manifest_data);
140
144
 
141
145
  await load_and_validate_params({
@@ -172,7 +176,7 @@ export async function dev(
172
176
  _: {
173
177
  client: {
174
178
  start: `${get_runtime_base(root)}/client/entry.js`,
175
- app: `${to_fs(svelte_config.outDir)}/generated/client/app.js`,
179
+ app: `${to_fs(svelte_config.outDir)}/generated/dev/client/app.js`,
176
180
  imports: [],
177
181
  stylesheets: [],
178
182
  fonts: [],
@@ -182,7 +186,7 @@ export async function dev(
182
186
  ? undefined
183
187
  : manifest_data.nodes.map((node, i) => {
184
188
  if (node.component || node.universal) {
185
- return `${svelte_config.paths.base}${to_fs(svelte_config.outDir)}/generated/client/nodes/${i}.js`;
189
+ return `${svelte_config.paths.base}${to_fs(svelte_config.outDir)}/generated/dev/client/nodes/${i}.js`;
186
190
  }
187
191
  }),
188
192
  // `css` is not necessary in dev, as the JS file from `nodes` will reference the CSS file
@@ -450,7 +454,7 @@ export async function dev(
450
454
  file.startsWith(serviceWorker) ||
451
455
  file.startsWith(hooks.server)
452
456
  ) {
453
- sync.server(svelte_config, root);
457
+ write_server(svelte_config, path.join(svelte_config.outDir, 'generated', 'dev'), root);
454
458
  }
455
459
  });
456
460
 
@@ -593,7 +597,8 @@ export async function dev(
593
597
 
594
598
  const request = getRequest({
595
599
  base,
596
- request: req
600
+ request: req,
601
+ response: res
597
602
  });
598
603
 
599
604
  if (manifest_error) {
@@ -736,19 +741,3 @@ function has_correct_case(file, assets) {
736
741
 
737
742
  return false;
738
743
  }
739
-
740
- /**
741
- * Invalidates a module in all environments.
742
- * @param {ViteDevServer} server
743
- * @param {string} id
744
- * @returns {void}
745
- */
746
- export function invalidate_module(server, id) {
747
- for (const environment in server.environments) {
748
- const module = server.environments[environment].moduleGraph.getModuleById(id);
749
- if (module) {
750
- server.environments[environment].moduleGraph.invalidateModule(module);
751
- void server.environments[environment].reloadModule(module);
752
- }
753
- }
754
- }