1{"version":3,"file":"Permissions.js","names":["debug","Debug","applyPermissions","defaults","permissions","infoPlist","entries","Object","length","JSON","stringify","permission","description","createPermissionsPlugin","name","withIosPermissions","config","withInfoPlist","modResults","defineProperty","value"],"sources":["../../src/ios/Permissions.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withInfoPlist } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\n\nconst debug = Debug('expo:config-plugins:ios:permissions');\n\nexport function applyPermissions<Defaults extends Record<string, string> = Record<string, string>>(\n  defaults: Defaults,\n  permissions: Partial<Record<keyof Defaults, string | false>>,\n  infoPlist: InfoPlist\n): InfoPlist {\n  const entries = Object.entries(defaults);\n  if (entries.length === 0) {\n    debug(`No defaults provided: ${JSON.stringify(permissions)}`);\n  }\n  for (const [permission, description] of entries) {\n    if (permissions[permission] === false) {\n      debug(`Deleting \"${permission}\"`);\n      delete infoPlist[permission];\n    } else {\n      infoPlist[permission] = permissions[permission] || infoPlist[permission] || description;\n      debug(`Setting \"${permission}\" to \"${infoPlist[permission]}\"`);\n    }\n  }\n  return infoPlist;\n}\n\n/**\n * Helper method for creating mods to apply default permissions.\n *\n * @param action\n */\nexport function createPermissionsPlugin<\n  Defaults extends Record<string, string> = Record<string, string>\n>(defaults: Defaults, name?: string) {\n  const withIosPermissions: ConfigPlugin<Record<keyof Defaults, string | undefined | false>> = (\n    config,\n    permissions\n  ) =>\n    withInfoPlist(config, async (config) => {\n      config.modResults = applyPermissions(defaults, permissions, config.modResults);\n      return config;\n    });\n  if (name) {\n    Object.defineProperty(withIosPermissions, 'name', {\n      value: name,\n    });\n  }\n  return withIosPermissions;\n}\n"],"mappings":";;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;AAGA,MAAMA,KAAK,GAAG,IAAAC,gBAAA,EAAM,qCAAN,CAAd;;AAEO,SAASC,gBAAT,CACLC,QADK,EAELC,WAFK,EAGLC,SAHK,EAIM;EACX,MAAMC,OAAO,GAAGC,MAAM,CAACD,OAAP,CAAeH,QAAf,CAAhB;;EACA,IAAIG,OAAO,CAACE,MAAR,KAAmB,CAAvB,EAA0B;IACxBR,KAAK,CAAE,yBAAwBS,IAAI,CAACC,SAAL,CAAeN,WAAf,CAA4B,EAAtD,CAAL;EACD;;EACD,KAAK,MAAM,CAACO,UAAD,EAAaC,WAAb,CAAX,IAAwCN,OAAxC,EAAiD;IAC/C,IAAIF,WAAW,CAACO,UAAD,CAAX,KAA4B,KAAhC,EAAuC;MACrCX,KAAK,CAAE,aAAYW,UAAW,GAAzB,CAAL;MACA,OAAON,SAAS,CAACM,UAAD,CAAhB;IACD,CAHD,MAGO;MACLN,SAAS,CAACM,UAAD,CAAT,GAAwBP,WAAW,CAACO,UAAD,CAAX,IAA2BN,SAAS,CAACM,UAAD,CAApC,IAAoDC,WAA5E;MACAZ,KAAK,CAAE,YAAWW,UAAW,SAAQN,SAAS,CAACM,UAAD,CAAa,GAAtD,CAAL;IACD;EACF;;EACD,OAAON,SAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASQ,uBAAT,CAELV,QAFK,EAEeW,IAFf,EAE8B;EACnC,MAAMC,kBAAoF,GAAG,CAC3FC,MAD2F,EAE3FZ,WAF2F,KAI3F,IAAAa,2BAAA,EAAcD,MAAd,EAAsB,MAAOA,MAAP,IAAkB;IACtCA,MAAM,CAACE,UAAP,GAAoBhB,gBAAgB,CAACC,QAAD,EAAWC,WAAX,EAAwBY,MAAM,CAACE,UAA/B,CAApC;IACA,OAAOF,MAAP;EACD,CAHD,CAJF;;EAQA,IAAIF,IAAJ,EAAU;IACRP,MAAM,CAACY,cAAP,CAAsBJ,kBAAtB,EAA0C,MAA1C,EAAkD;MAChDK,KAAK,EAAEN;IADyC,CAAlD;EAGD;;EACD,OAAOC,kBAAP;AACD"}