import { Transcoder } from "./Transcoder" export class Iso88591 extends Transcoder { encode(data: string): Uint8Array { return Uint8Array.from(data.split(""), c => utf8ToIso88591[c]) } decode(data: ArrayBufferView | undefined): string { return !data ? "" : new Uint8Array(data.buffer, data.byteOffset, data.byteLength).reduce((r, v) => r + iso88591ToUtf8[v], "") } } const iso88591ToUtf8: string[] = [ "\u0000", "\u0001", "\u0002", "\u0003", "\u0004", "\u0005", "\u0006", "\u0007", "\u0008", "\u0009", "\n", "\u000b", "\u000c", "\r", "\u000e", "\u000f", "\u0010", "\u0011", "\u0012", "\u0013", "\u0014", "\u0015", "\u0016", "\u0017", "\u0018", "\u0019", "\u001a", "\u001b", "\u001c", "\u001d", "\u001e", "\u001f", " ", "!", '"', "#", "$", "%", "&", "\u0022", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "", "€", "", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "Š", "‹", "Œ", "", "Ž", "", "", "‘", "’", "“", "”", "•", "–", "—", "˜", "™", "š", "›", "œ", "", "ž", "Ÿ", "\u00a0", "¡", "¢", "£", "¤", "¥", "¦", "§", "¨", "©", "ª", "«", "¬", "­", "®", "¯", "°", "±", "²", "³", "´", "µ", "¶", "·", "¸", "¹", "º", "»", "¼", "½", "¾", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ", ] const utf8ToIso88591: { [character: string]: number } = { "\u0000": 0, "\u0001": 1, "\u0002": 2, "\u0003": 3, "\u0004": 4, "\u0005": 5, "\u0006": 6, "\u0007": 7, "\u0008": 8, "\u0009": 9, "\n": 10, "\u000b": 11, "\u000c": 12, "\r": 13, "\u000e": 14, "\u000f": 15, "\u0010": 16, "\u0011": 17, "\u0012": 18, "\u0013": 19, "\u0014": 20, "\u0015": 21, "\u0016": 22, "\u0017": 23, "\u0018": 24, "\u0019": 25, "\u001a": 26, "\u001b": 27, "\u001c": 28, "\u001d": 29, "\u001e": 30, "\u001f": 31, " ": 32, "!": 33, '"': 34, "#": 35, $: 36, "%": 37, "&": 38, "\u0027": 39, "(": 40, ")": 41, "*": 42, "+": 43, ",": 44, "-": 45, ".": 46, "/": 47, "0": 48, "1": 49, "2": 50, "3": 51, "4": 52, "5": 53, "6": 54, "7": 55, "8": 56, "9": 57, ":": 58, ";": 59, "<": 60, "=": 61, ">": 62, "?": 63, "@": 64, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, X: 88, Y: 89, Z: 90, "[": 91, "\\": 92, "]": 93, "^": 94, _: 95, "`": 96, a: 97, b: 98, c: 99, d: 100, e: 101, f: 102, g: 103, h: 104, i: 105, j: 106, k: 107, l: 108, m: 109, n: 110, o: 111, p: 112, q: 113, r: 114, s: 115, t: 116, u: 117, v: 118, w: 119, x: 120, y: 121, z: 122, "{": 123, "|": 124, "}": 125, "~": 126, "": 127, "€": 128, "": 129, "‚": 130, ƒ: 131, "„": 132, "…": 133, "†": 134, "‡": 135, ˆ: 136, "‰": 137, Š: 138, "‹": 139, Œ: 140, "": 141, Ž: 142, "": 143, "": 144, "‘": 145, "’": 146, "“": 147, "”": 148, "•": 149, "–": 150, "—": 151, "˜": 152, "™": 153, š: 154, "›": 155, œ: 156, "": 157, ž: 158, Ÿ: 159, "\u00a0": 160, "¡": 161, "¢": 162, "£": 163, "¤": 164, "¥": 165, "¦": 166, "§": 167, "¨": 168, "©": 169, ª: 170, "«": 171, "¬": 172, "­": 173, "®": 174, "¯": 175, "°": 176, "±": 177, "²": 178, "³": 179, "´": 180, µ: 181, "¶": 182, "·": 183, "¸": 184, "¹": 185, º: 186, "»": 187, "¼": 188, "½": 189, "¾": 190, "¿": 191, À: 192, Á: 193, Â: 194, Ã: 195, Ä: 196, Å: 197, Æ: 198, Ç: 199, È: 200, É: 201, Ê: 202, Ë: 203, Ì: 204, Í: 205, Î: 206, Ï: 207, Ð: 208, Ñ: 209, Ò: 210, Ó: 211, Ô: 212, Õ: 213, Ö: 214, "×": 215, Ø: 216, Ù: 217, Ú: 218, Û: 219, Ü: 220, Ý: 221, Þ: 222, ß: 223, à: 224, á: 225, â: 226, ã: 227, ä: 228, å: 229, æ: 230, ç: 231, è: 232, é: 233, ê: 234, ë: 235, ì: 236, í: 237, î: 238, ï: 239, ð: 240, ñ: 241, ò: 242, ó: 243, ô: 244, õ: 245, ö: 246, "÷": 247, ø: 248, ù: 249, ú: 250, û: 251, ü: 252, ý: 253, þ: 254, ÿ: 255, }