UNPKG

node-pkware

Version:

nodejs implementation of StormLib's pkware compressor/de-compressor

63 lines 1.71 kB
import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; import { fileURLToPath } from 'node:url'; function isDecimalString(input) { return /^\d+$/.test(input); } function isFullHexString(input) { return /^\s*0x[\da-f]+\s*$/.test(input); } export function parseNumberString(n, defaultValue = 0) { if (n === undefined) { return defaultValue; } if (isDecimalString(n)) { return Number.parseInt(n, 10); } if (isFullHexString(n)) { return Number.parseInt(n.replace(/^0x/, ''), 16); } return defaultValue; } function pathToPackageJson() { const filename = fileURLToPath(import.meta.url); const dirname = path.dirname(filename); return path.resolve(dirname, '../../package.json'); } export async function getPackageVersion() { try { const rawIn = await fs.promises.readFile(pathToPackageJson(), 'utf8'); const { version } = JSON.parse(rawIn); return version; } catch { return 'unknown'; } } async function fileExists(filename) { try { await fs.promises.access(filename, fs.constants.R_OK); return true; } catch { return false; } } export async function getInputStream(filename) { if (filename === undefined) { process.stdin.resume(); return process.stdin; } if (await fileExists(filename)) { return fs.createReadStream(filename); } throw new Error('input file does not exist'); } export async function getOutputStream(filename) { if (filename === undefined) { return process.stdout; } return fs.createWriteStream(filename); } //# sourceMappingURL=helpers.js.map