mono/packages/commons/src/uri.ts
2025-01-23 07:22:43 +01:00

36 lines
947 B
TypeScript

import { URL } from 'url'
import * as path from 'path'
const filenamify = require('filenamify')
const _sanitize = require("sanitize-filename")
const sanitize_ex = (f) => {
let str: string = filenamify(_sanitize(f)).replace(/[^\x00-\x7F]/g, "").replace('_', '');
return str;
}
export interface IDownloadUrl{
urlParts: URL
pathParts: path.ParsedPath
filename: string
path:string
url: string
}
export const parseForDownload = (url: string, dst: string) : IDownloadUrl => {
const parsed = new URL(url);
const parts = path.parse(parsed.pathname)
const filename = sanitize_ex(decodeURI(parts.base))
const downloadPath = path.resolve(`${dst}/${filename}`)
const downloadUrl = parsed.origin + parsed.pathname
return {
urlParts:parsed,
pathParts: parts,
filename: filename,
path: downloadPath,
url: downloadUrl
}
}