Skip to content
This repository was archived by the owner on Jan 11, 2023. It is now read-only.

Commit b7a0b02

Browse files
authored
Fix warnings and missing types on server (#1529)
1 parent a3635d2 commit b7a0b02

File tree

7 files changed

+86
-30
lines changed

7 files changed

+86
-30
lines changed

package-lock.json

+56-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@
3232
"@rollup/plugin-node-resolve": "^8.0.1",
3333
"@rollup/plugin-replace": "^2.3.3",
3434
"@sveltejs/eslint-config": "github:sveltejs/eslint-config#v5.0.0",
35+
"@types/cookie": "^0.4.0",
3536
"@types/mocha": "^8.0.0",
3637
"@types/node": "^10.0.0",
38+
"@types/node-fetch": "^2.5.7",
3739
"@types/puppeteer": "^3.0.1",
3840
"@typescript-eslint/eslint-plugin": "^3.0.2",
3941
"@typescript-eslint/parser": "^3.0.2",

runtime/src/internal/manifest-client.d.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
import {
2-
ComponentConstructor,
3-
DOMComponentModule,
42
Preload
53
} from './shared';
64

75
export interface DOMComponentModule {
8-
default: ComponentConstructor;
6+
default: DOMComponentConstructor;
97
preload?: Preload;
108
}
119

runtime/src/internal/manifest-server.d.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import { ClientRequest, ServerResponse } from 'http';
22
import { TLSSocket } from 'tls';
33
import {
4-
SSRComponentModule,
5-
SSRComponent
4+
Preload
65
} from './shared';
76

87
export const src_dir: string;

runtime/src/internal/shared.d.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ export const CONTEXT_KEY: unknown;
22

33
export type Params = Record<string, string>;
44
export type Query = Record<string, string | string[]>;
5-
export type Preload = (props: { params: Params, query: Query }) => Promise<any>;
5+
export type PreloadResult = object | Promise<object>;
6+
export interface Preload {
7+
(this: PreloadContext, page: PreloadPage, session: any): PreloadResult;
8+
}

runtime/src/server/middleware/get_page_handler.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { writable } from 'svelte/store';
22
import fs from 'fs';
33
import path from 'path';
4-
import cookie from 'cookie';
4+
import { parse } from 'cookie';
55
import devalue from 'devalue';
66
import fetch from 'node-fetch';
77
import URL from 'url';
88
import { sourcemap_stacktrace } from './sourcemap_stacktrace';
99
import { Manifest, ManifestPage, Req, Res, build_dir, dev, src_dir } from '@sapper/internal/manifest-server';
10+
import { PreloadResult } from '@sapper/internal/shared';
1011
import App from '@sapper/internal/App.svelte';
1112

1213
export function get_page_handler(
@@ -128,14 +129,14 @@ export function get_page_handler(
128129

129130
const cookies = Object.assign(
130131
{},
131-
cookie.parse(req.headers.cookie || ''),
132-
cookie.parse(opts.headers.cookie || '')
132+
parse(req.headers.cookie || ''),
133+
parse(opts.headers.cookie || '')
133134
);
134135

135136
const set_cookie = res.getHeader('Set-Cookie');
136-
(Array.isArray(set_cookie) ? set_cookie : [set_cookie]).forEach(str => {
137-
const match = /([^=]+)=([^;]+)/.exec(<string>str);
138-
if (match) cookies[match[1]] = match[2];
137+
(Array.isArray(set_cookie) ? set_cookie : [set_cookie]).forEach((s: string) => {
138+
const m = /([^=]+)=([^;]+)/.exec(s);
139+
if (m) cookies[m[1]] = m[2];
139140
});
140141

141142
const str = Object.keys(cookies)
@@ -153,13 +154,13 @@ export function get_page_handler(
153154
}
154155
};
155156

156-
let preloaded;
157-
let match;
158-
let params;
157+
let preloaded: object[];
158+
let match: RegExpExecArray;
159+
let params: Record<string,string>;
159160

160161
try {
161162
const root_preload = manifest.root_comp.preload || (() => {});
162-
const root_preloaded = root_preload.call(preload_context, {
163+
const root_preloaded: PreloadResult = root_preload.call(preload_context, {
163164
host: req.headers.host,
164165
path: req.path,
165166
query: req.query,
@@ -168,8 +169,7 @@ export function get_page_handler(
168169

169170
match = error ? null : page.pattern.exec(req.path);
170171

171-
172-
let toPreload = [root_preloaded];
172+
let toPreload: PreloadResult[] = [root_preloaded];
173173
if (!is_service_worker_index) {
174174
toPreload = toPreload.concat(page.parts.map(part => {
175175
if (!part) return null;
@@ -258,12 +258,12 @@ export function get_page_handler(
258258
};
259259

260260
if (!is_service_worker_index) {
261-
let l = 1;
261+
let level_index = 1;
262262
for (let i = 0; i < page.parts.length; i += 1) {
263263
const part = page.parts[i];
264264
if (!part) continue;
265265

266-
props[`level${l++}`] = {
266+
props[`level${level_index++}`] = {
267267
component: part.component.default,
268268
props: preloaded[i + 1] || {},
269269
segment: segments[i]
@@ -295,7 +295,7 @@ export function get_page_handler(
295295
script += `if('serviceWorker' in navigator)navigator.serviceWorker.register('${req.baseUrl}/service-worker.js');`;
296296
}
297297

298-
const file = [].concat(build_info.assets.main).filter(file => file && /\.js$/.test(file))[0];
298+
const file = [].concat(build_info.assets.main).filter(f => f && /\.js$/.test(f))[0];
299299
const main = `${req.baseUrl}/client/${file}`;
300300

301301
// users can set a CSP nonce using res.locals.nonce

runtime/src/server/middleware/sourcemap_stacktrace.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ function get_sourcemap_url(contents: string) {
1616

1717
const file_cache = new Map<string, string>();
1818

19-
function get_file_contents(path: string) {
20-
if (file_cache.has(path)) {
21-
return file_cache.get(path);
19+
function get_file_contents(file_path: string) {
20+
if (file_cache.has(file_path)) {
21+
return file_cache.get(file_path);
2222
}
2323

2424
try {
25-
const data = fs.readFileSync(path, 'utf8');
26-
file_cache.set(path, data);
25+
const data = fs.readFileSync(file_path, 'utf8');
26+
file_cache.set(file_path, data);
2727
return data;
2828
} catch {
2929
return undefined;
@@ -34,7 +34,7 @@ export function sourcemap_stacktrace(stack: string) {
3434
const replace = (line: string) =>
3535
line.replace(
3636
/^ {4}at (?:(.+?)\s+\()?(?:(.+?):(\d+)(?::(\d+))?)\)?/,
37-
(input, var_name, file_path, line, column) => {
37+
(input, var_name, file_path, line_num, column) => {
3838
if (!file_path) return input;
3939

4040
const contents = get_file_contents(file_path);
@@ -72,7 +72,7 @@ export function sourcemap_stacktrace(stack: string) {
7272

7373
const consumer = new SourceMapConsumer(raw_sourcemap);
7474
const pos = consumer.originalPositionFor({
75-
line: Number(line),
75+
line: Number(line_num),
7676
column: Number(column),
7777
bias: SourceMapConsumer.LEAST_UPPER_BOUND
7878
});

0 commit comments

Comments
 (0)