wttp-core
Version:
Core contracts, interfaces, and TypeScript types for the Web3 Transfer Protocol (WTTP).
260 lines • 8.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.bytesToRegion = exports.regionToBytes = exports.bytesToLanguage = exports.languageToBytes = exports.bytesToEncoding = exports.encodingToBytes = exports.bytesToCharset = exports.charsetToBytes = exports.bytesToMimeTypes = exports.mimeTypesToBytes = void 0;
exports.encodeMimeType = encodeMimeType;
exports.decodeMimeType = decodeMimeType;
exports.encodeCharset = encodeCharset;
exports.decodeCharset = decodeCharset;
exports.encodeEncoding = encodeEncoding;
exports.decodeEncoding = decodeEncoding;
exports.encodeLanguage = encodeLanguage;
exports.decodeLanguage = decodeLanguage;
exports.encodeProperty = encodeProperty;
exports.decodeProperty = decodeProperty;
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("mime-types"), exports);
exports.mimeTypesToBytes = {
'text/html': '0x7468', // th
'text/javascript': '0x616a', // aj (defaults to application/javascript)
'text/css': '0x7463', // tc
'text/markdown': '0x746d', // tm
'text/plain': '0x7470', // tp
'application/javascript': '0x616a', // aj
'application/xml': '0x6178', // ax
'application/pdf': '0x6170', // ap
'application/json': '0x616f', // ao (object)
'image/png': '0x6970', // ip
'image/jpeg': '0x696a', // ij
'image/gif': '0x6967', // ig
'image/svg+xml': '0x6973', // is
'image/webp': '0x6977', // iw
'image/x-icon': '0x6969', // ii
'font/ttf': '0x6674', // ft
'font/otf': '0x666f', // fo
'font/woff': '0x6677', // fw
'font/woff2': '0x6632', // f2
'application/octet-stream': '0x6273' // bs (binary stream)
};
exports.bytesToMimeTypes = {
'0x7468': 'text/html', // th
'0x7463': 'text/css', // tc
'0x746d': 'text/markdown', // tm
'0x7470': 'text/plain', // tp
'0x616a': 'application/javascript', // aj
'0x6178': 'application/xml', // ax
'0x6170': 'application/pdf', // ap
'0x616f': 'application/json', // ao (object)
'0x6970': 'image/png', // ip
'0x696a': 'image/jpeg', // ij
'0x6967': 'image/gif', // ig
'0x6973': 'image/svg+xml', // is
'0x6977': 'image/webp', // iw
'0x6969': 'image/x-icon', // ii
'0x6674': 'font/ttf', // ft
'0x666f': 'font/otf', // fo
'0x6677': 'font/woff', // fw
'0x6632': 'font/woff2', // f2
'0x6273': 'application/octet-stream', // bs (binary stream)
'0x0000': 'application/octet-stream' // bs (binary stream)
};
// Helper function to convert MIME type to bytes2e
function encodeMimeType(mimeType) {
return exports.mimeTypesToBytes[mimeType] || '0x6273'; // Default to binary stream
}
function decodeMimeType(bytes) {
return exports.bytesToMimeTypes[bytes] || 'application/octet-stream'; // Default to binary stream
}
exports.charsetToBytes = {
'utf-8': '0x7508', // u(8)
'utf-16': '0x7510', // u(16)
'utf-32': '0x7520', // u(32)
'utf-16le': '0x106c', // (16)l
'utf-16be': '0x1062', // (16)b
'utf-32le': '0x206c', // (32)l
'utf-32be': '0x2062', // (32)b
'us-ascii': '0x7561', // ua
'unicode': '0x7563', // uc
'iso-8859-1': '0x6901', // i(1)
'iso-8859-2': '0x6902', // i(2)
'iso-8859-3': '0x6903', // i(3)
'iso-8859-4': '0x6904', // i(4)
'iso-8859-5': '0x6905', // i(5)
'iso-8859-6': '0x6906', // i(6)
'iso-8859-7': '0x6907', // i(7)
'iso-8859-8': '0x6908', // i(8)
'iso-8859-9': '0x6909', // i(9)
'iso-8859-10': '0x690a', // i(10)
'iso-8859-11': '0x690b', // i(11)
'iso-8859-13': '0x690d', // i(13)
'iso-8859-14': '0x690e', // i(14)
'iso-8859-15': '0x690f', // i(15)
'iso-8859-16': '0x6910', // i(16)
'windows-1250': '0x7732', // w(50)
'windows-1251': '0x7733', // w(51)
'windows-1252': '0x7734', // w(52)
'windows-1253': '0x7735', // w(53)
'windows-1254': '0x7736', // w(54)
'windows-1255': '0x7737', // w(55)
'windows-1256': '0x7738', // w(56)
'windows-1257': '0x7739', // w(57)
'windows-1258': '0x773a', // w(58)
'big5': '0x6205', // b(5)
'shift_jis': '0x0000', // sj
'euc-jp': '0x0000', // ej
'euc-kr': '0x0000', // ek
'gbk': '0x0000', // gk
'gb18030': '0x0000', // g18030
'gb2312': '0x0000', // g2312
'gb2312-80': '0x0000', // g2312-80
'gb2312-90': '0x0000', // g2312-90
'gb2312-95': '0x0000', // g2312-95
'gb2312-00': '0x0000', // g2312-00
};
exports.bytesToCharset = {
'0x7508': 'utf-8',
'0x7510': 'utf-16',
'0x7520': 'utf-32',
'0x106c': 'utf-16le',
'0x1062': 'utf-16be',
'0x206c': 'utf-32le',
'0x2062': 'utf-32be',
'0x7561': 'us-ascii',
'0x7563': 'unicode',
'0x6901': 'iso-8859-1',
'0x6902': 'iso-8859-2',
'0x6903': 'iso-8859-3',
'0x6904': 'iso-8859-4',
'0x6905': 'iso-8859-5',
'0x6906': 'iso-8859-6',
'0x6907': 'iso-8859-7',
'0x6908': 'iso-8859-8',
'0x6909': 'iso-8859-9',
'0x690a': 'iso-8859-10',
'0x690b': 'iso-8859-11',
'0x690d': 'iso-8859-13',
'0x690e': 'iso-8859-14',
'0x690f': 'iso-8859-15',
'0x6910': 'iso-8859-16',
'0x7732': 'windows-1250',
'0x7733': 'windows-1251',
'0x7734': 'windows-1252',
'0x7735': 'windows-1253',
'0x7736': 'windows-1254',
'0x7737': 'windows-1255',
'0x7738': 'windows-1256',
'0x7739': 'windows-1257',
'0x773a': 'windows-1258',
'0x6205': 'big5',
'0x0000': ''
};
function encodeCharset(charset) {
return exports.charsetToBytes[charset] || '0x0000'; // Default to none
}
function decodeCharset(bytes) {
return exports.bytesToCharset[bytes] || ''; // Default to none
}
exports.encodingToBytes = {
'gzip': '0x677a', // gz
'identity': '0x6964', // id
'zstd': '0x7a73', // zs
'zlib': '0x7a6c', // zl
'brotli': '0x6272', // br
'lz4': '0x6c34', // l4
'snappy': '0x736e', // sn
'lzma': '0x6c6d', // lm
};
exports.bytesToEncoding = {
'0x677a': 'gzip',
'0x6964': 'identity',
'0x7a73': 'zstd',
'0x7a6c': 'zlib',
'0x6272': 'brotli',
'0x6c34': 'lz4',
'0x736e': 'snappy',
'0x6c6d': 'lzma',
'0x0000': 'identity'
};
function encodeEncoding(encoding) {
return exports.encodingToBytes[encoding] || '0x6964'; // Default to identity
}
function decodeEncoding(bytes) {
return exports.bytesToEncoding[bytes] || 'identity'; // Default to identity
}
exports.languageToBytes = {
'en': '0x6500', // e
'fr': '0x6600', // f
'de': '0x6400', // d
'es': '0x7300', // s
'it': '0x6900', // i
'ja': '0x6a00', // j
'ko': '0x6b00', // k
'ru': '0x7200', // r
};
exports.bytesToLanguage = {
'0x6500': 'en',
'0x6600': 'fr',
'0x6400': 'de',
'0x7300': 'es',
'0x6900': 'it',
'0x6a00': 'ja',
'0x6b00': 'ko',
'0x7200': 'ru',
'0x0000': ''
};
exports.regionToBytes = {
'US': '0x0075', // u
'GB': '0x0067', // g
'CA': '0x0063', // c
'AU': '0x0061', // a
'NZ': '0x006e', // n
};
exports.bytesToRegion = {
'0x0075': 'US',
'0x0067': 'GB',
'0x0063': 'CA',
'0x0061': 'AU',
'0x006e': 'NZ',
'0x0000': ''
};
function encodeLanguage(language) {
const fullLanguage = language.split('-');
const languageCode = exports.languageToBytes[fullLanguage[0]] || '0x0000';
const regionCode = exports.regionToBytes[fullLanguage[1]] || '0x0000';
return (languageCode.slice(0, 4) + regionCode.slice(4)); // 0xXXYY XX is language code, YY is region code
}
function decodeLanguage(bytes) {
const languageCode = bytes.slice(0, 4) + "00";
const regionCode = "0x00" + bytes.slice(4);
const language = exports.bytesToLanguage[languageCode] || '';
const region = exports.bytesToRegion[regionCode] || '';
return language ? language + (region ? '-' + region : '') : '';
}
function encodeProperty(property, value) {
if (property === 'mime') {
return encodeMimeType(value);
}
else if (property === 'charset') {
return encodeCharset(value);
}
else if (property === 'encoding') {
return encodeEncoding(value);
}
else if (property === 'language') {
return encodeLanguage(value);
}
}
function decodeProperty(property, value) {
if (property === 'mime') {
return decodeMimeType(value);
}
else if (property === 'charset') {
return decodeCharset(value);
}
else if (property === 'encoding') {
return decodeEncoding(value);
}
else if (property === 'language') {
return decodeLanguage(value);
}
}
//# sourceMappingURL=properties.js.map