{"version":3,"sources":["../../src/adapters/mac-adapter.ts"],"names":[],"mappings":";;;;;AAeO,MAAM,mBAAmB,aAAc,CAAA;AAAA,EAC3B,qBAAwB,GAAA,0BAAA;AAAA,EACxB,eAAkB,GAAA,qBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnC,MAAM,SAAiC,GAAA;AACrC,IAAI,IAAA;AACF,MAAM,MAAA,QAAA,GAAW,GAAG,OAAQ,EAAA;AAC5B,MAAA,MAAM,cAAiB,GAAA,IAAA,CAAK,QAAU,EAAA,IAAA,CAAK,qBAAqB,CAAA;AAChE,MAAA,MAAM,UAAa,GAAA,IAAA,CAAK,cAAgB,EAAA,IAAA,CAAK,eAAe,CAAA;AAE5D,MAAA,IAAA,CAAK,QAAS,CAAA,UAAA,EAAY,EAAC,MAAA,EAAQ,UAAS,CAAA;AAG5C,MAAM,MAAA,IAAA,CAAK,yBAAyB,cAAc,CAAA;AAElD,MAAO,OAAA,KAAA,CAAM,KAAK,IAAK,CAAA,OAAA,CAAQ,QAAQ,CAAA,CACpC,KAAK,CAAC,CAAA,EAAG,MAAM,CAAE,CAAA,KAAA,GAAQ,EAAE,KAAK,CAAA,CAChC,OAAO,CAAQ,IAAA,KAAA,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,aACzB,KAAY,EAAA;AACnB,MAAQ,OAAA,CAAA,KAAA,CAAM,wBAAwB,KAAK,CAAA;AAC3C,MAAA,OAAO,EAAC;AAAA;AACV;AACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,yBAAyB,cAAuC,EAAA;AAC5E,IAAI,IAAA;AACF,MAAM,MAAA,OAAA,GAAU,MAAM,EAAG,CAAA,QAAA,CAAS,QAAQ,cAAgB,EAAA,EAAC,aAAe,EAAA,IAAA,EAAK,CAAA;AAE/E,MAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,QAAI,IAAA,CAAC,KAAM,CAAA,WAAA,EAAe,EAAA;AAE1B,QAAA,IAAI,IAAK,CAAA,gBAAA,CAAiB,KAAM,CAAA,IAAI,CAAG,EAAA;AACrC,UAAA,MAAM,OAAU,GAAA,IAAA,CAAK,cAAgB,EAAA,KAAA,CAAM,IAAI,CAAA;AAC/C,UAAA,IAAA,CAAK,QAAS,CAAA,OAAA,EAAS,EAAC,MAAA,EAAQ,cAAa,CAAA;AAAA;AAC/C;AACF,aACO,KAAO,EAAA;AACd,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,gCAAA,EAAmC,cAAc,CAAA,CAAA,CAAA,EAAK,KAAK,CAAA;AAAA;AAC3E;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUU,eAAA,CAAgB,QAAwB,EAAA,IAAA,EAAc,MAAkC,EAAA;AAChG,IAAA,MAAM,QAAyB,GAAA;AAAA,MAC7B,GAAG,QAAA;AAAA,MACH;AAAA,KACF;AAEA,IAAM,MAAA,EAAC,OAAO,OAAS,EAAA,QAAA,EAAU,QAAU,GAAA,IAAA,CAAK,aAAa,IAAI,CAAA;AACjE,IAAA,MAAA,CAAO,OAAO,QAAU,EAAA,EAAC,OAAO,OAAS,EAAA,QAAA,EAAU,QAAO,CAAA;AAE1D,IAAO,OAAA,QAAA;AAAA;AAEX","file":"mac-adapter.mjs","sourcesContent":["/**\n * Mac adapter implementation\n * Handles Mac-specific file operations and path finding\n */\n\nimport * as fs from 'fs';\nimport * as os from 'os';\nimport {join} from 'path';\n\nimport {PathInfo, PathMetadata, PathSource} from '../types';\nimport {BaseOSAdapter} from './base-adapter';\n\n/**\n * Mac-specific adapter for finding iCloud paths\n */\nexport class MacAdapter extends BaseOSAdapter {\n  private readonly MOBILE_DOCUMENTS_PATH = 'Library/Mobile Documents';\n  private readonly ICLOUD_ROOT_DIR = 'com.apple.CloudDocs';\n\n  /**\n   * Find iCloud paths on macOS\n   *\n   * @returns Promise resolving to array of path info objects\n   */\n  async findPaths(): Promise<PathInfo[]> {\n    try {\n      const homePath = os.homedir();\n      const mobileDocsPath = join(homePath, this.MOBILE_DOCUMENTS_PATH);\n      const iCloudPath = join(mobileDocsPath, this.ICLOUD_ROOT_DIR);\n\n      this._addPath(iCloudPath, {source: 'common'});\n\n      // Discover app storage paths\n      await this._discoverAppStoragePaths(mobileDocsPath);\n\n      return Array.from(this.pathMap.values())\n        .sort((a, b) => b.score - a.score)\n        .filter(info => info.score > 0);\n    } catch (error: any) {\n      console.debug('Error finding paths:', error);\n      return [];\n    }\n  }\n\n  /**\n   * Discover app-specific storage paths in the Mobile Documents directory\n   *\n   * @param mobileDocsPath Path to the Mobile Documents directory\n   */\n  private async _discoverAppStoragePaths(mobileDocsPath: string): Promise<void> {\n    try {\n      const entries = await fs.promises.readdir(mobileDocsPath, {withFileTypes: true});\n\n      for (const entry of entries) {\n        if (!entry.isDirectory()) continue;\n\n        if (this.isAppStoragePath(entry.name)) {\n          const appPath = join(mobileDocsPath, entry.name);\n          this._addPath(appPath, {source: 'appStorage'});\n        }\n      }\n    } catch (error) {\n      console.debug(`Error scanning mobile docs path ${mobileDocsPath}:`, error);\n    }\n  }\n\n  /**\n   * Enrich path metadata with Mac-specific information\n   *\n   * @param metadata Base metadata\n   * @param path Path to enrich metadata for\n   * @param source Source information\n   * @returns Enriched metadata\n   */\n  protected _enrichMetadata(metadata: PathMetadata, path: string, source: PathSource): PathMetadata {\n    const enriched: PathMetadata = {\n      ...metadata,\n      source,\n    };\n\n    const {appId, appName, bundleId, vendor} = this.parseAppName(path);\n    Object.assign(enriched, {appId, appName, bundleId, vendor});\n\n    return enriched;\n  }\n}\n"]}