Compare commits

..

13 Commits

Author SHA1 Message Date
Rich Harris
0c6b7e3836 -> v0.1.3 2017-12-17 21:07:55 -05:00
Rich Harris
dc5e2543cb argh copypasta fail 2017-12-17 21:07:34 -05:00
Rich Harris
ecc7b80d91 -> v0.1.2 2017-12-17 20:43:52 -05:00
Rich Harris
40024e7d86 Merge pull request #18 from sveltejs/make-dest-dir
create dest dir immediately - should fix some CI failures
2017-12-17 20:41:55 -05:00
Rich Harris
6f71f7ad4d Merge pull request #17 from sveltejs/gh-11
use atime.getTime() and mtime.getTime() - hopefully fixes #11
2017-12-17 20:41:30 -05:00
Rich Harris
6eb99b195e use atime.getTime() and mtime.getTime() - hopefully fixes #11 2017-12-17 20:39:18 -05:00
Rich Harris
9e08fee9a1 create dest dir immediately - should fix some CI failures 2017-12-17 20:24:58 -05:00
Rich Harris
442ce366e2 -> v0.1.1 2017-12-17 15:18:03 -05:00
Rich Harris
dc929fcd83 inject app path, since dest might be /tmp causing resolution failure 2017-12-17 15:17:23 -05:00
Rich Harris
2dc246398b -> v0.1.0 2017-12-17 15:05:51 -05:00
Rich Harris
b7ac067459 always write to .sapper, not templates, since we cant guarantee fs access 2017-12-17 15:04:20 -05:00
Rich Harris
8b50ff34b8 named exports, for tree-shakeability when we add new stuff 2017-12-17 15:01:26 -05:00
Rich Harris
62abdb2a87 remove magic return values from server routes 2017-12-17 15:01:05 -05:00
7 changed files with 56 additions and 52 deletions

18
CHANGELOG.md Normal file
View File

