@sveltejs/kit 1.0.0-next.227 → 1.0.0-next.228

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/assets/kit.js CHANGED
@@ -537,12 +537,25 @@ function escape(str, dict, unicode_encoder) {
537
537
 
538
538
  const s = JSON.stringify;
539
539
 
540
+ /** @param {URL} url */
541
+ function create_prerendering_url_proxy(url) {
542
+ return new Proxy(url, {
543
+ get: (target, prop, receiver) => {
544
+ if (prop === 'search' || prop === 'searchParams') {
545
+ throw new Error(`Cannot access url.${prop} on a page with prerendering enabled`);
546
+ }
547
+ return Reflect.get(target, prop, receiver);
548
+ }
549
+ });
550
+ }
551
+
540
552
  // TODO rename this function/module
541
553
 
542
554
  /**
543
555
  * @param {{
544
556
  * branch: Array<import('./types').Loaded>;
545
557
  * options: import('types/internal').SSRRenderOptions;
558
+ * state: import('types/internal').SSRRenderState;
546
559
  * $session: any;
547
560
  * page_config: { hydrate: boolean, router: boolean };
548
561
  * status: number;
@@ -556,6 +569,7 @@ const s = JSON.stringify;
556
569
  async function render_response({
557
570
  branch,
558
571
  options,
572
+ state,
559
573
  $session,
560
574
  page_config,
561
575
  status,
@@ -605,7 +619,13 @@ async function render_response({
605
619
  navigating: writable(null),
606
620
  session
607
621
  },
608
- page: { url, params, status, error, stuff },
622
+ page: {
623
+ url: state.prerender ? create_prerendering_url_proxy(url) : url,
624
+ params,
625
+ status,
626
+ error,
627
+ stuff
628
+ },
609
629
  components: branch.map(({ node }) => node.module.default)
610
630
  };
611
631
 
@@ -895,7 +915,6 @@ function is_root_relative(path) {
895
915
  * node: import('types/internal').SSRNode;
896
916
  * $session: any;
897
917
  * stuff: Record<string, any>;
898
- * prerender_enabled: boolean;
899
918
  * is_error: boolean;
900
919
  * status?: number;
901
920
  * error?: Error;
@@ -912,7 +931,6 @@ async function load_node({
912
931
  node,
913
932
  $session,
914
933
  stuff,
915
- prerender_enabled,
916
934
  is_error,
917
935
  status,
918
936
  error
@@ -937,19 +955,10 @@ async function load_node({
937
955
 
938
956
  let loaded;
939
957
 
940
- const url_proxy = new Proxy(url, {
941
- get: (target, prop, receiver) => {
942
- if (prerender_enabled && (prop === 'search' || prop === 'searchParams')) {
943
- throw new Error('Cannot access query on a page with prerendering enabled');
944
- }
945
- return Reflect.get(target, prop, receiver);
946
- }
947
- });
948
-
949
958
  if (module.load) {
950
959
  /** @type {import('types/page').LoadInput | import('types/page').ErrorLoadInput} */
951
960
  const load_input = {
952
- url: url_proxy,
961
+ url: state.prerender ? create_prerendering_url_proxy(url) : url,
953
962
  params,
954
963
  get session() {
955
964
  uses_credentials = true;
@@ -1196,7 +1205,6 @@ async function load_node({
1196
1205
 
1197
1206
  /**
1198
1207
  * @typedef {import('./types.js').Loaded} Loaded
1199
- * @typedef {import('types/internal').SSRNode} SSRNode
1200
1208
  * @typedef {import('types/internal').SSRRenderOptions} SSRRenderOptions
1201
1209
  * @typedef {import('types/internal').SSRRenderState} SSRRenderState
1202
1210
  */
@@ -1239,7 +1247,6 @@ async function respond_with_error({
1239
1247
  node: default_layout,
1240
1248
  $session,
1241
1249
  stuff: {},
1242
- prerender_enabled: is_prerender_enabled(options, default_error, state),
1243
1250
  is_error: false
1244
1251
  })
1245
1252
  );
@@ -1255,7 +1262,6 @@ async function respond_with_error({
1255
1262
  node: default_error,
1256
1263
  $session,
1257
1264
  stuff: layout_loaded ? layout_loaded.stuff : {},
1258
- prerender_enabled: is_prerender_enabled(options, default_error, state),
1259
1265
  is_error: true,
1260
1266
  status,
1261
1267
  error
@@ -1264,6 +1270,7 @@ async function respond_with_error({
1264
1270
 
1265
1271
  return await render_response({
1266
1272
  options,
1273
+ state,
1267
1274
  $session,
1268
1275
  page_config: {
1269
1276
  hydrate: options.hydrate,
@@ -1290,17 +1297,6 @@ async function respond_with_error({
1290
1297
  }
1291
1298
  }
1292
1299
 
1293
- /**
1294
- * @param {SSRRenderOptions} options
1295
- * @param {SSRNode} node
1296
- * @param {SSRRenderState} state
1297
- */
1298
- function is_prerender_enabled(options, node, state) {
1299
- return (
1300
- options.prerender && (!!node.module.prerender || (!!state.prerender && state.prerender.all))
1301
- );
1302
- }
1303
-
1304
1300
  /**
1305
1301
  * @typedef {import('./types.js').Loaded} Loaded
1306
1302
  * @typedef {import('types/hooks').ServerResponse} ServerResponse
@@ -1403,7 +1399,6 @@ async function respond$1(opts) {
1403
1399
  url: request.url,
1404
1400
  node,
1405
1401
  stuff,
1406
- prerender_enabled: is_prerender_enabled(options, node, state),
1407
1402
  is_error: false
1408
1403
  });
1409
1404
 
@@ -1458,7 +1453,6 @@ async function respond$1(opts) {
1458
1453
  url: request.url,
1459
1454
  node: error_node,
1460
1455
  stuff: node_loaded.stuff,
1461
- prerender_enabled: is_prerender_enabled(options, error_node, state),
1462
1456
  is_error: true,
1463
1457
  status,
1464
1458
  error
@@ -1892,6 +1886,7 @@ async function respond(incoming, options, state = {}) {
1892
1886
  url: request.url,
1893
1887
  params: request.params,
1894
1888
  options,
1889
+ state,
1895
1890
  $session: await options.hooks.getSession(request),
1896
1891
  page_config: { router: true, hydrate: true },
1897
1892
  stuff: {},
@@ -1926,9 +1921,25 @@ async function respond(incoming, options, state = {}) {
1926
1921
  const etag = `"${hash(response.body || '')}"`;
1927
1922
 
1928
1923
  if (if_none_match_value === etag) {
1924
+ /** @type {import('types/helper').ResponseHeaders} */
1925
+ const headers = { etag };
1926
+
1927
+ // https://datatracker.ietf.org/doc/html/rfc7232#section-4.1
1928
+ for (const key of [
1929
+ 'cache-control',
1930
+ 'content-location',
1931
+ 'date',
1932
+ 'expires',
1933
+ 'vary'
1934
+ ]) {
1935
+ if (key in response.headers) {
1936
+ headers[key] = /** @type {string} */ (response.headers[key]);
1937
+ }
1938
+ }
1939
+
1929
1940
  return {
1930
1941
  status: 304,
1931
- headers: {}
1942
+ headers
1932
1943
  };
1933
1944
  }
1934
1945
 
package/dist/cli.js CHANGED
@@ -870,7 +870,7 @@ async function launch(port, https) {
870
870
  exec(`${cmd} ${https ? 'https' : 'http'}://localhost:${port}`);
871
871
  }
872
872
 
873
- const prog = sade('svelte-kit').version('1.0.0-next.227');
873
+ const prog = sade('svelte-kit').version('1.0.0-next.228');
874
874
 
875
875
  prog
876
876
  .command('dev')
@@ -1022,7 +1022,7 @@ async function check_port(port) {
1022
1022
  function welcome({ port, host, https, open, loose, allow, cwd }) {
1023
1023
  if (open) launch(port, https);
1024
1024
 
1025
- console.log($.bold().cyan(`\n SvelteKit v${'1.0.0-next.227'}\n`));
1025
+ console.log($.bold().cyan(`\n SvelteKit v${'1.0.0-next.228'}\n`));
1026
1026
 
1027
1027
  const protocol = https ? 'https:' : 'http:';
1028
1028
  const exposed = typeof host !== 'undefined' && host !== 'localhost' && host !== '127.0.0.1';
package/dist/ssr.js CHANGED
@@ -506,12 +506,25 @@ function escape(str, dict, unicode_encoder) {
506
506
  return result;
507
507
  }
508
508
 
509
+ /** @param {URL} url */
510
+ function create_prerendering_url_proxy(url) {
511
+ return new Proxy(url, {
512
+ get: (target, prop, receiver) => {
513
+ if (prop === 'search' || prop === 'searchParams') {
514
+ throw new Error(`Cannot access url.${prop} on a page with prerendering enabled`);
515
+ }
516
+ return Reflect.get(target, prop, receiver);
517
+ }
518
+ });
519
+ }
520
+
509
521
  // TODO rename this function/module
510
522
 
511
523
  /**
512
524
  * @param {{
513
525
  * branch: Array<import('./types').Loaded>;
514
526
  * options: import('types/internal').SSRRenderOptions;
527
+ * state: import('types/internal').SSRRenderState;
515
528
  * $session: any;
516
529
  * page_config: { hydrate: boolean, router: boolean };
517
530
  * status: number;
@@ -525,6 +538,7 @@ function escape(str, dict, unicode_encoder) {
525
538
  async function render_response({
526
539
  branch,
527
540
  options,
541
+ state,
528
542
  $session,
529
543
  page_config,
530
544
  status,
@@ -574,7 +588,13 @@ async function render_response({
574
588
  navigating: writable(null),
575
589
  session
576
590
  },
577
- page: { url, params, status, error, stuff },
591
+ page: {
592
+ url: state.prerender ? create_prerendering_url_proxy(url) : url,
593
+ params,
594
+ status,
595
+ error,
596
+ stuff
597
+ },
578
598
  components: branch.map(({ node }) => node.module.default)
579
599
  };
580
600
 
@@ -825,7 +845,6 @@ function normalize(loaded) {
825
845
  * node: import('types/internal').SSRNode;
826
846
  * $session: any;
827
847
  * stuff: Record<string, any>;
828
- * prerender_enabled: boolean;
829
848
  * is_error: boolean;
830
849
  * status?: number;
831
850
  * error?: Error;
@@ -842,7 +861,6 @@ async function load_node({
842
861
  node,
843
862
  $session,
844
863
  stuff,
845
- prerender_enabled,
846
864
  is_error,
847
865
  status,
848
866
  error
@@ -867,19 +885,10 @@ async function load_node({
867
885
 
868
886
  let loaded;
869
887
 
870
- const url_proxy = new Proxy(url, {
871
- get: (target, prop, receiver) => {
872
- if (prerender_enabled && (prop === 'search' || prop === 'searchParams')) {
873
- throw new Error('Cannot access query on a page with prerendering enabled');
874
- }
875
- return Reflect.get(target, prop, receiver);
876
- }
877
- });
878
-
879
888
  if (module.load) {
880
889
  /** @type {import('types/page').LoadInput | import('types/page').ErrorLoadInput} */
881
890
  const load_input = {
882
- url: url_proxy,
891
+ url: state.prerender ? create_prerendering_url_proxy(url) : url,
883
892
  params,
884
893
  get session() {
885
894
  uses_credentials = true;
@@ -1126,7 +1135,6 @@ async function load_node({
1126
1135
 
1127
1136
  /**
1128
1137
  * @typedef {import('./types.js').Loaded} Loaded
1129
- * @typedef {import('types/internal').SSRNode} SSRNode
1130
1138
  * @typedef {import('types/internal').SSRRenderOptions} SSRRenderOptions
1131
1139
  * @typedef {import('types/internal').SSRRenderState} SSRRenderState
1132
1140
  */
@@ -1169,7 +1177,6 @@ async function respond_with_error({
1169
1177
  node: default_layout,
1170
1178
  $session,
1171
1179
  stuff: {},
1172
- prerender_enabled: is_prerender_enabled(options, default_error, state),
1173
1180
  is_error: false
1174
1181
  })
1175
1182
  );
@@ -1185,7 +1192,6 @@ async function respond_with_error({
1185
1192
  node: default_error,
1186
1193
  $session,
1187
1194
  stuff: layout_loaded ? layout_loaded.stuff : {},
1188
- prerender_enabled: is_prerender_enabled(options, default_error, state),
1189
1195
  is_error: true,
1190
1196
  status,
1191
1197
  error
@@ -1194,6 +1200,7 @@ async function respond_with_error({
1194
1200
 
1195
1201
  return await render_response({
1196
1202
  options,
1203
+ state,
1197
1204
  $session,
1198
1205
  page_config: {
1199
1206
  hydrate: options.hydrate,
@@ -1220,17 +1227,6 @@ async function respond_with_error({
1220
1227
  }
1221
1228
  }
1222
1229
 
1223
- /**
1224
- * @param {SSRRenderOptions} options
1225
- * @param {SSRNode} node
1226
- * @param {SSRRenderState} state
1227
- */
1228
- function is_prerender_enabled(options, node, state) {
1229
- return (
1230
- options.prerender && (!!node.module.prerender || (!!state.prerender && state.prerender.all))
1231
- );
1232
- }
1233
-
1234
1230
  /**
1235
1231
  * @typedef {import('./types.js').Loaded} Loaded
1236
1232
  * @typedef {import('types/hooks').ServerResponse} ServerResponse
@@ -1333,7 +1329,6 @@ async function respond$1(opts) {
1333
1329
  url: request.url,
1334
1330
  node,
1335
1331
  stuff,
1336
- prerender_enabled: is_prerender_enabled(options, node, state),
1337
1332
  is_error: false
1338
1333
  });
1339
1334
 
@@ -1388,7 +1383,6 @@ async function respond$1(opts) {
1388
1383
  url: request.url,
1389
1384
  node: error_node,
1390
1385
  stuff: node_loaded.stuff,
1391
- prerender_enabled: is_prerender_enabled(options, error_node, state),
1392
1386
  is_error: true,
1393
1387
  status,
1394
1388
  error
@@ -1822,6 +1816,7 @@ async function respond(incoming, options, state = {}) {
1822
1816
  url: request.url,
1823
1817
  params: request.params,
1824
1818
  options,
1819
+ state,
1825
1820
  $session: await options.hooks.getSession(request),
1826
1821
  page_config: { router: true, hydrate: true },
1827
1822
  stuff: {},
@@ -1856,9 +1851,25 @@ async function respond(incoming, options, state = {}) {
1856
1851
  const etag = `"${hash(response.body || '')}"`;
1857
1852
 
1858
1853
  if (if_none_match_value === etag) {
1854
+ /** @type {import('types/helper').ResponseHeaders} */
1855
+ const headers = { etag };
1856
+
1857
+ // https://datatracker.ietf.org/doc/html/rfc7232#section-4.1
1858
+ for (const key of [
1859
+ 'cache-control',
1860
+ 'content-location',
1861
+ 'date',
1862
+ 'expires',
1863
+ 'vary'
1864
+ ]) {
1865
+ if (key in response.headers) {
1866
+ headers[key] = /** @type {string} */ (response.headers[key]);
1867
+ }
1868
+ }
1869
+
1859
1870
  return {
1860
1871
  status: 304,
1861
- headers: {}
1872
+ headers
1862
1873
  };
1863
1874
  }
1864
1875
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sveltejs/kit",
3
- "version": "1.0.0-next.227",
3
+ "version": "1.0.0-next.228",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/sveltejs/kit",