Compare commits

...

6 Commits

Author SHA1 Message Date
Rich Harris
9403799393 -> v0.22.8 2018-10-02 10:37:19 -04:00
Rich Harris
472c0c198a Merge pull request #462 from sveltejs/overwrite-css-placeholders
ensure CSS placeholders are overwritten
2018-10-02 10:36:39 -04:00
Rich Harris
02256ae214 ensure CSS placeholders are overwritten 2018-10-02 10:27:02 -04:00
Rich Harris
e2d325ec9f -> v0.22.7 2018-10-01 22:58:44 -04:00
Rich Harris
954bcba333 Merge pull request #460 from sveltejs/cookies
more robust cookies
2018-10-01 22:58:30 -04:00
Rich Harris
709c9992e3 more robust cookies 2018-10-01 22:47:11 -04:00
7 changed files with 41 additions and 32 deletions

View File

@@ -1,5 +1,13 @@
# sapper changelog # sapper changelog
## 0.22.8
* Ensure CSS placeholders are overwritten ([#462](https://github.com/sveltejs/sapper/pull/462))
## 0.22.7
* Fix cookies ([#460](https://github.com/sveltejs/sapper/pull/460))
## 0.22.6 ## 0.22.6
* Normalise chunk filenames on Windows ([#456](https://github.com/sveltejs/sapper/pull/456)) * Normalise chunk filenames on Windows ([#456](https://github.com/sveltejs/sapper/pull/456))

View File

@@ -1,6 +1,6 @@
{ {
"name": "sapper", "name": "sapper",
"version": "0.22.6", "version": "0.22.8",
"description": "Military-grade apps, engineered by Svelte", "description": "Military-grade apps, engineered by Svelte",
"bin": { "bin": {
"sapper": "./sapper" "sapper": "./sapper"

View File

@@ -205,11 +205,15 @@ export default function extract_css(client_result: CompileResult, components: Pa
result.chunks[component.file] = files; result.chunks[component.file] = files;
}); });
const replaced = entry.replace(/["']__SAPPER_CSS_PLACEHOLDER:(.+?)__["']/g, (m, route) => { fs.readdirSync(`${dirs.dest}/client`).forEach(file => {
return JSON.stringify(replacements.get(route)); const source = fs.readFileSync(`${dirs.dest}/client/${file}`, 'utf-8');
});
fs.writeFileSync(`${dirs.dest}/client/${main}`, replaced); const replaced = source.replace(/["']__SAPPER_CSS_PLACEHOLDER:(.+?)__["']/g, (m, route) => {
return JSON.stringify(replacements.get(route));
});
fs.writeFileSync(`${dirs.dest}/client/${file}`, replaced);
});
const leftover = get_css_from_modules(Array.from(unaccounted_for)); const leftover = get_css_from_modules(Array.from(unaccounted_for));
if (leftover) { if (leftover) {

View File

@@ -93,19 +93,21 @@ export function get_page_handler(
if (include_cookies) { if (include_cookies) {
if (!opts.headers) opts.headers = {}; if (!opts.headers) opts.headers = {};
const str = [] const cookies = Object.assign(
.concat( {},
cookie.parse(req.headers.cookie || ''), cookie.parse(req.headers.cookie || ''),
cookie.parse(opts.headers.cookie || ''), cookie.parse(opts.headers.cookie || '')
cookie.parse(res.getHeader('Set-Cookie') || '') );
)
.map(cookie => { const set_cookie = res.getHeader('Set-Cookie');
return Object.keys(cookie) (Array.isArray(set_cookie) ? set_cookie : [set_cookie]).forEach(str => {
.map(name => `${name}=${encodeURIComponent(cookie[name])}`) const match = /([^=]+)=([^;]+)/.exec(<string>str);
.join('; '); if (match) cookies[match[1]] = match[2];
}) });
.filter(Boolean)
.join(', '); const str = Object.keys(cookies)
.map(key => `${key}=${cookies[key]}`)
.join('; ');
opts.headers.cookie = str; opts.headers.cookie = str;
} }

View File

@@ -1,20 +1,15 @@
export function get(req, res) { import cookie from 'cookie';
const cookies = req.headers.cookie
? req.headers.cookie.split(/,\s+/).reduce((cookies, cookie) => { export function get(req, res) {
const [pair] = cookie.split('; '); if (req.headers.cookie) {
const [name, value] = pair.split('='); const cookies = cookie.parse(req.headers.cookie);
cookies[name] = value;
return cookies;
}, {})
: {};
if (cookies.test) {
res.writeHead(200, { res.writeHead(200, {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}); });
res.end(JSON.stringify({ res.end(JSON.stringify({
message: cookies.test message: `a: ${cookies.a}, b: ${cookies.b}, max-age: ${cookies['max-age']}`
})); }));
} else { } else {
res.writeHead(403, { res.writeHead(403, {

View File

@@ -44,7 +44,7 @@ const middlewares = [
// set test cookie // set test cookie
(req, res, next) => { (req, res, next) => {
res.setHeader('Set-Cookie', 'test=woohoo!; Max-Age=3600'); res.setHeader('Set-Cookie', ['a=1; Path=/', 'b=2; Path=/']);
next(); next();
}, },

View File

@@ -623,7 +623,7 @@ function run({ mode, basepath = '' }) {
return nightmare.goto(`${base}/credentials?creds=include`) return nightmare.goto(`${base}/credentials?creds=include`)
.page.title() .page.title()
.then(title => { .then(title => {
assert.equal(title, 'woohoo!'); assert.equal(title, 'a: 1, b: 2, max-age: undefined');
}); });
}); });
@@ -641,7 +641,7 @@ function run({ mode, basepath = '' }) {
.wait(100) .wait(100)
.page.title() .page.title()
.then(title => { .then(title => {
assert.equal(title, 'woohoo!'); assert.equal(title, 'a: 1, b: 2, max-age: undefined');
}); });
}); });