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;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,mBAIX,GAAG,CAACC,MAAD,EAAS;EAAEC,QAAF;EAAYC,QAAZ;EAAsBC;AAAtB,CAAT,KAA+C;EAClD,OAAO,IAAAC,8BAAA,EAAiBJ,MAAjB,EAA0BA,MAAD,IAAY;IAC1C,MAAMK,WAAW,GAAG,IAAAC,2BAAA,EAAeN,MAAM,CAACO,UAAP,CAAkBC,WAAjC,CAApB;IAEAR,MAAM,CAACS,UAAP,GAAoBC,qBAAqB,CAAC;MACxCC,OAAO,EAAEX,MAAM,CAACS,UADwB;MAExCG,iBAAiB,EAAEZ,MAAM,CAACO,UAAP,CAAkBM,mBAFG;MAGxCC,YAAY,EAAEZ,QAH0B;MAIxCD,QAAQ,EAAEc,eAAA,CAAKC,IAAL,CAAUX,WAAV,EAAuBJ,QAAvB,CAJ8B;MAKxCE;IALwC,CAAD,CAAzC;IAOA,OAAOH,MAAP;EACD,CAXM,CAAP;AAYD,CAjBM;AAmBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASU,qBAAT,CAA+B;EACpCC,OADoC;EAEpCC,iBAFoC;EAGpCX,QAHoC;EAIpCa,YAJoC;EAKpCX;AALoC,CAA/B,EAYU;EACf,MAAMc,gBAAgB,GAAGF,eAAA,CAAKC,IAAL,CAAUJ,iBAAV,EAA6BX,QAA7B,CAAzB;;EACA,IAAIE,SAAS,IAAI,CAACe,aAAA,CAAGC,UAAH,CAAcF,gBAAd,CAAlB,EAAmD;IACjD;IACAC,aAAA,CAAGE,aAAH,CAAiBH,gBAAjB,EAAmCH,YAAnC,EAAiD,MAAjD;EACD,CALc,CAOf;;;EACA,MAAMO,SAAS,GAAGN,eAAA,CAAKO,OAAL,CAAarB,QAAb,CAAlB,CARe,CAUf;;;EACA,IAAI,CAACU,OAAO,CAACY,OAAR,CAAgBtB,QAAhB,CAAL,EAAgC;IAC9BU,OAAO,GAAG,IAAAa,sCAAA,EAA0B;MAClCC,QAAQ,EAAExB,QADwB;MAElCoB,SAFkC;MAGlCV;IAHkC,CAA1B,CAAV;EAKD;;EACD,OAAOA,OAAP;AACD"}