gurted
Version:
A lightweight Node.js implementation of the gurt:// protocol
79 lines (78 loc) • 3.37 kB
JavaScript
// src/protocol.ts
export const GURT_VERSION = "1.0.0";
export const DEFAULT_PORT = 4878;
export const PROTOCOL_PREFIX = "GURT/";
export const HEADER_SEPARATOR = "\r\n";
export const BODY_SEPARATOR = "\r\n\r\n";
export const DEFAULT_HANDSHAKE_TIMEOUT = 5000;
export const DEFAULT_REQUEST_TIMEOUT = 30000;
export const DEFAULT_CONNECTION_TIMEOUT = 10000;
export const MAX_MESSAGE_SIZE = 10 * 1024 * 1024;
export const MAX_POOL_SIZE = 10;
export const POOL_IDLE_TIMEOUT = 300000;
export const GURT_ALPN = Buffer.from("GURT/1.0");
export const TLS_VERSION = "TLS/1.3";
// Status codes enum
export var GurtStatusCode;
(function (GurtStatusCode) {
GurtStatusCode[GurtStatusCode["Ok"] = 200] = "Ok";
GurtStatusCode[GurtStatusCode["Created"] = 201] = "Created";
GurtStatusCode[GurtStatusCode["Accepted"] = 202] = "Accepted";
GurtStatusCode[GurtStatusCode["NoContent"] = 204] = "NoContent";
GurtStatusCode[GurtStatusCode["SwitchingProtocols"] = 101] = "SwitchingProtocols";
GurtStatusCode[GurtStatusCode["BadRequest"] = 400] = "BadRequest";
GurtStatusCode[GurtStatusCode["Unauthorized"] = 401] = "Unauthorized";
GurtStatusCode[GurtStatusCode["Forbidden"] = 403] = "Forbidden";
GurtStatusCode[GurtStatusCode["NotFound"] = 404] = "NotFound";
GurtStatusCode[GurtStatusCode["MethodNotAllowed"] = 405] = "MethodNotAllowed";
GurtStatusCode[GurtStatusCode["Timeout"] = 408] = "Timeout";
GurtStatusCode[GurtStatusCode["TooLarge"] = 413] = "TooLarge";
GurtStatusCode[GurtStatusCode["UnsupportedMediaType"] = 415] = "UnsupportedMediaType";
GurtStatusCode[GurtStatusCode["TooManyRequests"] = 429] = "TooManyRequests";
GurtStatusCode[GurtStatusCode["InternalServerError"] = 500] = "InternalServerError";
GurtStatusCode[GurtStatusCode["NotImplemented"] = 501] = "NotImplemented";
GurtStatusCode[GurtStatusCode["BadGateway"] = 502] = "BadGateway";
GurtStatusCode[GurtStatusCode["ServiceUnavailable"] = 503] = "ServiceUnavailable";
GurtStatusCode[GurtStatusCode["GatewayTimeout"] = 504] = "GatewayTimeout";
})(GurtStatusCode || (GurtStatusCode = {}));
// Status Codes
export var GurtStatus;
(function (GurtStatus) {
function getMessage(code) {
const messages = {
200: "OK",
201: "CREATED",
202: "ACCEPTED",
204: "NO_CONTENT",
101: "SWITCHING_PROTOCOLS",
400: "BAD_REQUEST",
401: "UNAUTHORIZED",
403: "FORBIDDEN",
404: "NOT_FOUND",
405: "METHOD_NOT_ALLOWED",
408: "TIMEOUT",
413: "TOO_LARGE",
415: "UNSUPPORTED_MEDIA_TYPE",
429: "TOO_MANY_REQUESTS",
500: "INTERNAL_SERVER_ERROR",
501: "NOT_IMPLEMENTED",
502: "BAD_GATEWAY",
503: "SERVICE_UNAVAILABLE",
504: "GATEWAY_TIMEOUT",
};
return messages[code] || "UNKNOWN";
}
GurtStatus.getMessage = getMessage;
function isSuccess(code) {
return code >= 200 && code < 300;
}
GurtStatus.isSuccess = isSuccess;
function isClientError(code) {
return code >= 400 && code < 500;
}
GurtStatus.isClientError = isClientError;
function isServerError(code) {
return code >= 500;
}
GurtStatus.isServerError = isServerError;
})(GurtStatus || (GurtStatus = {}));