@@ -0,0 +1,18 @@
# sapper changelog
## 0.1.3
* Fix typo
## 0.1.2
* Use `atime.getTime()` and `mtime.getTime()` instead of `atimeMs` and `mtimeMs` ([#11](https://github.com/sveltejs/sapper/issues/11))
* Make dest dir before anyone tries to write to it ([#18](https://github.com/sveltejs/sapper/pull/18))
## 0.1.1
* Expose resolved pathname to `sapper/runtime/app.js` as `__app__` inside main.js
## 0.1.0
* First public preview

View File

@@ -1,4 +1,6 @@
const path = require('path');
const mkdirp = require('mkdirp');
const rimraf = require('rimraf');
exports.dev = process.env.NODE_ENV !== 'production';
@@ -11,6 +13,7 @@ exports.dest = path.resolve(
process.env.SAPPER_DEST || '.sapper'
);
exports.main_built = path.resolve('templates/.main.tmp.js');
mkdirp(exports.dest);
rimraf.sync(path.join(exports.dest, '**/*'));
exports.server_routes = path.resolve(exports.dest, 'server-routes.js');

View File

@@ -12,9 +12,6 @@ const escape_html = require('escape-html');
const { src, dest, dev } = require('./config.js');
module.exports = function connect(opts) {
mkdirp(dest);
rimraf.sync(path.join(dest, '**/*'));
let routes = create_routes(
glob.sync('**/*.+(html|js|mjs)', { cwd: src })
);
@@ -94,7 +91,7 @@ module.exports = function connect(opts) {
}
}
async function handle_route(url, req, res) {
async function handle_route(url, req, res, next) {
// whatever happens, we're going to serve some HTML
res.set({
'Content-Type': 'text/html'
@@ -128,20 +125,7 @@ module.exports = function connect(opts) {
else {
const handler = mod[req.method.toLowerCase()];
if (handler) {
if (handler.length === 2) {
handler(req, res);
} else {
const data = await handler(req);
// TODO headers, error handling
if (typeof data === 'string') {
res.end(data);
} else {
res.end(JSON.stringify(data));
}
}
}
if (handler) handler(req, res, next);
}
return;
@@ -170,7 +154,7 @@ module.exports = function connect(opts) {
handle_index(url, req, res, () => {
handle_service_worker(url, req, res, () => {
handle_webpack_generated_files(url, req, res, () => {
handle_route(url, req, res);
handle_route(url, req, res, next);
});
});
});

View File

@@ -1,6 +1,6 @@
const fs = require('fs');
const path = require('path');
const { dest, main_built, server_routes, dev } = require('../config.js');
const { dest, server_routes, dev } = require('../config.js');
module.exports = function create_app(src, dest, routes, options) {
function create_client_main() {
@@ -20,14 +20,17 @@ module.exports = function create_app(src, dest, routes, options) {
}]`;
const main = template
.replace(/__app__/g, path.resolve(__dirname, '../../runtime/app.js'))
.replace(/__routes__/g, code)
.replace(/__dev__/g, String(dev));
fs.writeFileSync(main_built, main);
const file = path.resolve(dest, 'main.js');
fs.writeFileSync(file, main);
// need to fudge the mtime, because webpack is soft in the head
const stats = fs.statSync(main_built);
fs.utimesSync(main_built, stats.atimeMs - 999999, stats.mtimeMs - 999999);
const { atime, mtime } = fs.statSync(file);
fs.utimesSync(file, atime.getTime() - 999999, mtime.getTime() - 999999);
}
function create_server_routes() {
@@ -43,8 +46,8 @@ module.exports = function create_app(src, dest, routes, options) {
fs.writeFileSync(server_routes, `${imports}\n\n${exports}`);
const stats = fs.statSync(server_routes);
fs.utimesSync(server_routes, stats.atimeMs - 999999, stats.mtimeMs - 999999);
const { atime, mtime } = statSync(server_routes);
fs.utimesSync(server_routes, atime.getTime() - 999999, mtime.getTime() - 999999);
}
// TODO in dev mode, watch files

View File

@@ -1,7 +1,7 @@
{
"name": "sapper",
"version": "0.0.22",
"description": "Combat-ready apps, engineered by Svelte",
"version": "0.1.3",
"description": "Military-grade apps, engineered by Svelte",
"main": "lib/index.js",
"directories": {
"test": "test"

View File

@@ -2,7 +2,7 @@ const detach = node => {
node.parentNode.removeChild(node);
};
let component;
export let component;
let target;
let routes;
@@ -158,28 +158,26 @@ function findAnchor(node) {
let inited;
const app = {
init(_target, _routes) {
target = _target;
routes = _routes;
export function init(_target, _routes) {
target = _target;
routes = _routes;
if (!inited) { // this check makes HMR possible
window.addEventListener('click', handle_click);
window.addEventListener('popstate', handle_popstate);
if (!inited) { // this check makes HMR possible
window.addEventListener('click', handle_click);
window.addEventListener('popstate', handle_popstate);
// prefetch
window.addEventListener('touchstart', prefetch);
window.addEventListener('mouseover', prefetch);
// prefetch
window.addEventListener('touchstart', prefetch);
window.addEventListener('mouseover', prefetch);
inited = true;
}
const scroll = scroll_history[uid] = scroll_state();
history.replaceState({ id: uid }, '', window.location.href);
navigate(new URL(window.location), uid);
inited = true;
}
};
const scroll = scroll_history[uid] = scroll_state();
history.replaceState({ id: uid }, '', window.location.href);
navigate(new URL(window.location), uid);
}
function which(event) {
event = event || window.event;
@@ -191,6 +189,4 @@ function scroll_state() {
x: window.scrollX,
y: window.scrollY
};
}
export default app;
}

View File

@@ -1,6 +1,6 @@
const path = require('path');
const route_manager = require('../lib/route_manager.js');
const { src, dest, dev, main_built, server_routes } = require('../lib/config.js');
const { src, dest, dev, server_routes } = require('../lib/config.js');
module.exports = {
dev,
@@ -8,7 +8,7 @@ module.exports = {
client: {
entry: () => {
return {
main: main_built
main: `${dest}/main.js`
};
},