{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fast-extract/src/sourceStats/basename.mjs"],"sourcesContent":["import path from 'path';\nimport contentDisposition from 'content-disposition';\n\n// biome-ignore lint/suspicious/noControlCharactersInRegex: <explanation>\nconst POSIX = /[<>:\"\\\\/\\\\|?*\\x00-\\x1F]/g;\nconst WINDOWS = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i;\n\nexport default function getBasename(source, options, endpoint) {\n  // options\n  let basename = options.basename || options.filename;\n  if (basename !== undefined) return basename;\n\n  // path\n  if (typeof source === 'string') return path.basename(source);\n  // stream\n  if (source) {\n    if (source.headers && source.headers['content-disposition']) {\n      const information = contentDisposition.parse(source.headers['content-disposition']);\n      return information.parameters.filename;\n    }\n    basename = source.basename || source.filename;\n    if (basename !== undefined) return basename;\n  }\n\n  // endpoint\n  if (endpoint) {\n    basename = path.basename(endpoint.split('?')[0]);\n    basename = basename.replace(POSIX, '!');\n    basename = basename.replace(WINDOWS, '!');\n    return basename;\n  }\n}\n"],"names":["getBasename","POSIX","WINDOWS","source","options","endpoint","basename","filename","undefined","path","headers","information","contentDisposition","parse","parameters","split","replace"],"mappings":";;;;+BAOA;;;eAAwBA;;;2DAPP;yEACc;;;;;;AAE/B,yEAAyE;AACzE,IAAMC,QAAQ;AACd,IAAMC,UAAU;AAED,SAASF,YAAYG,MAAM,EAAEC,OAAO,EAAEC,QAAQ;IAC3D,UAAU;IACV,IAAIC,WAAWF,QAAQE,QAAQ,IAAIF,QAAQG,QAAQ;IACnD,IAAID,aAAaE,WAAW,OAAOF;IAEnC,OAAO;IACP,IAAI,OAAOH,WAAW,UAAU,OAAOM,aAAI,CAACH,QAAQ,CAACH;IACrD,SAAS;IACT,IAAIA,QAAQ;QACV,IAAIA,OAAOO,OAAO,IAAIP,OAAOO,OAAO,CAAC,sBAAsB,EAAE;YAC3D,IAAMC,cAAcC,2BAAkB,CAACC,KAAK,CAACV,OAAOO,OAAO,CAAC,sBAAsB;YAClF,OAAOC,YAAYG,UAAU,CAACP,QAAQ;QACxC;QACAD,WAAWH,OAAOG,QAAQ,IAAIH,OAAOI,QAAQ;QAC7C,IAAID,aAAaE,WAAW,OAAOF;IACrC;IAEA,WAAW;IACX,IAAID,UAAU;QACZC,WAAWG,aAAI,CAACH,QAAQ,CAACD,SAASU,KAAK,CAAC,IAAI,CAAC,EAAE;QAC/CT,WAAWA,SAASU,OAAO,CAACf,OAAO;QACnCK,WAAWA,SAASU,OAAO,CAACd,SAAS;QACrC,OAAOI;IACT;AACF"}