{"version":3,"file":"fs.mjs","names":[],"sources":["../../src/utils/fs.ts"],"sourcesContent":["import * as fs from 'node:fs/promises';\nimport { createDebugLogger } from './debug.js';\nconst debug = createDebugLogger('dir-exists');\n\nexport async function dirExists(\n  path: string,\n  { readable, writable }: { readable: boolean; writable?: boolean } = {\n    readable: true,\n    writable: false,\n  },\n): Promise<boolean> {\n  debug(\n    `Testing if directory ${path} is readable ${writable ? 'and writable ' : ''}...`,\n  );\n\n  try {\n    const stats = await fs.stat(path);\n    if (!stats.isDirectory()) {\n      // Directory does not exists\n      return false;\n    }\n\n    // Check that the directory is writable and readable\n    await fs.access(\n      path,\n      (writable ? fs.constants.W_OK : 0) | (readable ? fs.constants.R_OK : 0),\n    );\n\n    debug(`Directory ${path} is accessible`);\n\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport async function createDir(path: string): Promise<void> {\n  debug('Creating directory %s ...', path);\n  await fs.mkdir(path, { recursive: true });\n}\n"],"mappings":";;;AAEA,MAAM,QAAQ,kBAAkB,aAAa;AAE7C,eAAsB,UACpB,MACA,EAAE,UAAU,aAAwD;CAClE,UAAU;CACV,UAAU;CACX,EACiB;AAClB,OACE,wBAAwB,KAAK,eAAe,WAAW,kBAAkB,GAAG,KAC7E;AAED,KAAI;AAEF,MAAI,EAAC,MADe,GAAG,KAAK,KAAK,EACtB,aAAa,CAEtB,QAAO;AAIT,QAAM,GAAG,OACP,OACC,WAAW,GAAG,UAAU,OAAO,MAAM,WAAW,GAAG,UAAU,OAAO,GACtE;AAED,QAAM,aAAa,KAAK,gBAAgB;AAExC,SAAO;SACD;AACN,SAAO;;;AAIX,eAAsB,UAAU,MAA6B;AAC3D,OAAM,6BAA6B,KAAK;AACxC,OAAM,GAAG,MAAM,MAAM,EAAE,WAAW,MAAM,CAAC"}