deno/cli/rt/01_errors.js
2020-07-23 16:27:26 +02:00

251 lines
5 KiB
JavaScript

// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
((window) => {
// Warning! The values in this enum are duplicated in cli/op_error.rs
// Update carefully!
const ErrorKind = {
1: "NotFound",
2: "PermissionDenied",
3: "ConnectionRefused",
4: "ConnectionReset",
5: "ConnectionAborted",
6: "NotConnected",
7: "AddrInUse",
8: "AddrNotAvailable",
9: "BrokenPipe",
10: "AlreadyExists",
13: "InvalidData",
14: "TimedOut",
15: "Interrupted",
16: "WriteZero",
17: "UnexpectedEof",
18: "BadResource",
19: "Http",
20: "URIError",
21: "TypeError",
22: "Other",
23: "Busy",
NotFound: 1,
PermissionDenied: 2,
ConnectionRefused: 3,
ConnectionReset: 4,
ConnectionAborted: 5,
NotConnected: 6,
AddrInUse: 7,
AddrNotAvailable: 8,
BrokenPipe: 9,
AlreadyExists: 10,
InvalidData: 13,
TimedOut: 14,
Interrupted: 15,
WriteZero: 16,
UnexpectedEof: 17,
BadResource: 18,
Http: 19,
URIError: 20,
TypeError: 21,
Other: 22,
Busy: 23,
};
function getErrorClass(kind) {
switch (kind) {
case ErrorKind.TypeError:
return TypeError;
case ErrorKind.Other:
return Error;
case ErrorKind.URIError:
return URIError;
case ErrorKind.NotFound:
return NotFound;
case ErrorKind.PermissionDenied:
return PermissionDenied;
case ErrorKind.ConnectionRefused:
return ConnectionRefused;
case ErrorKind.ConnectionReset:
return ConnectionReset;
case ErrorKind.ConnectionAborted:
return ConnectionAborted;
case ErrorKind.NotConnected:
return NotConnected;
case ErrorKind.AddrInUse:
return AddrInUse;
case ErrorKind.AddrNotAvailable:
return AddrNotAvailable;
case ErrorKind.BrokenPipe:
return BrokenPipe;
case ErrorKind.AlreadyExists:
return AlreadyExists;
case ErrorKind.InvalidData:
return InvalidData;
case ErrorKind.TimedOut:
return TimedOut;
case ErrorKind.Interrupted:
return Interrupted;
case ErrorKind.WriteZero:
return WriteZero;
case ErrorKind.UnexpectedEof:
return UnexpectedEof;
case ErrorKind.BadResource:
return BadResource;
case ErrorKind.Http:
return Http;
case ErrorKind.Busy:
return Busy;
}
}
class NotFound extends Error {
constructor(msg) {
super(msg);
this.name = "NotFound";
}
}
class PermissionDenied extends Error {
constructor(msg) {
super(msg);
this.name = "PermissionDenied";
}
}
class ConnectionRefused extends Error {
constructor(msg) {
super(msg);
this.name = "ConnectionRefused";
}
}
class ConnectionReset extends Error {
constructor(msg) {
super(msg);
this.name = "ConnectionReset";
}
}
class ConnectionAborted extends Error {
constructor(msg) {
super(msg);
this.name = "ConnectionAborted";
}
}
class NotConnected extends Error {
constructor(msg) {
super(msg);
this.name = "NotConnected";
}
}
class AddrInUse extends Error {
constructor(msg) {
super(msg);
this.name = "AddrInUse";
}
}
class AddrNotAvailable extends Error {
constructor(msg) {
super(msg);
this.name = "AddrNotAvailable";
}
}
class BrokenPipe extends Error {
constructor(msg) {
super(msg);
this.name = "BrokenPipe";
}
}
class AlreadyExists extends Error {
constructor(msg) {
super(msg);
this.name = "AlreadyExists";
}
}
class InvalidData extends Error {
constructor(msg) {
super(msg);
this.name = "InvalidData";
}
}
class TimedOut extends Error {
constructor(msg) {
super(msg);
this.name = "TimedOut";
}
}
class Interrupted extends Error {
constructor(msg) {
super(msg);
this.name = "Interrupted";
}
}
class WriteZero extends Error {
constructor(msg) {
super(msg);
this.name = "WriteZero";
}
}
class UnexpectedEof extends Error {
constructor(msg) {
super(msg);
this.name = "UnexpectedEof";
}
}
class BadResource extends Error {
constructor(msg) {
super(msg);
this.name = "BadResource";
}
}
class Http extends Error {
constructor(msg) {
super(msg);
this.name = "Http";
}
}
class Busy extends Error {
constructor(msg) {
super(msg);
this.name = "Busy";
}
}
const errors = {
NotFound,
PermissionDenied,
ConnectionRefused,
ConnectionReset,
ConnectionAborted,
NotConnected,
AddrInUse,
AddrNotAvailable,
BrokenPipe,
AlreadyExists,
InvalidData,
TimedOut,
Interrupted,
WriteZero,
UnexpectedEof,
BadResource,
Http,
Busy,
};
window.__bootstrap.errors = {
errors,
getErrorClass,
};
})(this);