@sveltejs/kit 1.0.0-next.234 → 1.0.0-next.238
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/server/index.js +12 -7
- package/dist/chunks/index.js +13 -87
- package/dist/chunks/index5.js +6 -2
- package/dist/chunks/url.js +80 -1
- package/dist/cli.js +2 -2
- package/package.json +5 -3
- package/types/ambient-modules.d.ts +2 -0
- package/types/config.d.ts +2 -1
- package/types/endpoint.d.ts +9 -10
- package/types/helper.d.ts +4 -24
- package/types/internal.d.ts +2 -4
- package/types/page.d.ts +29 -17
package/assets/server/index.js
CHANGED
|
@@ -738,12 +738,7 @@ async function render_response({
|
|
|
738
738
|
params: ${devalue(params)}
|
|
739
739
|
}` : 'null'}
|
|
740
740
|
});
|
|
741
|
-
</script
|
|
742
|
-
<script>
|
|
743
|
-
if ('serviceWorker' in navigator) {
|
|
744
|
-
navigator.serviceWorker.register('${options.service_worker}');
|
|
745
|
-
}
|
|
746
|
-
</script>` : ''}`;
|
|
741
|
+
</script>`;
|
|
747
742
|
|
|
748
743
|
body += serialized_data
|
|
749
744
|
.map(({ url, body, json }) => {
|
|
@@ -756,6 +751,16 @@ async function render_response({
|
|
|
756
751
|
})
|
|
757
752
|
.join('\n\n\t');
|
|
758
753
|
}
|
|
754
|
+
|
|
755
|
+
if (options.service_worker) {
|
|
756
|
+
// always include service worker unless it's turned off explicitly
|
|
757
|
+
head += `
|
|
758
|
+
<script>
|
|
759
|
+
if ('serviceWorker' in navigator) {
|
|
760
|
+
navigator.serviceWorker.register('${options.service_worker}');
|
|
761
|
+
}
|
|
762
|
+
</script>`;
|
|
763
|
+
}
|
|
759
764
|
}
|
|
760
765
|
|
|
761
766
|
const segments = url.pathname.slice(options.paths.base.length).split('/').slice(2);
|
|
@@ -1405,7 +1410,7 @@ async function respond$1(opts) {
|
|
|
1405
1410
|
new Response(undefined, {
|
|
1406
1411
|
status: loaded.loaded.status,
|
|
1407
1412
|
headers: {
|
|
1408
|
-
location:
|
|
1413
|
+
location: loaded.loaded.redirect
|
|
1409
1414
|
}
|
|
1410
1415
|
}),
|
|
1411
1416
|
set_cookie_headers
|
package/dist/chunks/index.js
CHANGED
|
@@ -6,8 +6,8 @@ import { c as coalesce_to_error, S as SVELTE_KIT_ASSETS, r as resolve_entry, $,
|
|
|
6
6
|
import fs__default from 'fs';
|
|
7
7
|
import { URL as URL$1 } from 'url';
|
|
8
8
|
import { t as to_headers, s as sirv } from './http.js';
|
|
9
|
+
import { e as escape_html_attr, r as resolve, i as is_root_relative, a as escape_json_string_in_html } from './url.js';
|
|
9
10
|
import { s } from './misc.js';
|
|
10
|
-
import { r as resolve, i as is_root_relative } from './url.js';
|
|
11
11
|
import { __fetch_polyfill } from '../install-fetch.js';
|
|
12
12
|
import { getRawBody, setResponse } from '../node.js';
|
|
13
13
|
import 'sade';
|
|
@@ -463,85 +463,6 @@ function writable(value, start = noop) {
|
|
|
463
463
|
return { set, update, subscribe };
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
-
/** @type {Record<string, string>} */
|
|
467
|
-
const escape_json_string_in_html_dict = {
|
|
468
|
-
'"': '\\"',
|
|
469
|
-
'<': '\\u003C',
|
|
470
|
-
'>': '\\u003E',
|
|
471
|
-
'/': '\\u002F',
|
|
472
|
-
'\\': '\\\\',
|
|
473
|
-
'\b': '\\b',
|
|
474
|
-
'\f': '\\f',
|
|
475
|
-
'\n': '\\n',
|
|
476
|
-
'\r': '\\r',
|
|
477
|
-
'\t': '\\t',
|
|
478
|
-
'\0': '\\0',
|
|
479
|
-
'\u2028': '\\u2028',
|
|
480
|
-
'\u2029': '\\u2029'
|
|
481
|
-
};
|
|
482
|
-
|
|
483
|
-
/** @param {string} str */
|
|
484
|
-
function escape_json_string_in_html(str) {
|
|
485
|
-
return escape(
|
|
486
|
-
str,
|
|
487
|
-
escape_json_string_in_html_dict,
|
|
488
|
-
(code) => `\\u${code.toString(16).toUpperCase()}`
|
|
489
|
-
);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
/** @type {Record<string, string>} */
|
|
493
|
-
const escape_html_attr_dict = {
|
|
494
|
-
'<': '<',
|
|
495
|
-
'>': '>',
|
|
496
|
-
'"': '"'
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
/**
|
|
500
|
-
* use for escaping string values to be used html attributes on the page
|
|
501
|
-
* e.g.
|
|
502
|
-
* <script data-url="here">
|
|
503
|
-
*
|
|
504
|
-
* @param {string} str
|
|
505
|
-
* @returns string escaped string
|
|
506
|
-
*/
|
|
507
|
-
function escape_html_attr(str) {
|
|
508
|
-
return '"' + escape(str, escape_html_attr_dict, (code) => `&#${code};`) + '"';
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
*
|
|
513
|
-
* @param str {string} string to escape
|
|
514
|
-
* @param dict {Record<string, string>} dictionary of character replacements
|
|
515
|
-
* @param unicode_encoder {function(number): string} encoder to use for high unicode characters
|
|
516
|
-
* @returns {string}
|
|
517
|
-
*/
|
|
518
|
-
function escape(str, dict, unicode_encoder) {
|
|
519
|
-
let result = '';
|
|
520
|
-
|
|
521
|
-
for (let i = 0; i < str.length; i += 1) {
|
|
522
|
-
const char = str.charAt(i);
|
|
523
|
-
const code = char.charCodeAt(0);
|
|
524
|
-
|
|
525
|
-
if (char in dict) {
|
|
526
|
-
result += dict[char];
|
|
527
|
-
} else if (code >= 0xd800 && code <= 0xdfff) {
|
|
528
|
-
const next = str.charCodeAt(i + 1);
|
|
529
|
-
|
|
530
|
-
// If this is the beginning of a [high, low] surrogate pair,
|
|
531
|
-
// add the next two characters, otherwise escape
|
|
532
|
-
if (code <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {
|
|
533
|
-
result += char + str[++i];
|
|
534
|
-
} else {
|
|
535
|
-
result += unicode_encoder(code);
|
|
536
|
-
}
|
|
537
|
-
} else {
|
|
538
|
-
result += char;
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
return result;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
466
|
/** @param {URL} url */
|
|
546
467
|
function create_prerendering_url_proxy(url) {
|
|
547
468
|
return new Proxy(url, {
|
|
@@ -728,12 +649,7 @@ async function render_response({
|
|
|
728
649
|
params: ${devalue(params)}
|
|
729
650
|
}` : 'null'}
|
|
730
651
|
});
|
|
731
|
-
</script
|
|
732
|
-
<script>
|
|
733
|
-
if ('serviceWorker' in navigator) {
|
|
734
|
-
navigator.serviceWorker.register('${options.service_worker}');
|
|
735
|
-
}
|
|
736
|
-
</script>` : ''}`;
|
|
652
|
+
</script>`;
|
|
737
653
|
|
|
738
654
|
body += serialized_data
|
|
739
655
|
.map(({ url, body, json }) => {
|
|
@@ -746,6 +662,16 @@ async function render_response({
|
|
|
746
662
|
})
|
|
747
663
|
.join('\n\n\t');
|
|
748
664
|
}
|
|
665
|
+
|
|
666
|
+
if (options.service_worker) {
|
|
667
|
+
// always include service worker unless it's turned off explicitly
|
|
668
|
+
head += `
|
|
669
|
+
<script>
|
|
670
|
+
if ('serviceWorker' in navigator) {
|
|
671
|
+
navigator.serviceWorker.register('${options.service_worker}');
|
|
672
|
+
}
|
|
673
|
+
</script>`;
|
|
674
|
+
}
|
|
749
675
|
}
|
|
750
676
|
|
|
751
677
|
const segments = url.pathname.slice(options.paths.base.length).split('/').slice(2);
|
|
@@ -1356,7 +1282,7 @@ async function respond$1(opts) {
|
|
|
1356
1282
|
new Response(undefined, {
|
|
1357
1283
|
status: loaded.loaded.status,
|
|
1358
1284
|
headers: {
|
|
1359
|
-
location:
|
|
1285
|
+
location: loaded.loaded.redirect
|
|
1360
1286
|
}
|
|
1361
1287
|
}),
|
|
1362
1288
|
set_cookie_headers
|
package/dist/chunks/index5.js
CHANGED
|
@@ -3,7 +3,7 @@ import { readFileSync, writeFileSync } from 'fs';
|
|
|
3
3
|
import { resolve, join, dirname } from 'path';
|
|
4
4
|
import { pathToFileURL, URL } from 'url';
|
|
5
5
|
import { __fetch_polyfill } from '../install-fetch.js';
|
|
6
|
-
import { r as resolve$1, i as is_root_relative } from './url.js';
|
|
6
|
+
import { e as escape_html_attr, r as resolve$1, i as is_root_relative } from './url.js';
|
|
7
7
|
import { g as generate_manifest } from './index4.js';
|
|
8
8
|
import 'sade';
|
|
9
9
|
import 'child_process';
|
|
@@ -441,7 +441,11 @@ async function prerender({ cwd, out, log, config, build_data, fallback, all }) {
|
|
|
441
441
|
mkdirp(dirname(file));
|
|
442
442
|
|
|
443
443
|
log.warn(`${rendered.status} ${decoded_path} -> ${location}`);
|
|
444
|
-
|
|
444
|
+
|
|
445
|
+
writeFileSync(
|
|
446
|
+
file,
|
|
447
|
+
`<meta http-equiv="refresh" content=${escape_html_attr(`0;url=${location}`)}>`
|
|
448
|
+
);
|
|
445
449
|
|
|
446
450
|
const resolved = resolve$1(path, location);
|
|
447
451
|
if (is_root_relative(resolved)) {
|
package/dist/chunks/url.js
CHANGED
|
@@ -1,3 +1,82 @@
|
|
|
1
|
+
/** @type {Record<string, string>} */
|
|
2
|
+
const escape_json_string_in_html_dict = {
|
|
3
|
+
'"': '\\"',
|
|
4
|
+
'<': '\\u003C',
|
|
5
|
+
'>': '\\u003E',
|
|
6
|
+
'/': '\\u002F',
|
|
7
|
+
'\\': '\\\\',
|
|
8
|
+
'\b': '\\b',
|
|
9
|
+
'\f': '\\f',
|
|
10
|
+
'\n': '\\n',
|
|
11
|
+
'\r': '\\r',
|
|
12
|
+
'\t': '\\t',
|
|
13
|
+
'\0': '\\0',
|
|
14
|
+
'\u2028': '\\u2028',
|
|
15
|
+
'\u2029': '\\u2029'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/** @param {string} str */
|
|
19
|
+
function escape_json_string_in_html(str) {
|
|
20
|
+
return escape(
|
|
21
|
+
str,
|
|
22
|
+
escape_json_string_in_html_dict,
|
|
23
|
+
(code) => `\\u${code.toString(16).toUpperCase()}`
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** @type {Record<string, string>} */
|
|
28
|
+
const escape_html_attr_dict = {
|
|
29
|
+
'<': '<',
|
|
30
|
+
'>': '>',
|
|
31
|
+
'"': '"'
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* use for escaping string values to be used html attributes on the page
|
|
36
|
+
* e.g.
|
|
37
|
+
* <script data-url="here">
|
|
38
|
+
*
|
|
39
|
+
* @param {string} str
|
|
40
|
+
* @returns string escaped string
|
|
41
|
+
*/
|
|
42
|
+
function escape_html_attr(str) {
|
|
43
|
+
return '"' + escape(str, escape_html_attr_dict, (code) => `&#${code};`) + '"';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param str {string} string to escape
|
|
49
|
+
* @param dict {Record<string, string>} dictionary of character replacements
|
|
50
|
+
* @param unicode_encoder {function(number): string} encoder to use for high unicode characters
|
|
51
|
+
* @returns {string}
|
|
52
|
+
*/
|
|
53
|
+
function escape(str, dict, unicode_encoder) {
|
|
54
|
+
let result = '';
|
|
55
|
+
|
|
56
|
+
for (let i = 0; i < str.length; i += 1) {
|
|
57
|
+
const char = str.charAt(i);
|
|
58
|
+
const code = char.charCodeAt(0);
|
|
59
|
+
|
|
60
|
+
if (char in dict) {
|
|
61
|
+
result += dict[char];
|
|
62
|
+
} else if (code >= 0xd800 && code <= 0xdfff) {
|
|
63
|
+
const next = str.charCodeAt(i + 1);
|
|
64
|
+
|
|
65
|
+
// If this is the beginning of a [high, low] surrogate pair,
|
|
66
|
+
// add the next two characters, otherwise escape
|
|
67
|
+
if (code <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {
|
|
68
|
+
result += char + str[++i];
|
|
69
|
+
} else {
|
|
70
|
+
result += unicode_encoder(code);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
result += char;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
1
80
|
const absolute = /^([a-z]+:)?\/?\//;
|
|
2
81
|
const scheme = /^[a-z]+:/;
|
|
3
82
|
|
|
@@ -37,4 +116,4 @@ function is_root_relative(path) {
|
|
|
37
116
|
return path[0] === '/' && path[1] !== '/';
|
|
38
117
|
}
|
|
39
118
|
|
|
40
|
-
export { is_root_relative as i, resolve as r };
|
|
119
|
+
export { escape_json_string_in_html as a, escape_html_attr as e, is_root_relative as i, resolve as r };
|
package/dist/cli.js
CHANGED
|
@@ -933,7 +933,7 @@ async function launch(port, https) {
|
|
|
933
933
|
exec(`${cmd} ${https ? 'https' : 'http'}://localhost:${port}`);
|
|
934
934
|
}
|
|
935
935
|
|
|
936
|
-
const prog = sade('svelte-kit').version('1.0.0-next.
|
|
936
|
+
const prog = sade('svelte-kit').version('1.0.0-next.238');
|
|
937
937
|
|
|
938
938
|
prog
|
|
939
939
|
.command('dev')
|
|
@@ -1085,7 +1085,7 @@ async function check_port(port) {
|
|
|
1085
1085
|
function welcome({ port, host, https, open, loose, allow, cwd }) {
|
|
1086
1086
|
if (open) launch(port, https);
|
|
1087
1087
|
|
|
1088
|
-
console.log($.bold().cyan(`\n SvelteKit v${'1.0.0-next.
|
|
1088
|
+
console.log($.bold().cyan(`\n SvelteKit v${'1.0.0-next.238'}\n`));
|
|
1089
1089
|
|
|
1090
1090
|
const protocol = https ? 'https:' : 'http:';
|
|
1091
1091
|
const exposed = typeof host !== 'undefined' && host !== 'localhost' && host !== '127.0.0.1';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltejs/kit",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.238",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/sveltejs/kit",
|
|
@@ -79,11 +79,13 @@
|
|
|
79
79
|
"build": "rollup -c && node scripts/cp.js src/runtime/components assets/components",
|
|
80
80
|
"dev": "rollup -cw",
|
|
81
81
|
"lint": "eslint --ignore-path .gitignore --ignore-pattern \"src/packaging/test/**\" \"{src,test}/**/*.{ts,mjs,js,svelte}\" && npm run check-format",
|
|
82
|
-
"check": "tsc && svelte-check --ignore
|
|
82
|
+
"check": "tsc && svelte-check --ignore test/prerendering,src/packaging/test",
|
|
83
83
|
"format": "npm run check-format -- --write",
|
|
84
84
|
"check-format": "prettier --check . --config ../../.prettierrc --ignore-path .gitignore",
|
|
85
|
-
"test": "npm run test:unit && npm run test:packaging && npm run test:integration",
|
|
85
|
+
"test": "npm run test:unit && npm run test:packaging && npm run test:prerendering && npm run test:integration",
|
|
86
86
|
"test:unit": "uvu src \"(spec\\.js|test[\\\\/]index\\.js)\" -i packaging",
|
|
87
|
+
"test:prerendering": "pnpm test:prerendering:basics",
|
|
88
|
+
"test:prerendering:basics": "cd test/prerendering/basics && pnpm test",
|
|
87
89
|
"test:packaging": "uvu src/packaging \"(spec\\.js|test[\\\\/]index\\.js)\"",
|
|
88
90
|
"test:integration": "pnpm test:integration:amp && pnpm test:integration:basics && pnpm test:integration:options && pnpm test:integration:options-2",
|
|
89
91
|
"test:integration:amp": "cd test/apps/amp && pnpm test",
|
|
@@ -195,5 +195,7 @@ declare module '@sveltejs/kit/node' {
|
|
|
195
195
|
declare module '@sveltejs/kit/install-fetch' {
|
|
196
196
|
import fetch, { Headers, Request, Response } from 'node-fetch';
|
|
197
197
|
|
|
198
|
+
export function __fetch_polyfill(): void;
|
|
199
|
+
|
|
198
200
|
export { fetch, Headers, Request, Response };
|
|
199
201
|
}
|
package/types/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CompileOptions } from 'svelte/types/compiler/interfaces';
|
|
1
2
|
import { UserConfig as ViteConfig } from 'vite';
|
|
2
3
|
import { RecursiveRequired } from './helper';
|
|
3
4
|
import { HttpMethod, Logger, RouteSegment, TrailingSlash } from './internal';
|
|
@@ -110,7 +111,7 @@ export interface PrerenderErrorHandler {
|
|
|
110
111
|
export type PrerenderOnErrorValue = 'fail' | 'continue' | PrerenderErrorHandler;
|
|
111
112
|
|
|
112
113
|
export interface Config {
|
|
113
|
-
compilerOptions?:
|
|
114
|
+
compilerOptions?: CompileOptions;
|
|
114
115
|
extensions?: string[];
|
|
115
116
|
kit?: {
|
|
116
117
|
adapter?: Adapter;
|
package/types/endpoint.d.ts
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { RequestEvent } from './hooks';
|
|
2
|
-
import { JSONString, MaybePromise, ResponseHeaders
|
|
2
|
+
import { Either, JSONString, MaybePromise, ResponseHeaders } from './helper';
|
|
3
3
|
|
|
4
|
-
type
|
|
4
|
+
type Body = JSONString | Uint8Array | ReadableStream | import('stream').Readable;
|
|
5
5
|
|
|
6
|
-
export interface EndpointOutput
|
|
6
|
+
export interface EndpointOutput {
|
|
7
7
|
status?: number;
|
|
8
8
|
headers?: Headers | Partial<ResponseHeaders>;
|
|
9
9
|
body?: Body;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
export interface
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
>;
|
|
12
|
+
export interface Fallthrough {
|
|
13
|
+
fallthrough: true;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface RequestHandler<Locals = Record<string, any>> {
|
|
17
|
+
(event: RequestEvent<Locals>): MaybePromise<Either<Response | EndpointOutput, Fallthrough>>;
|
|
19
18
|
}
|
package/types/helper.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
interface ReadOnlyFormData {
|
|
2
|
-
get(key: string): string | null;
|
|
3
|
-
getAll(key: string): string[];
|
|
4
|
-
has(key: string): boolean;
|
|
5
|
-
entries(): Generator<[string, string], void>;
|
|
6
|
-
keys(): Generator<string, void>;
|
|
7
|
-
values(): Generator<string, void>;
|
|
8
|
-
[Symbol.iterator](): Generator<[string, string], void>;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
1
|
type ToJSON = { toJSON(...args: any[]): JSONValue };
|
|
12
2
|
type JSONValue = Exclude<JSONString, ToJSON>;
|
|
13
3
|
export type JSONString =
|
|
@@ -22,12 +12,14 @@ export type JSONString =
|
|
|
22
12
|
/** `string[]` is only for set-cookie, everything else must be type of `string` */
|
|
23
13
|
export type ResponseHeaders = Record<string, string | string[]>;
|
|
24
14
|
|
|
25
|
-
// Utility Types
|
|
15
|
+
// <-- Utility Types -->
|
|
16
|
+
type Only<T, U> = { [P in keyof T]: T[P] } & { [P in keyof U]?: never };
|
|
17
|
+
|
|
18
|
+
export type Either<T, U> = Only<T, U> | Only<U, T>;
|
|
26
19
|
export type InferValue<T, Key extends keyof T, Default> = T extends Record<Key, infer Val>
|
|
27
20
|
? Val
|
|
28
21
|
: Default;
|
|
29
22
|
export type MaybePromise<T> = T | Promise<T>;
|
|
30
|
-
export type Rec<T = any> = Record<string, T>;
|
|
31
23
|
export type RecursiveRequired<T> = {
|
|
32
24
|
// Recursive implementation of TypeScript's Required utility type.
|
|
33
25
|
// Will recursively continue until it reaches primitive or union
|
|
@@ -38,15 +30,3 @@ export type RecursiveRequired<T> = {
|
|
|
38
30
|
? Extract<T[K], Function> // only take the Function type.
|
|
39
31
|
: T[K]; // Use the exact type for everything else
|
|
40
32
|
};
|
|
41
|
-
|
|
42
|
-
type Only<T, U> = {
|
|
43
|
-
[P in keyof T]: T[P];
|
|
44
|
-
} & {
|
|
45
|
-
[P in keyof U]?: never;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export type Either<T, U> = Only<T, U> | Only<U, T>;
|
|
49
|
-
|
|
50
|
-
export interface Fallthrough {
|
|
51
|
-
fallthrough: true;
|
|
52
|
-
}
|
package/types/internal.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { OutputAsset, OutputChunk } from 'rollup';
|
|
2
|
-
import { RequestHandler } from './endpoint';
|
|
3
2
|
import { InternalApp, SSRManifest } from './app';
|
|
3
|
+
import { Fallthrough, RequestHandler } from './endpoint';
|
|
4
|
+
import { Either } from './helper';
|
|
4
5
|
import { ExternalFetch, GetSession, HandleError, InternalHandle, RequestEvent } from './hooks';
|
|
5
6
|
import { Load } from './page';
|
|
6
|
-
import { Either, Fallthrough } from './helper';
|
|
7
|
-
|
|
8
|
-
type PageId = string;
|
|
9
7
|
|
|
10
8
|
export interface PrerenderOptions {
|
|
11
9
|
fallback?: string;
|
package/types/page.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fallthrough } from './endpoint';
|
|
2
|
+
import { Either, InferValue, MaybePromise } from './helper';
|
|
2
3
|
|
|
3
4
|
export interface LoadInput<
|
|
4
|
-
PageParams extends
|
|
5
|
-
Stuff extends
|
|
5
|
+
PageParams extends Record<string, string> = Record<string, string>,
|
|
6
|
+
Stuff extends Record<string, any> = Record<string, any>,
|
|
6
7
|
Session = any
|
|
7
8
|
> {
|
|
8
9
|
url: URL;
|
|
@@ -13,15 +14,18 @@ export interface LoadInput<
|
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export interface ErrorLoadInput<
|
|
16
|
-
PageParams extends
|
|
17
|
-
Stuff extends
|
|
17
|
+
PageParams extends Record<string, string> = Record<string, string>,
|
|
18
|
+
Stuff extends Record<string, any> = Record<string, any>,
|
|
18
19
|
Session = any
|
|
19
20
|
> extends LoadInput<PageParams, Stuff, Session> {
|
|
20
21
|
status?: number;
|
|
21
22
|
error?: Error;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
export interface LoadOutput<
|
|
25
|
+
export interface LoadOutput<
|
|
26
|
+
Props extends Record<string, any> = Record<string, any>,
|
|
27
|
+
Stuff extends Record<string, any> = Record<string, any>
|
|
28
|
+
> {
|
|
25
29
|
status?: number;
|
|
26
30
|
error?: string | Error;
|
|
27
31
|
redirect?: string;
|
|
@@ -31,14 +35,14 @@ export interface LoadOutput<Props extends Rec = Rec, Stuff extends Rec = Rec> {
|
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
interface LoadInputExtends {
|
|
34
|
-
stuff?:
|
|
35
|
-
pageParams?:
|
|
38
|
+
stuff?: Record<string, any>;
|
|
39
|
+
pageParams?: Record<string, string>;
|
|
36
40
|
session?: any;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
interface LoadOutputExtends {
|
|
40
|
-
stuff?:
|
|
41
|
-
props?:
|
|
44
|
+
stuff?: Record<string, any>;
|
|
45
|
+
props?: Record<string, any>;
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
export interface Load<
|
|
@@ -47,14 +51,17 @@ export interface Load<
|
|
|
47
51
|
> {
|
|
48
52
|
(
|
|
49
53
|
input: LoadInput<
|
|
50
|
-
InferValue<Input, 'pageParams',
|
|
51
|
-
InferValue<Input, 'stuff',
|
|
54
|
+
InferValue<Input, 'pageParams', Record<string, string>>,
|
|
55
|
+
InferValue<Input, 'stuff', Record<string, any>>,
|
|
52
56
|
InferValue<Input, 'session', any>
|
|
53
57
|
>
|
|
54
58
|
): MaybePromise<
|
|
55
59
|
Either<
|
|
56
|
-
|
|
57
|
-
|
|
60
|
+
Fallthrough,
|
|
61
|
+
LoadOutput<
|
|
62
|
+
InferValue<Output, 'props', Record<string, any>>,
|
|
63
|
+
InferValue<Output, 'stuff', Record<string, any>>
|
|
64
|
+
>
|
|
58
65
|
>
|
|
59
66
|
>;
|
|
60
67
|
}
|
|
@@ -65,9 +72,14 @@ export interface ErrorLoad<
|
|
|
65
72
|
> {
|
|
66
73
|
(
|
|
67
74
|
input: ErrorLoadInput<
|
|
68
|
-
InferValue<Input, 'pageParams',
|
|
69
|
-
InferValue<Input, 'stuff',
|
|
75
|
+
InferValue<Input, 'pageParams', Record<string, string>>,
|
|
76
|
+
InferValue<Input, 'stuff', Record<string, any>>,
|
|
70
77
|
InferValue<Input, 'session', any>
|
|
71
78
|
>
|
|
72
|
-
): MaybePromise<
|
|
79
|
+
): MaybePromise<
|
|
80
|
+
LoadOutput<
|
|
81
|
+
InferValue<Output, 'props', Record<string, any>>,
|
|
82
|
+
InferValue<Output, 'stuff', Record<string, any>>
|
|
83
|
+
>
|
|
84
|
+
>;
|
|
73
85
|
}
|