UNPKG

5.41 kBSource Map (JSON)View Raw
1{"version":3,"file":"util.js","names":["_nodeZlib","require","_launchers","htmlEncode","s","dq","sq","replace","trimDotSlash","path","pathRelativeBase","start","nocase","p","toLowerCase","startsWith","substring","length","pathRelativeBaseMatch","trimExtension","ext","e","endsWith","launcher","id","b64","LAUNCHERS","Error","Promise","resolve","reject","inflateRaw","Buffer","from","err","data","Uint8Array","buffer","byteOffset","byteLength"],"sources":["../src/util.ts"],"sourcesContent":["import {inflateRaw} from 'node:zlib';\n\nimport {LAUNCHERS} from './launchers';\n\n/**\n * HTML encode.\n *\n * @param s Raw strings.\n * @param dq Double quotes.\n * @param sq Single quotes.\n * @returns Encoded strings.\n */\nexport function htmlEncode(s: string, dq = false, sq = false) {\n\ts = s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\tif (dq) {\n\t\ts = s.replace(/\"/g, '&quot;');\n\t}\n\tif (sq) {\n\t\ts = s.replace(/'/g, '&#39;');\n\t}\n\treturn s;\n}\n\n/**\n * Trim dot slash from head of path.\n *\n * @param path Path string.\n * @returns Trimmed path.\n */\nexport function trimDotSlash(path: string) {\n\treturn path.replace(/^(\\.\\/)+/, '');\n}\n\n/**\n * Find path relative from base, if base matches.\n *\n * @param path Path to match against.\n * @param start Search start.\n * @param nocase Match case-insensitive.\n * @returns Returns path, or null.\n */\nexport function pathRelativeBase(path: string, start: string, nocase = false) {\n\tconst p = trimDotSlash(nocase ? path.toLowerCase() : path);\n\tconst s = trimDotSlash(nocase ? start.toLowerCase() : start);\n\tif (p === s) {\n\t\treturn '';\n\t}\n\tif (p.startsWith(`${s}/`)) {\n\t\treturn path.substring(s.length + 1);\n\t}\n\treturn null;\n}\n\n/**\n * Same as pathRelativeBase, but retuns true on a match, else false.\n *\n * @param path Path to match against.\n * @param start Search start.\n * @param nocase Match case-insensitive.\n * @returns Returns true on match, else false.\n */\nexport function pathRelativeBaseMatch(\n\tpath: string,\n\tstart: string,\n\tnocase = false\n) {\n\treturn pathRelativeBase(path, start, nocase) !== null;\n}\n\n/**\n * Trim a file extenion.\n *\n * @param path File path.\n * @param ext File extension.\n * @param nocase Match case-insensitive.\n * @returns Path without file extension.\n */\nexport function trimExtension(path: string, ext: string, nocase = false) {\n\tconst p = nocase ? path.toLowerCase() : path;\n\tconst e = nocase ? ext.toLowerCase() : ext;\n\treturn p.endsWith(e) ? path.substring(0, p.length - e.length) : path;\n}\n\n/**\n * Get launcher data for an ID.\n *\n * @param id Laucher ID.\n * @returns Launcher data.\n */\nexport async function launcher(id: string) {\n\tconst b64 = LAUNCHERS[id];\n\tif (typeof b64 !== 'string') {\n\t\tthrow new Error(`Invalid launcher id: ${id}`);\n\t}\n\n\treturn new Promise<Uint8Array>((resolve, reject) => {\n\t\tinflateRaw(Buffer.from(b64, 'base64'), (err, data) => {\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve(\n\t\t\t\tnew Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n\t\t\t);\n\t\t});\n\t});\n}\n"],"mappings":"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"}
\No newline at end of file