zippycli
Version:
An unofficial Zippyshare CLI
1 lines • 5.46 kB
Source Map (JSON)
{"version":3,"sources":["util.ts"],"names":["pipeline","promisify","fse","pipelineP","divmod","v","d","Math","floor","parseDate","str","Date","t","getTime","env","name","process","envTrue","test","fstat","filepath","stat","err","code","readInputFile","r","data","readFile","lines","split","line","s","trim","push","dateHumanTimestamp","date","getFullYear","getMonth","slice","getDate","join","getHours","getMinutes","getSeconds"],"mappings":"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","sourcesContent":["import {pipeline} from 'stream';\nimport {promisify} from 'util';\n\nimport fse from 'fs-extra';\n\nexport const pipelineP = promisify(pipeline);\n\n/**\n * Integer division with remained.\n *\n * @param v Value.\n * @param d Divisor.\n * @returns Integer divided and remained.\n */\nexport function divmod(v: number, d: number) {\n\treturn [Math.floor(v / d), v % d];\n}\n\n/**\n * Parse date or return null is not valid.\n *\n * @param str Date string.\n * @returns Date object or null.\n */\nexport function parseDate(str: string) {\n\tconst d = new Date(str);\n\tconst t = d.getTime();\n\n\t// Test if the time is NaN (NaN !== NaN).\n\t// eslint-disable-next-line no-self-compare\n\treturn t === t ? d : null;\n}\n\n/**\n * Get environment variable value.\n *\n * @param name Environment name.\n * @returns String value or null.\n */\nexport function env(name: string) {\n\t// eslint-disable-next-line no-process-env\n\tconst v = process.env[name];\n\treturn typeof v === 'undefined' ? null : v;\n}\n\n/**\n * Check if the environment variable value is true.\n *\n * @param name Environment name.\n * @returns String value is a true-like value.\n */\nexport function envTrue(name: string) {\n\tconst v = env(name);\n\treturn v && /^(1|true|yes)$/i.test(v);\n}\n\n/**\n * Stat path or return null if path does not exist.\n *\n * @param filepath File path.\n * @returns Stat object or null.\n */\nexport async function fstat(filepath: string) {\n\ttry {\n\t\treturn await fse.stat(filepath);\n\t} catch (err) {\n\t\tconst code = err ? (err as {code: string}).code : null;\n\t\tif (code === 'ENOENT' || code === 'ENOTDIR') {\n\t\t\treturn null;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/**\n * Read input file to list all URL's line by line.\n *\n * @param filepath Input file.\n * @returns URL list.\n */\nexport async function readInputFile(filepath: string) {\n\tconst r: string[] = [];\n\tconst data = await fse.readFile(filepath, 'utf8');\n\tconst lines = data.split(/[\\r\\n]+/);\n\tfor (const line of lines) {\n\t\tconst s = line.trim();\n\t\tif (/^https?:\\/\\//i.test(s)) {\n\t\t\tr.push(s);\n\t\t}\n\t}\n\treturn r;\n}\n\n/**\n * Format date for human readable timestamps.\n *\n * @param date Date object or null.\n * @returns Date string.\n */\nexport function dateHumanTimestamp(date: Date | null = null) {\n\tconst d = date || new Date();\n\n\t// Format: yyyy-mm-dd h:MM:ss\n\treturn [\n\t\t[\n\t\t\td.getFullYear(),\n\t\t\t`0${d.getMonth() + 1}`.slice(-2),\n\t\t\t`0${d.getDate()}`.slice(-2)\n\t\t].join('-'),\n\t\t[\n\t\t\td.getHours(),\n\t\t\t`0${d.getMinutes()}`.slice(-2),\n\t\t\t`0${d.getSeconds()}`.slice(-2)\n\t\t].join(':')\n\t].join(' ');\n}\n"],"file":"util.mjs","sourceRoot":"../src"}