{"version":3,"file":"cli.cjs","sources":["../src/git.ts","../src/cli.ts"],"sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport {\n  resolve,\n  join,\n  normalize,\n  isAbsolute,\n  sep,\n  basename,\n} from \"node:path\";\nimport {\n  existsSync,\n  rmSync,\n  readdirSync,\n  mkdtempSync,\n  mkdirSync,\n  copyFileSync,\n  lstatSync,\n  readlinkSync,\n  symlinkSync,\n  readFileSync,\n  writeFileSync,\n} from \"node:fs\";\nimport { tmpdir } from \"node:os\";\n\nexport const defaultScmHostPattern =\n  /^(https:\\/\\/(?:github|gitlab|bitbucket)\\.com)\\/([^\\/]+)\\/([^\\/]+)\\/(?:tree|src)\\/([^\\/]+)\\/(.+)$/;\n\nexport const performSparseCheckout = (\n  repoUrl: string,\n  destFolder?: string,\n  scmHostPattern = defaultScmHostPattern\n) => {\n  try {\n    const match = repoUrl.match(scmHostPattern);\n\n    if (!match) {\n      throw new Error(\n        \"Invalid URL format. Use a subdirectory URL (https) from GitHub, GitLab, or Bitbucket.\"\n      );\n    }\n\n    const [, platformUrl, owner, repo, branch, subdir] = match;\n\n    // Validate inputs to prevent command injection and path traversal\n    [owner, repo, branch].forEach((input) => {\n      if (!/^[\\w\\-]+$/.test(input)) {\n        throw new Error(`Invalid characters in input: ${input}`);\n      }\n    });\n\n    // Validate subdir\n    const subdirNormalized = normalize(subdir);\n\n    // Check if subdir is absolute or contains path traversal\n    if (\n      isAbsolute(subdirNormalized) ||\n      subdirNormalized.startsWith(\"..\") ||\n      subdirNormalized.includes(`${sep}..${sep}`)\n    ) {\n      throw new Error(\"Invalid subdirectory path.\");\n    }\n\n    const sanitizedSubdir = subdirNormalized;\n\n    const fallbackDestFolder = destFolder || basename(sanitizedSubdir);\n    const targetPath = resolve(process.cwd(), fallbackDestFolder);\n\n    if (existsSync(targetPath)) {\n      throw new Error(`Destination folder \"${fallbackDestFolder}\" already exists.`);\n    }\n\n    // Create the destination directory\n    mkdirSync(targetPath, { recursive: true });\n\n    // Create a temporary directory for the clone\n    const tempDir = mkdtempSync(join(tmpdir(), \"sparse-checkout-\"));\n\n    console.log(\"Cloning repository with sparse checkout into temporary directory...\");\n    const cloneResult = spawnSync(\n      \"git\",\n      [\"clone\", \"--no-checkout\", `${platformUrl}/${owner}/${repo}.git`, tempDir],\n      { stdio: \"inherit\" }\n    );\n    if (cloneResult.status !== 0) {\n      throw new Error(\"Git clone failed.\");\n    }\n\n    const subdirPath = resolve(tempDir, sanitizedSubdir);\n\n    // Ensure subdirPath is within tempDir\n    if (!subdirPath.startsWith(tempDir + sep) && subdirPath !== tempDir) {\n      throw new Error(\"Subdirectory path traversal detected.\");\n    }\n\n    console.log(\"Initializing sparse-checkout...\");\n    const initResult = spawnSync(\"git\", [\"-C\", tempDir, \"sparse-checkout\", \"init\"], {\n      stdio: \"inherit\",\n    });\n    if (initResult.status !== 0) {\n      throw new Error(\"Git sparse-checkout init failed.\");\n    }\n\n    console.log(`Setting sparse-checkout to subdirectory: ${sanitizedSubdir}`);\n    const setResult = spawnSync(\n      \"git\",\n      [\"-C\", tempDir, \"sparse-checkout\", \"set\", sanitizedSubdir],\n      { stdio: \"inherit\" }\n    );\n    if (setResult.status !== 0) {\n      throw new Error(\"Git sparse-checkout set failed.\");\n    }\n\n    console.log(`Checking out branch: ${branch}...`);\n    const checkoutResult = spawnSync(\"git\", [\"-C\", tempDir, \"checkout\", branch], {\n      stdio: \"inherit\",\n    });\n    if (checkoutResult.status !== 0) {\n      throw new Error(\"Git checkout failed.\");\n    }\n\n    if (!existsSync(subdirPath)) {\n      throw new Error(`Subdirectory \"${sanitizedSubdir}\" does not exist in the repository.`);\n    }\n\n    console.log(\"Copying files to the destination directory...\");\n    copyDirectoryContents(subdirPath, targetPath);\n\n    console.log(\"Replacing workspace:* versions with latest npm versions...\");\n    replaceWorkspaceVersions(targetPath);\n\n    console.log(\"Cleaning up temporary directory...\");\n    rmSync(tempDir, { recursive: true, force: true });\n\n    console.log(\"Initializing a new git repository...\");\n    const initNewRepoResult = spawnSync(\"git\", [\"init\"], {\n      cwd: targetPath,\n      stdio: \"inherit\",\n    });\n    if (initNewRepoResult.status !== 0) {\n      throw new Error(\"Initializing new git repository failed.\");\n    }\n\n    console.log(\"🎉 All done! Your new project has been set up!\");\n\n    console.log(`\\nTo get started, run the following commands:\\n\\n  cd ${fallbackDestFolder}\\n`);\n  } catch (err) {\n    console.error(\"Error during sparse checkout:\", (err as Error).message);\n    process.exit(1);\n  }\n};\n\n/**\n * Gets the latest version of a package from npm.\n */\nfunction getNpmLatestVersion(packageName: string): string | null {\n  const result = spawnSync(\"npm\", [\"view\", packageName, \"version\"], {\n    encoding: \"utf-8\",\n    stdio: [\"pipe\", \"pipe\", \"pipe\"],\n  });\n\n  if (result.status === 0 && result.stdout) {\n    return result.stdout.trim();\n  }\n  return null;\n}\n\n/**\n * Replaces all \"workspace:*\" versions in the root package.json with the latest npm versions.\n */\nfunction replaceWorkspaceVersions(targetPath: string): void {\n  const packageJsonPath = join(targetPath, \"package.json\");\n\n  if (!existsSync(packageJsonPath)) {\n    console.log(\"No package.json found in the root, skipping workspace version replacement.\");\n    return;\n  }\n\n  const packageJsonContent = readFileSync(packageJsonPath, \"utf-8\");\n  const packageJson = JSON.parse(packageJsonContent);\n\n  let hasChanges = false;\n\n  const depTypes = [\"dependencies\", \"devDependencies\", \"peerDependencies\", \"optionalDependencies\"];\n\n  for (const depType of depTypes) {\n    const deps = packageJson[depType];\n    if (!deps || typeof deps !== \"object\") continue;\n\n    for (const [pkgName, version] of Object.entries(deps)) {\n      if (typeof version === \"string\" && version.startsWith(\"workspace:\")) {\n        console.log(`Resolving latest npm version for ${pkgName}...`);\n        const latestVersion = getNpmLatestVersion(pkgName);\n\n        if (latestVersion) {\n          console.log(`  ${pkgName}: workspace:* -> ^${latestVersion}`);\n          deps[pkgName] = `^${latestVersion}`;\n          hasChanges = true;\n        } else {\n          console.warn(`  Warning: Could not fetch latest version for ${pkgName}, keeping workspace:* reference.`);\n        }\n      }\n    }\n  }\n\n  if (hasChanges) {\n    writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + \"\\n\", \"utf-8\");\n    console.log(\"Updated package.json with resolved npm versions.\");\n  } else {\n    console.log(\"No workspace:* versions found in package.json.\");\n  }\n}\n\n/**\n * Recursively copies all files and directories from `source` to `destination`.\n */\nfunction copyDirectoryContents(source: string, destination: string) {\n  if (!existsSync(source)) {\n    throw new Error(`Source directory \"${source}\" does not exist.`);\n  }\n\n  const items = readdirSync(source);\n\n  for (const item of items) {\n    const srcPath = join(source, item);\n    const destPath = join(destination, item);\n    const stats = lstatSync(srcPath);\n\n    if (stats.isDirectory()) {\n      mkdirSync(destPath, { recursive: true });\n      copyDirectoryContents(srcPath, destPath);\n    } else if (stats.isSymbolicLink()) {\n      const symlink = readlinkSync(srcPath);\n      symlinkSync(symlink, destPath);\n    } else {\n      copyFileSync(srcPath, destPath);\n    }\n  }\n}\n","#!/usr/bin/env node\n\nimport { performSparseCheckout } from \"./git.js\";\n\nexport * from \"./git.js\";\n\n// define an asynchronous main function to handle the CLI logic\nconst main = async () => {\n  // retrieve command-line arguments, excluding the first two (node and script path)\n  const args = process.argv.slice(2);\n\n  // check if the number of arguments is valid (either 1 or 2)\n  if (args.length < 1 || args.length > 2) {\n    // if not, print usage instructions and exit with an error code\n    console.error(\n      \"Usage: create-defuss <repo-url> [destination-folder]\\n\" +\n        \"Example: create-defuss https://github.com/kyr0/defuss/tree/main/examples/with-astro-ts ./my-new-project\"\n    );\n    process.exit(1);\n  }\n\n  // assign the first argument to repoUrl and the second to destFolder, defaulting to \".\" (current directory) if not provided\n  const repoUrl = args[0];\n  const destFolder = args[1];\n\n  // call the performSparseCheckout function with the provided arguments\n  performSparseCheckout(repoUrl, destFolder);\n};\n\n// execute the main function and handle any unexpected errors\nmain().catch((err) => {\n  // log the error and exit with an error code\n  console.error(\"Unexpected error:\", err);\n  process.exit(1);\n});"],"names":["defaultScmHostPattern","performSparseCheckout","__name","repoUrl","destFolder","scmHostPattern","match","platformUrl","owner","repo","branch","subdir","input","subdirNormalized","normalize","isAbsolute","sep","sanitizedSubdir","fallbackDestFolder","basename","targetPath","resolve","existsSync","mkdirSync","tempDir","mkdtempSync","join","tmpdir","spawnSync","subdirPath","copyDirectoryContents","replaceWorkspaceVersions","rmSync","err","getNpmLatestVersion","packageName","result","packageJsonPath","packageJsonContent","readFileSync","packageJson","hasChanges","depTypes","depType","deps","pkgName","version","latestVersion","writeFileSync","source","destination","items","readdirSync","item","srcPath","destPath","stats","lstatSync","symlink","readlinkSync","symlinkSync","copyFileSync","main","args"],"mappings":"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"}