UNPKG

1.41 kBJavaScriptView Raw
1// Copyright 2016 Zaiste & contributors. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14const { createGzip } = require('zlib');
15const { join } = require('path');
16const { html } = require('./response');
17const color = require('chalk');
18
19const cwd = process.cwd();
20const isProduction = false;
21
22async function page(name, bindings) {
23 const template = require(join(cwd, 'pages', `${name}.marko`));
24 const error = require(join(__dirname, 'util', 'error.marko'));
25
26 let r;
27 try {
28 r = await template.render(bindings);
29 } catch (_) {
30 console.error(
31 `${color.bold.red(
32 'Error:'
33 )} there's a problem generating the page '${color.blue(name)}.marko'`
34 );
35 r = await error.render({ _ });
36 }
37
38 return html(r.getOutput());
39}
40
41function gzip(body) {
42 return {
43 body: body.pipe(createGzip()),
44 encoding: 'gzip'
45 };
46}
47
48module.exports = {
49 page,
50 gzip
51};