UNPKG

1.45 kBJavaScriptView Raw
1// Copyright 2019 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 color = require('chalk');
15
16const explanations = {
17 'relation "(\\w+)" does not exist': matches =>
18 color`I cannot find the table named {underline ${
19 matches[1]
20 }} in your database. Have you run {underline huncwot database setup} before starting the application?`,
21 'connect ECONNREFUSED 127.0.0.1:5432': matches =>
22 "It looks like you haven't started your database server."
23};
24
25const wrap = (text, prepand = '', width = 80) =>
26 text.replace(
27 new RegExp(`(?![^\\n]{1,${width}}$)([^\\n]{1,${width}})\\s`, 'g'),
28 `$1\n${prepand}`
29 );
30
31module.exports = {
32 for: error => {
33 for (let [pattern, explanation] of Object.entries(explanations)) {
34 let matches = error.message.match(pattern);
35 if (matches) return wrap(explanation(matches), ' ');
36 }
37 return wrap('(missing)', ' ');
38 }
39};