aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/undici/lib/llhttp/constants.js
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/undici/lib/llhttp/constants.js')
-rw-r--r--vanilla/node_modules/undici/lib/llhttp/constants.js531
1 files changed, 531 insertions, 0 deletions
diff --git a/vanilla/node_modules/undici/lib/llhttp/constants.js b/vanilla/node_modules/undici/lib/llhttp/constants.js
new file mode 100644
index 0000000..8b88dfd
--- /dev/null
+++ b/vanilla/node_modules/undici/lib/llhttp/constants.js
@@ -0,0 +1,531 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SPECIAL_HEADERS = exports.MINOR = exports.MAJOR = exports.HTAB_SP_VCHAR_OBS_TEXT = exports.QUOTED_STRING = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.HEX = exports.URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.STATUSES_HTTP = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.HEADER_STATE = exports.FINISH = exports.STATUSES = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
+const utils_1 = require("./utils");
+// Emums
+exports.ERROR = {
+ OK: 0,
+ INTERNAL: 1,
+ STRICT: 2,
+ CR_EXPECTED: 25,
+ LF_EXPECTED: 3,
+ UNEXPECTED_CONTENT_LENGTH: 4,
+ UNEXPECTED_SPACE: 30,
+ CLOSED_CONNECTION: 5,
+ INVALID_METHOD: 6,
+ INVALID_URL: 7,
+ INVALID_CONSTANT: 8,
+ INVALID_VERSION: 9,
+ INVALID_HEADER_TOKEN: 10,
+ INVALID_CONTENT_LENGTH: 11,
+ INVALID_CHUNK_SIZE: 12,
+ INVALID_STATUS: 13,
+ INVALID_EOF_STATE: 14,
+ INVALID_TRANSFER_ENCODING: 15,
+ CB_MESSAGE_BEGIN: 16,
+ CB_HEADERS_COMPLETE: 17,
+ CB_MESSAGE_COMPLETE: 18,
+ CB_CHUNK_HEADER: 19,
+ CB_CHUNK_COMPLETE: 20,
+ PAUSED: 21,
+ PAUSED_UPGRADE: 22,
+ PAUSED_H2_UPGRADE: 23,
+ USER: 24,
+ CB_URL_COMPLETE: 26,
+ CB_STATUS_COMPLETE: 27,
+ CB_METHOD_COMPLETE: 32,
+ CB_VERSION_COMPLETE: 33,
+ CB_HEADER_FIELD_COMPLETE: 28,
+ CB_HEADER_VALUE_COMPLETE: 29,
+ CB_CHUNK_EXTENSION_NAME_COMPLETE: 34,
+ CB_CHUNK_EXTENSION_VALUE_COMPLETE: 35,
+ CB_RESET: 31,
+ CB_PROTOCOL_COMPLETE: 38,
+};
+exports.TYPE = {
+ BOTH: 0, // default
+ REQUEST: 1,
+ RESPONSE: 2,
+};
+exports.FLAGS = {
+ CONNECTION_KEEP_ALIVE: 1 << 0,
+ CONNECTION_CLOSE: 1 << 1,
+ CONNECTION_UPGRADE: 1 << 2,
+ CHUNKED: 1 << 3,
+ UPGRADE: 1 << 4,
+ CONTENT_LENGTH: 1 << 5,
+ SKIPBODY: 1 << 6,
+ TRAILING: 1 << 7,
+ // 1 << 8 is unused
+ TRANSFER_ENCODING: 1 << 9,
+};
+exports.LENIENT_FLAGS = {
+ HEADERS: 1 << 0,
+ CHUNKED_LENGTH: 1 << 1,
+ KEEP_ALIVE: 1 << 2,
+ TRANSFER_ENCODING: 1 << 3,
+ VERSION: 1 << 4,
+ DATA_AFTER_CLOSE: 1 << 5,
+ OPTIONAL_LF_AFTER_CR: 1 << 6,
+ OPTIONAL_CRLF_AFTER_CHUNK: 1 << 7,
+ OPTIONAL_CR_BEFORE_LF: 1 << 8,
+ SPACES_AFTER_CHUNK_SIZE: 1 << 9,
+};
+exports.METHODS = {
+ 'DELETE': 0,
+ 'GET': 1,
+ 'HEAD': 2,
+ 'POST': 3,
+ 'PUT': 4,
+ /* pathological */
+ 'CONNECT': 5,
+ 'OPTIONS': 6,
+ 'TRACE': 7,
+ /* WebDAV */
+ 'COPY': 8,
+ 'LOCK': 9,
+ 'MKCOL': 10,
+ 'MOVE': 11,
+ 'PROPFIND': 12,
+ 'PROPPATCH': 13,
+ 'SEARCH': 14,
+ 'UNLOCK': 15,
+ 'BIND': 16,
+ 'REBIND': 17,
+ 'UNBIND': 18,
+ 'ACL': 19,
+ /* subversion */
+ 'REPORT': 20,
+ 'MKACTIVITY': 21,
+ 'CHECKOUT': 22,
+ 'MERGE': 23,
+ /* upnp */
+ 'M-SEARCH': 24,
+ 'NOTIFY': 25,
+ 'SUBSCRIBE': 26,
+ 'UNSUBSCRIBE': 27,
+ /* RFC-5789 */
+ 'PATCH': 28,
+ 'PURGE': 29,
+ /* CalDAV */
+ 'MKCALENDAR': 30,
+ /* RFC-2068, section 19.6.1.2 */
+ 'LINK': 31,
+ 'UNLINK': 32,
+ /* icecast */
+ 'SOURCE': 33,
+ /* RFC-7540, section 11.6 */
+ 'PRI': 34,
+ /* RFC-2326 RTSP */
+ 'DESCRIBE': 35,
+ 'ANNOUNCE': 36,
+ 'SETUP': 37,
+ 'PLAY': 38,
+ 'PAUSE': 39,
+ 'TEARDOWN': 40,
+ 'GET_PARAMETER': 41,
+ 'SET_PARAMETER': 42,
+ 'REDIRECT': 43,
+ 'RECORD': 44,
+ /* RAOP */
+ 'FLUSH': 45,
+ /* DRAFT https://www.ietf.org/archive/id/draft-ietf-httpbis-safe-method-w-body-02.html */
+ 'QUERY': 46,
+};
+exports.STATUSES = {
+ CONTINUE: 100,
+ SWITCHING_PROTOCOLS: 101,
+ PROCESSING: 102,
+ EARLY_HINTS: 103,
+ RESPONSE_IS_STALE: 110, // Unofficial
+ REVALIDATION_FAILED: 111, // Unofficial
+ DISCONNECTED_OPERATION: 112, // Unofficial
+ HEURISTIC_EXPIRATION: 113, // Unofficial
+ MISCELLANEOUS_WARNING: 199, // Unofficial
+ OK: 200,
+ CREATED: 201,
+ ACCEPTED: 202,
+ NON_AUTHORITATIVE_INFORMATION: 203,
+ NO_CONTENT: 204,
+ RESET_CONTENT: 205,
+ PARTIAL_CONTENT: 206,
+ MULTI_STATUS: 207,
+ ALREADY_REPORTED: 208,
+ TRANSFORMATION_APPLIED: 214, // Unofficial
+ IM_USED: 226,
+ MISCELLANEOUS_PERSISTENT_WARNING: 299, // Unofficial
+ MULTIPLE_CHOICES: 300,
+ MOVED_PERMANENTLY: 301,
+ FOUND: 302,
+ SEE_OTHER: 303,
+ NOT_MODIFIED: 304,
+ USE_PROXY: 305,
+ SWITCH_PROXY: 306, // No longer used
+ TEMPORARY_REDIRECT: 307,
+ PERMANENT_REDIRECT: 308,
+ BAD_REQUEST: 400,
+ UNAUTHORIZED: 401,
+ PAYMENT_REQUIRED: 402,
+ FORBIDDEN: 403,
+ NOT_FOUND: 404,
+ METHOD_NOT_ALLOWED: 405,
+ NOT_ACCEPTABLE: 406,
+ PROXY_AUTHENTICATION_REQUIRED: 407,
+ REQUEST_TIMEOUT: 408,
+ CONFLICT: 409,
+ GONE: 410,
+ LENGTH_REQUIRED: 411,
+ PRECONDITION_FAILED: 412,
+ PAYLOAD_TOO_LARGE: 413,
+ URI_TOO_LONG: 414,
+ UNSUPPORTED_MEDIA_TYPE: 415,
+ RANGE_NOT_SATISFIABLE: 416,
+ EXPECTATION_FAILED: 417,
+ IM_A_TEAPOT: 418,
+ PAGE_EXPIRED: 419, // Unofficial
+ ENHANCE_YOUR_CALM: 420, // Unofficial
+ MISDIRECTED_REQUEST: 421,
+ UNPROCESSABLE_ENTITY: 422,
+ LOCKED: 423,
+ FAILED_DEPENDENCY: 424,
+ TOO_EARLY: 425,
+ UPGRADE_REQUIRED: 426,
+ PRECONDITION_REQUIRED: 428,
+ TOO_MANY_REQUESTS: 429,
+ REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL: 430, // Unofficial
+ REQUEST_HEADER_FIELDS_TOO_LARGE: 431,
+ LOGIN_TIMEOUT: 440, // Unofficial
+ NO_RESPONSE: 444, // Unofficial
+ RETRY_WITH: 449, // Unofficial
+ BLOCKED_BY_PARENTAL_CONTROL: 450, // Unofficial
+ UNAVAILABLE_FOR_LEGAL_REASONS: 451,
+ CLIENT_CLOSED_LOAD_BALANCED_REQUEST: 460, // Unofficial
+ INVALID_X_FORWARDED_FOR: 463, // Unofficial
+ REQUEST_HEADER_TOO_LARGE: 494, // Unofficial
+ SSL_CERTIFICATE_ERROR: 495, // Unofficial
+ SSL_CERTIFICATE_REQUIRED: 496, // Unofficial
+ HTTP_REQUEST_SENT_TO_HTTPS_PORT: 497, // Unofficial
+ INVALID_TOKEN: 498, // Unofficial
+ CLIENT_CLOSED_REQUEST: 499, // Unofficial
+ INTERNAL_SERVER_ERROR: 500,
+ NOT_IMPLEMENTED: 501,
+ BAD_GATEWAY: 502,
+ SERVICE_UNAVAILABLE: 503,
+ GATEWAY_TIMEOUT: 504,
+ HTTP_VERSION_NOT_SUPPORTED: 505,
+ VARIANT_ALSO_NEGOTIATES: 506,
+ INSUFFICIENT_STORAGE: 507,
+ LOOP_DETECTED: 508,
+ BANDWIDTH_LIMIT_EXCEEDED: 509,
+ NOT_EXTENDED: 510,
+ NETWORK_AUTHENTICATION_REQUIRED: 511,
+ WEB_SERVER_UNKNOWN_ERROR: 520, // Unofficial
+ WEB_SERVER_IS_DOWN: 521, // Unofficial
+ CONNECTION_TIMEOUT: 522, // Unofficial
+ ORIGIN_IS_UNREACHABLE: 523, // Unofficial
+ TIMEOUT_OCCURED: 524, // Unofficial
+ SSL_HANDSHAKE_FAILED: 525, // Unofficial
+ INVALID_SSL_CERTIFICATE: 526, // Unofficial
+ RAILGUN_ERROR: 527, // Unofficial
+ SITE_IS_OVERLOADED: 529, // Unofficial
+ SITE_IS_FROZEN: 530, // Unofficial
+ IDENTITY_PROVIDER_AUTHENTICATION_ERROR: 561, // Unofficial
+ NETWORK_READ_TIMEOUT: 598, // Unofficial
+ NETWORK_CONNECT_TIMEOUT: 599, // Unofficial
+};
+exports.FINISH = {
+ SAFE: 0,
+ SAFE_WITH_CB: 1,
+ UNSAFE: 2,
+};
+exports.HEADER_STATE = {
+ GENERAL: 0,
+ CONNECTION: 1,
+ CONTENT_LENGTH: 2,
+ TRANSFER_ENCODING: 3,
+ UPGRADE: 4,
+ CONNECTION_KEEP_ALIVE: 5,
+ CONNECTION_CLOSE: 6,
+ CONNECTION_UPGRADE: 7,
+ TRANSFER_ENCODING_CHUNKED: 8,
+};
+// C headers
+exports.METHODS_HTTP = [
+ exports.METHODS.DELETE,
+ exports.METHODS.GET,
+ exports.METHODS.HEAD,
+ exports.METHODS.POST,
+ exports.METHODS.PUT,
+ exports.METHODS.CONNECT,
+ exports.METHODS.OPTIONS,
+ exports.METHODS.TRACE,
+ exports.METHODS.COPY,
+ exports.METHODS.LOCK,
+ exports.METHODS.MKCOL,
+ exports.METHODS.MOVE,
+ exports.METHODS.PROPFIND,
+ exports.METHODS.PROPPATCH,
+ exports.METHODS.SEARCH,
+ exports.METHODS.UNLOCK,
+ exports.METHODS.BIND,
+ exports.METHODS.REBIND,
+ exports.METHODS.UNBIND,
+ exports.METHODS.ACL,
+ exports.METHODS.REPORT,
+ exports.METHODS.MKACTIVITY,
+ exports.METHODS.CHECKOUT,
+ exports.METHODS.MERGE,
+ exports.METHODS['M-SEARCH'],
+ exports.METHODS.NOTIFY,
+ exports.METHODS.SUBSCRIBE,
+ exports.METHODS.UNSUBSCRIBE,
+ exports.METHODS.PATCH,
+ exports.METHODS.PURGE,
+ exports.METHODS.MKCALENDAR,
+ exports.METHODS.LINK,
+ exports.METHODS.UNLINK,
+ exports.METHODS.PRI,
+ // TODO(indutny): should we allow it with HTTP?
+ exports.METHODS.SOURCE,
+ exports.METHODS.QUERY,
+];
+exports.METHODS_ICE = [
+ exports.METHODS.SOURCE,
+];
+exports.METHODS_RTSP = [
+ exports.METHODS.OPTIONS,
+ exports.METHODS.DESCRIBE,
+ exports.METHODS.ANNOUNCE,
+ exports.METHODS.SETUP,
+ exports.METHODS.PLAY,
+ exports.METHODS.PAUSE,
+ exports.METHODS.TEARDOWN,
+ exports.METHODS.GET_PARAMETER,
+ exports.METHODS.SET_PARAMETER,
+ exports.METHODS.REDIRECT,
+ exports.METHODS.RECORD,
+ exports.METHODS.FLUSH,
+ // For AirPlay
+ exports.METHODS.GET,
+ exports.METHODS.POST,
+];
+exports.METHOD_MAP = (0, utils_1.enumToMap)(exports.METHODS);
+exports.H_METHOD_MAP = Object.fromEntries(Object.entries(exports.METHODS).filter(([k]) => k.startsWith('H')));
+exports.STATUSES_HTTP = [
+ exports.STATUSES.CONTINUE,
+ exports.STATUSES.SWITCHING_PROTOCOLS,
+ exports.STATUSES.PROCESSING,
+ exports.STATUSES.EARLY_HINTS,
+ exports.STATUSES.RESPONSE_IS_STALE,
+ exports.STATUSES.REVALIDATION_FAILED,
+ exports.STATUSES.DISCONNECTED_OPERATION,
+ exports.STATUSES.HEURISTIC_EXPIRATION,
+ exports.STATUSES.MISCELLANEOUS_WARNING,
+ exports.STATUSES.OK,
+ exports.STATUSES.CREATED,
+ exports.STATUSES.ACCEPTED,
+ exports.STATUSES.NON_AUTHORITATIVE_INFORMATION,
+ exports.STATUSES.NO_CONTENT,
+ exports.STATUSES.RESET_CONTENT,
+ exports.STATUSES.PARTIAL_CONTENT,
+ exports.STATUSES.MULTI_STATUS,
+ exports.STATUSES.ALREADY_REPORTED,
+ exports.STATUSES.TRANSFORMATION_APPLIED,
+ exports.STATUSES.IM_USED,
+ exports.STATUSES.MISCELLANEOUS_PERSISTENT_WARNING,
+ exports.STATUSES.MULTIPLE_CHOICES,
+ exports.STATUSES.MOVED_PERMANENTLY,
+ exports.STATUSES.FOUND,
+ exports.STATUSES.SEE_OTHER,
+ exports.STATUSES.NOT_MODIFIED,
+ exports.STATUSES.USE_PROXY,
+ exports.STATUSES.SWITCH_PROXY,
+ exports.STATUSES.TEMPORARY_REDIRECT,
+ exports.STATUSES.PERMANENT_REDIRECT,
+ exports.STATUSES.BAD_REQUEST,
+ exports.STATUSES.UNAUTHORIZED,
+ exports.STATUSES.PAYMENT_REQUIRED,
+ exports.STATUSES.FORBIDDEN,
+ exports.STATUSES.NOT_FOUND,
+ exports.STATUSES.METHOD_NOT_ALLOWED,
+ exports.STATUSES.NOT_ACCEPTABLE,
+ exports.STATUSES.PROXY_AUTHENTICATION_REQUIRED,
+ exports.STATUSES.REQUEST_TIMEOUT,
+ exports.STATUSES.CONFLICT,
+ exports.STATUSES.GONE,
+ exports.STATUSES.LENGTH_REQUIRED,
+ exports.STATUSES.PRECONDITION_FAILED,
+ exports.STATUSES.PAYLOAD_TOO_LARGE,
+ exports.STATUSES.URI_TOO_LONG,
+ exports.STATUSES.UNSUPPORTED_MEDIA_TYPE,
+ exports.STATUSES.RANGE_NOT_SATISFIABLE,
+ exports.STATUSES.EXPECTATION_FAILED,
+ exports.STATUSES.IM_A_TEAPOT,
+ exports.STATUSES.PAGE_EXPIRED,
+ exports.STATUSES.ENHANCE_YOUR_CALM,
+ exports.STATUSES.MISDIRECTED_REQUEST,
+ exports.STATUSES.UNPROCESSABLE_ENTITY,
+ exports.STATUSES.LOCKED,
+ exports.STATUSES.FAILED_DEPENDENCY,
+ exports.STATUSES.TOO_EARLY,
+ exports.STATUSES.UPGRADE_REQUIRED,
+ exports.STATUSES.PRECONDITION_REQUIRED,
+ exports.STATUSES.TOO_MANY_REQUESTS,
+ exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE_UNOFFICIAL,
+ exports.STATUSES.REQUEST_HEADER_FIELDS_TOO_LARGE,
+ exports.STATUSES.LOGIN_TIMEOUT,
+ exports.STATUSES.NO_RESPONSE,
+ exports.STATUSES.RETRY_WITH,
+ exports.STATUSES.BLOCKED_BY_PARENTAL_CONTROL,
+ exports.STATUSES.UNAVAILABLE_FOR_LEGAL_REASONS,
+ exports.STATUSES.CLIENT_CLOSED_LOAD_BALANCED_REQUEST,
+ exports.STATUSES.INVALID_X_FORWARDED_FOR,
+ exports.STATUSES.REQUEST_HEADER_TOO_LARGE,
+ exports.STATUSES.SSL_CERTIFICATE_ERROR,
+ exports.STATUSES.SSL_CERTIFICATE_REQUIRED,
+ exports.STATUSES.HTTP_REQUEST_SENT_TO_HTTPS_PORT,
+ exports.STATUSES.INVALID_TOKEN,
+ exports.STATUSES.CLIENT_CLOSED_REQUEST,
+ exports.STATUSES.INTERNAL_SERVER_ERROR,
+ exports.STATUSES.NOT_IMPLEMENTED,
+ exports.STATUSES.BAD_GATEWAY,
+ exports.STATUSES.SERVICE_UNAVAILABLE,
+ exports.STATUSES.GATEWAY_TIMEOUT,
+ exports.STATUSES.HTTP_VERSION_NOT_SUPPORTED,
+ exports.STATUSES.VARIANT_ALSO_NEGOTIATES,
+ exports.STATUSES.INSUFFICIENT_STORAGE,
+ exports.STATUSES.LOOP_DETECTED,
+ exports.STATUSES.BANDWIDTH_LIMIT_EXCEEDED,
+ exports.STATUSES.NOT_EXTENDED,
+ exports.STATUSES.NETWORK_AUTHENTICATION_REQUIRED,
+ exports.STATUSES.WEB_SERVER_UNKNOWN_ERROR,
+ exports.STATUSES.WEB_SERVER_IS_DOWN,
+ exports.STATUSES.CONNECTION_TIMEOUT,
+ exports.STATUSES.ORIGIN_IS_UNREACHABLE,
+ exports.STATUSES.TIMEOUT_OCCURED,
+ exports.STATUSES.SSL_HANDSHAKE_FAILED,
+ exports.STATUSES.INVALID_SSL_CERTIFICATE,
+ exports.STATUSES.RAILGUN_ERROR,
+ exports.STATUSES.SITE_IS_OVERLOADED,
+ exports.STATUSES.SITE_IS_FROZEN,
+ exports.STATUSES.IDENTITY_PROVIDER_AUTHENTICATION_ERROR,
+ exports.STATUSES.NETWORK_READ_TIMEOUT,
+ exports.STATUSES.NETWORK_CONNECT_TIMEOUT,
+];
+exports.ALPHA = [];
+for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {
+ // Upper case
+ exports.ALPHA.push(String.fromCharCode(i));
+ // Lower case
+ exports.ALPHA.push(String.fromCharCode(i + 0x20));
+}
+exports.NUM_MAP = {
+ 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
+ 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
+};
+exports.HEX_MAP = {
+ 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
+ 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
+ A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,
+ a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,
+};
+exports.NUM = [
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+];
+exports.ALPHANUM = exports.ALPHA.concat(exports.NUM);
+exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')'];
+exports.USERINFO_CHARS = exports.ALPHANUM
+ .concat(exports.MARK)
+ .concat(['%', ';', ':', '&', '=', '+', '$', ',']);
+// TODO(indutny): use RFC
+exports.URL_CHAR = [
+ '!', '"', '$', '%', '&', '\'',
+ '(', ')', '*', '+', ',', '-', '.', '/',
+ ':', ';', '<', '=', '>',
+ '@', '[', '\\', ']', '^', '_',
+ '`',
+ '{', '|', '}', '~',
+].concat(exports.ALPHANUM);
+exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);
+/* Tokens as defined by rfc 2616. Also lowercases them.
+ * token = 1*<any CHAR except CTLs or separators>
+ * separators = "(" | ")" | "<" | ">" | "@"
+ * | "," | ";" | ":" | "\" | <">
+ * | "/" | "[" | "]" | "?" | "="
+ * | "{" | "}" | SP | HT
+ */
+exports.TOKEN = [
+ '!', '#', '$', '%', '&', '\'',
+ '*', '+', '-', '.',
+ '^', '_', '`',
+ '|', '~',
+].concat(exports.ALPHANUM);
+/*
+ * Verify that a char is a valid visible (printable) US-ASCII
+ * character or %x80-FF
+ */
+exports.HEADER_CHARS = ['\t'];
+for (let i = 32; i <= 255; i++) {
+ if (i !== 127) {
+ exports.HEADER_CHARS.push(i);
+ }
+}
+// ',' = \x44
+exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);
+exports.QUOTED_STRING = ['\t', ' '];
+for (let i = 0x21; i <= 0xff; i++) {
+ if (i !== 0x22 && i !== 0x5c) { // All characters in ASCII except \ and "
+ exports.QUOTED_STRING.push(i);
+ }
+}
+exports.HTAB_SP_VCHAR_OBS_TEXT = ['\t', ' '];
+// VCHAR: https://tools.ietf.org/html/rfc5234#appendix-B.1
+for (let i = 0x21; i <= 0x7E; i++) {
+ exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);
+}
+// OBS_TEXT: https://datatracker.ietf.org/doc/html/rfc9110#name-collected-abnf
+for (let i = 0x80; i <= 0xff; i++) {
+ exports.HTAB_SP_VCHAR_OBS_TEXT.push(i);
+}
+exports.MAJOR = exports.NUM_MAP;
+exports.MINOR = exports.MAJOR;
+exports.SPECIAL_HEADERS = {
+ 'connection': exports.HEADER_STATE.CONNECTION,
+ 'content-length': exports.HEADER_STATE.CONTENT_LENGTH,
+ 'proxy-connection': exports.HEADER_STATE.CONNECTION,
+ 'transfer-encoding': exports.HEADER_STATE.TRANSFER_ENCODING,
+ 'upgrade': exports.HEADER_STATE.UPGRADE,
+};
+exports.default = {
+ ERROR: exports.ERROR,
+ TYPE: exports.TYPE,
+ FLAGS: exports.FLAGS,
+ LENIENT_FLAGS: exports.LENIENT_FLAGS,
+ METHODS: exports.METHODS,
+ STATUSES: exports.STATUSES,
+ FINISH: exports.FINISH,
+ HEADER_STATE: exports.HEADER_STATE,
+ ALPHA: exports.ALPHA,
+ NUM_MAP: exports.NUM_MAP,
+ HEX_MAP: exports.HEX_MAP,
+ NUM: exports.NUM,
+ ALPHANUM: exports.ALPHANUM,
+ MARK: exports.MARK,
+ USERINFO_CHARS: exports.USERINFO_CHARS,
+ URL_CHAR: exports.URL_CHAR,
+ HEX: exports.HEX,
+ TOKEN: exports.TOKEN,
+ HEADER_CHARS: exports.HEADER_CHARS,
+ CONNECTION_TOKEN_CHARS: exports.CONNECTION_TOKEN_CHARS,
+ QUOTED_STRING: exports.QUOTED_STRING,
+ HTAB_SP_VCHAR_OBS_TEXT: exports.HTAB_SP_VCHAR_OBS_TEXT,
+ MAJOR: exports.MAJOR,
+ MINOR: exports.MINOR,
+ SPECIAL_HEADERS: exports.SPECIAL_HEADERS,
+ METHODS_HTTP: exports.METHODS_HTTP,
+ METHODS_ICE: exports.METHODS_ICE,
+ METHODS_RTSP: exports.METHODS_RTSP,
+ METHOD_MAP: exports.METHOD_MAP,
+ H_METHOD_MAP: exports.H_METHOD_MAP,
+ STATUSES_HTTP: exports.STATUSES_HTTP,
+};