summaryrefslogtreecommitdiffstats
path: root/src/zerror.js
blob: 1a779ded669bb606ae0d653c2ea855e2debc3295 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"use strict";

var Zmodem = module.exports;

function _crc_message(got, expected) {
    this.got = got.slice(0);
    this.expected = expected.slice(0);
    return "CRC check failed! (got: " + got.join() + "; expected: " + expected.join() + ")";
}

function _pass(val) { return val }

const TYPE_MESSAGE = {
    aborted: "Session aborted",
    peer_aborted: "Peer aborted session",
    already_aborted: "Session already aborted",
    crc: _crc_message,
    validation: _pass,
};

function _generate_message(type) {
    const msg = TYPE_MESSAGE[type];
    switch (typeof msg) {
        case "string":
            return msg;
        case "function":
            var args_after_type = [].slice.call(arguments).slice(1);
            return msg.apply(this, args_after_type);
    }

    return null;
}

Zmodem.Error = class ZmodemError extends Error {
    constructor(msg_or_type) {
        super();

        var generated = _generate_message.apply(this, arguments);
        if (generated) {
            this.type = msg_or_type;
            this.message = generated;
        }
        else {
            this.message = msg_or_type;
        }
    }
};