1{"version":3,"file":"XcodeProjectFile.js","names":["withBuildSourceFile","config","filePath","contents","overwrite","withXcodeProject","projectName","getProjectName","modRequest","projectRoot","modResults","createBuildSourceFile","project","nativeProjectRoot","platformProjectRoot","fileContents","path","join","absoluteFilePath","fs","existsSync","writeFileSync","groupName","dirname","hasFile","addBuildSourceFileToGroup","filepath"],"sources":["../../src/ios/XcodeProjectFile.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { ConfigPlugin, XcodeProject } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addBuildSourceFileToGroup, getProjectName } from './utils/Xcodeproj';\n\n/**\n * Create a build source file and link it to Xcode.\n *\n * @param config\n * @param props.filePath relative to the build source folder. ex: `ViewController.swift` would be created in `ios/myapp/ViewController.swift`.\n * @param props.contents file contents to write.\n * @param props.overwrite should the contents overwrite any existing file in the same location on disk.\n * @returns\n */\nexport const withBuildSourceFile: ConfigPlugin<{\n  filePath: string;\n  contents: string;\n  overwrite?: boolean;\n}> = (config, { filePath, contents, overwrite }) => {\n  return withXcodeProject(config, (config) => {\n    const projectName = getProjectName(config.modRequest.projectRoot);\n\n    config.modResults = createBuildSourceFile({\n      project: config.modResults,\n      nativeProjectRoot: config.modRequest.platformProjectRoot,\n      fileContents: contents,\n      filePath: path.join(projectName, filePath),\n      overwrite,\n    });\n    return config;\n  });\n};\n\n/**\n * Add a source file to the Xcode project and write it to the file system.\n *\n * @param nativeProjectRoot absolute path to the native app root `user/app/ios`\n * @param filePath path relative to the `nativeProjectRoot` for the file to create `user/app/ios/myapp/foobar.swift`\n * @param fileContents string file contents to write to the `filePath`\n * @param overwrite should write file even if one already exists\n */\nexport function createBuildSourceFile({\n  project,\n  nativeProjectRoot,\n  filePath,\n  fileContents,\n  overwrite,\n}: {\n  project: XcodeProject;\n  nativeProjectRoot: string;\n  filePath: string;\n  fileContents: string;\n  overwrite?: boolean;\n}): XcodeProject {\n  const absoluteFilePath = path.join(nativeProjectRoot, filePath);\n  if (overwrite || !fs.existsSync(absoluteFilePath)) {\n    // Create the file\n    fs.writeFileSync(absoluteFilePath, fileContents, 'utf8');\n  }\n\n  // `myapp`\n  const groupName = path.dirname(filePath);\n\n  // Ensure the file is linked with Xcode resource files\n  if (!project.hasFile(filePath)) {\n    project = addBuildSourceFileToGroup({\n      filepath: filePath,\n      groupName,\n      project,\n    });\n  }\n  return project;\n}\n"],"mappings":";;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAGA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA8E;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,mBAIX,GAAG,CAACC,MAAM,EAAE;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC;AAAU,CAAC,KAAK;EAClD,OAAO,IAAAC,8BAAgB,EAACJ,MAAM,EAAGA,MAAM,IAAK;IAC1C,MAAMK,WAAW,GAAG,IAAAC,2BAAc,EAACN,MAAM,CAACO,UAAU,CAACC,WAAW,CAAC;IAEjER,MAAM,CAACS,UAAU,GAAGC,qBAAqB,CAAC;MACxCC,OAAO,EAAEX,MAAM,CAACS,UAAU;MAC1BG,iBAAiB,EAAEZ,MAAM,CAACO,UAAU,CAACM,mBAAmB;MACxDC,YAAY,EAAEZ,QAAQ;MACtBD,QAAQ,EAAEc,eAAI,CAACC,IAAI,CAACX,WAAW,EAAEJ,QAAQ,CAAC;MAC1CE;IACF,CAAC,CAAC;IACF,OAAOH,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQO,SAASU,qBAAqB,CAAC;EACpCC,OAAO;EACPC,iBAAiB;EACjBX,QAAQ;EACRa,YAAY;EACZX;AAOF,CAAC,EAAgB;EACf,MAAMc,gBAAgB,GAAGF,eAAI,CAACC,IAAI,CAACJ,iBAAiB,EAAEX,QAAQ,CAAC;EAC/D,IAAIE,SAAS,IAAI,CAACe,aAAE,CAACC,UAAU,CAACF,gBAAgB,CAAC,EAAE;IACjD;IACAC,aAAE,CAACE,aAAa,CAACH,gBAAgB,EAAEH,YAAY,EAAE,MAAM,CAAC;EAC1D;;EAEA;EACA,MAAMO,SAAS,GAAGN,eAAI,CAACO,OAAO,CAACrB,QAAQ,CAAC;;EAExC;EACA,IAAI,CAACU,OAAO,CAACY,OAAO,CAACtB,QAAQ,CAAC,EAAE;IAC9BU,OAAO,GAAG,IAAAa,sCAAyB,EAAC;MAClCC,QAAQ,EAAExB,QAAQ;MAClBoB,SAAS;MACTV;IACF,CAAC,CAAC;EACJ;EACA,OAAOA,OAAO;AAChB"}