{"version":3,"sources":["jsdelivr-header.js","/npm/bsck@1.0.3/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;OCLO,OAAQ,YACR,SAAU,cACR,kBAAqB,aACvB,UAAW,QAElB,MAAM,WAAa,0BAA0B,KACvC,UAAY,KAAK,QAAQ,YAEzB,aAAe,CAAC,eAAgB,QAEtC,SAAS,qBAAqB,GAC5B,MAAO,aAAa,KAAK,EAC3B,CAEA,SAAS,wBAAwB,GAC/B,OAAO,EAAS,QAAQ,cAAe,GACzC,CAEA,SAAS,aAAa,EAAK,EAAW,IACpC,IAAI,EACJ,IACE,EAAQ,GAAG,YAAY,EACzB,CAAE,MAAO,GAEP,OADA,QAAQ,MAAM,0BAA0B,aAAe,EAAI,WACpD,CACT,CAwBA,OAtBA,EAAM,SAAQ,IACZ,MAAM,EAAW,KAAK,KAAK,EAAK,GAEhC,GAAI,aAAa,SAAS,GACxB,OAGF,IAAI,EACJ,IACE,EAAQ,GAAG,SAAS,EACtB,CAAE,MAAO,GAEP,YADA,QAAQ,MAAM,0BAA0B,aAAoB,EAAI,UAElE,CAEI,EAAM,cACR,aAAa,EAAU,GAEvB,EAAS,KAAK,EAChB,IAGK,CACT,CAEA,SAAS,mBAAmB,GAC1B,OAAO,EAAI,QAAQ,QAAS,MAC9B,CAEA,SAAS,MAAM,GACb,MAAO,CAAC,QAAS,OAAQ,OAAO,SAAS,EAAI,cAC/C,CAEA,eAAe,iBAAiB,EAAO,GAAM,GAC3C,IAAI,EAAa,EACb,EAAe,EACf,EAAkB,GAClB,EAAa,GAEjB,QAAQ,IAAI,MAAM,KAAK,yBACrB,oCACA,MAAM,KAAK,UAAU,8BACrB,UACF,QAAQ,MAER,IAAK,MAAM,KAAQ,EAAO,CACxB,MAAM,EAAW,KAAK,SAAS,GAG/B,GAFA,IAEI,qBAAqB,KACvB,IACA,EAAgB,KAAK,GAEjB,GAAK,CACP,MAAM,EAAc,wBAAwB,GACtC,EAAc,KAAK,KAAK,KAAK,QAAQ,GAAO,GAElD,GAAI,GAAG,WAAW,GAAc,CAC9B,QAAQ,MAAM,MAAM,IAAI,4CAA4C,UAAiB,OACrF,QACF,CAEA,IACE,GAAG,WAAW,EAAM,GACpB,EAAW,KAAK,CAAE,IAAK,EAAM,IAAK,GACpC,CAAE,MAAO,GACP,QAAQ,MAAM,MAAM,IAAI,uBAAuB,aAAgB,EAAI,WACrE,CACF,CAEJ,CAEA,QAAQ,IAAI,wBAAyB,KACrC,QAAQ,IAAI,MAAM,OAAO,kCAAkC,MAC3D,QAAQ,MAEJ,EACE,EAAW,OAAS,GACtB,QAAQ,IAAI,MAAM,MAAM,iBACxB,EAAW,SAAQ,GAAK,QAAQ,IAAI,GAAG,MAAM,IAAI,mBAAmB,EAAE,YAAY,MAAM,MAAM,EAAE,WAEhG,QAAQ,IAAI,MAAM,MAAM,4BAGtB,EAAe,GACjB,QAAQ,IAAI,MAAM,OAAO,4CACzB,EAAgB,SAAQ,GAAK,QAAQ,IAAI,MAAM,IAAI,mBAAmB,OACtE,QAAQ,MACR,QAAQ,IAAI,MAAM,KAAK,8BACvB,QAAQ,IAAI,MAAM,MAAM,mBACxB,QAAQ,MACR,QAAQ,KAAK,IAEb,QAAQ,IAAI,MAAM,MAAM,4CAG5B,QAAQ,KACV,CAEA,MAAM,KAAO,QAAQ,KAAK,MAAM,GAC1B,IAAM,KAAK,KAAK,OAEhB,SAAW,aAAa,QAAQ,OACtC,iBAAiB,SAAU","file":"/npm/bsck@1.0.3/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/bsck@1.0.3/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","#!/usr/bin/env node\nimport fs from 'fs';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport chalk from 'chalk';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst EXCLUDE_DIRS = ['node_modules', '.git'];\n\nfunction hasInvalidCharacters(fileName) {\n  return /[\\b\\u0008]/.test(fileName);\n}\n\nfunction removeInvalidCharacters(fileName) {\n  return fileName.replace(/[\\b\\u0008]/g, '');\n}\n\nfunction collectFiles(dir, allFiles = []) {\n  let files;\n  try {\n    files = fs.readdirSync(dir);\n  } catch (err) {\n    console.error(`Cannot read directory: ${dir}\\nError: ${err.message}`);\n    return allFiles;\n  }\n\n  files.forEach(file => {\n    const fullPath = path.join(dir, file);\n\n    if (EXCLUDE_DIRS.includes(file)) {\n      return;\n    }\n\n    let stats;\n    try {\n      stats = fs.statSync(fullPath);\n    } catch (err) {\n      console.error(`Cannot get file stats: ${fullPath}\\nError: ${err.message}`);\n      return;\n    }\n\n    if (stats.isDirectory()) {\n      collectFiles(fullPath, allFiles);\n    } else {\n      allFiles.push(fullPath);\n    }\n  });\n\n  return allFiles;\n}\n\nfunction escapeSpecialChars(str) {\n  return str.replace(/[\\b]/g, '\\\\b');\n}\n\nfunction isFix(arg) {\n  return ['--fix', '-fix', 'fix'].includes(arg.toLowerCase());\n}\n\nasync function checkAndFixFiles(files, fix = false) {\n  let totalFiles = 0;\n  let invalidFiles = 0;\n  let invalidFileList = [];\n  let fixedFiles = [];\n\n  console.log(chalk.cyan('\\n🔄 Starting bsck - ') + \n    '\\x1b]8;;https://github.com/love1ace\\x07' +\n    chalk.cyan.underline('Developed by DONGYEONG KIM') +\n    '\\x1b]8;;\\x07');\n  console.log();\n\n  for (const file of files) {\n    const fileName = path.basename(file);\n    totalFiles++;\n\n    if (hasInvalidCharacters(fileName)) {\n      invalidFiles++;\n      invalidFileList.push(file);\n\n      if (fix) {\n        const newFileName = removeInvalidCharacters(fileName);\n        const newFullPath = path.join(path.dirname(file), newFileName);\n\n        if (fs.existsSync(newFullPath)) {\n          console.error(chalk.red(`Cannot rename due to filename conflict: \"${fileName}\" -> \"${newFileName}\"`));\n          continue;\n        }\n\n        try {\n          fs.renameSync(file, newFullPath);\n          fixedFiles.push({ old: file, new: newFullPath });\n        } catch (err) {\n          console.error(chalk.red(`Cannot rename file: ${file}\\nError: ${err.message}`));\n        }\n      }\n    }\n  }\n\n  console.log((`Total files checked: ${totalFiles}`));\n  console.log(chalk.yellow(`Files with invalid characters: ${invalidFiles}`));\n  console.log();\n\n  if (fix) {\n    if (fixedFiles.length > 0) {\n      console.log(chalk.green('Fixed files:'));\n      fixedFiles.forEach(f => console.log(`${chalk.red(escapeSpecialChars(f.old))} -> ${chalk.green(f.new)}`));\n    } else {\n      console.log(chalk.green('No files needed fixing.'));\n    }\n  } else {\n    if (invalidFiles > 0) {\n      console.log(chalk.yellow('Paths of files with invalid characters:'));\n      invalidFileList.forEach(f => console.log(chalk.red(escapeSpecialChars(f))));\n      console.log();\n      console.log(chalk.cyan('Fix it with this command:'));\n      console.log(chalk.green('npx bsck --fix'));\n      console.log();\n      process.exit(1);\n    } else {\n      console.log(chalk.green('No files with invalid characters found.'));\n    }\n  }\n  console.log();\n}\n\nconst args = process.argv.slice(2);\nconst fix = args.some(isFix);\n\nconst allFiles = collectFiles(process.cwd());\ncheckAndFixFiles(allFiles, fix);\n"]}