Compare commits

...

15 Commits

Author SHA1 Message Date
Rich Harris
3af5503009 -> v0.1.4 2017-12-17 21:34:28 -05:00
Rich Harris
c1de442dd1 argh not again 2017-12-17 21:34:16 -05:00
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-4
* 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 path = require('path');
const mkdirp = require('mkdirp');
const rimraf = require('rimraf');
exports.dev = process.env.NODE_ENV !== 'production'; exports.dev = process.env.NODE_ENV !== 'production';
@@ -11,6 +13,7 @@ exports.dest = path.resolve(
process.env.SAPPER_DEST || '.sapper' 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'); 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'); const { src, dest, dev } = require('./config.js');
module.exports = function connect(opts) { module.exports = function connect(opts) {
mkdirp(dest);
rimraf.sync(path.join(dest, '**/*'));
let routes = create_routes( let routes = create_routes(
glob.sync('**/*.+(html|js|mjs)', { cwd: src }) 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 // whatever happens, we're going to serve some HTML
res.set({ res.set({
'Content-Type': 'text/html' 'Content-Type': 'text/html'
@@ -128,20 +125,7 @@ module.exports = function connect(opts) {
else { else {
const handler = mod[req.method.toLowerCase()]; const handler = mod[req.method.toLowerCase()];
if (handler) { if (handler) handler(req, res, next);
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));
}
}
}
} }
return; return;
@@ -170,7 +154,7 @@ module.exports = function connect(opts) {
handle_index(url, req, res, () => { handle_index(url, req, res, () => {
handle_service_worker(url, req, res, () => { handle_service_worker(url, req, res, () => {
handle_webpack_generated_files(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 fs = require('fs');
const path = require('path'); 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) { module.exports = function create_app(src, dest, routes, options) {
function create_client_main() { function create_client_main() {
@@ -20,14 +20,17 @@ module.exports = function create_app(src, dest, routes, options) {
}]`; }]`;
const main = template const main = template
.replace(/__app__/g, path.resolve(__dirname, '../../runtime/app.js'))
.replace(/__routes__/g, code) .replace(/__routes__/g, code)
.replace(/__dev__/g, String(dev)); .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 // need to fudge the mtime, because webpack is soft in the head
const stats = fs.statSync(main_built); const { atime, mtime } = fs.statSync(file);
fs.utimesSync(main_built, stats.atimeMs - 999999, stats.mtimeMs - 999999); fs.utimesSync(file, atime.getTime() - 999999, mtime.getTime() - 999999);
} }
function create_server_routes() { 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}`); fs.writeFileSync(server_routes, `${imports}\n\n${exports}`);
const stats = fs.statSync(server_routes); const { atime, mtime } = fs.statSync(server_routes);
fs.utimesSync(server_routes, stats.atimeMs - 999999, stats.mtimeMs - 999999); fs.utimesSync(server_routes, atime.getTime() - 999999, mtime.getTime() - 999999);
} }
// TODO in dev mode, watch files // TODO in dev mode, watch files

View File

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

View File

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

View File

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