1{"version":3,"file":"Scheme.js","names":["withScheme","createInfoPlistPluginWithPropertyGuard","setScheme","infoPlistProperty","expoConfigProperty","getScheme","config","Array","isArray","scheme","validate","value","filter","infoPlist","ios","bundleIdentifier","push","length","CFBundleURLTypes","CFBundleURLSchemes","appendScheme","existingSchemes","some","includes","removeScheme","map","bundleUrlType","index","indexOf","splice","undefined","Boolean","hasScheme","schemes","getSchemesFromPlist","reduce"],"sources":["../../src/ios/Scheme.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\nimport { InfoPlist, URLScheme } from './IosConfig.types';\n\nexport const withScheme = createInfoPlistPluginWithPropertyGuard(\n  setScheme,\n  {\n    infoPlistProperty: 'CFBundleURLTypes',\n    expoConfigProperty: 'scheme',\n  },\n  'withScheme'\n);\n\nexport function getScheme(config: { scheme?: string | string[] }): string[] {\n  if (Array.isArray(config.scheme)) {\n    const validate = (value: any): value is string => {\n      return typeof value === 'string';\n    };\n    return config.scheme.filter<string>(validate);\n  } else if (typeof config.scheme === 'string') {\n    return [config.scheme];\n  }\n  return [];\n}\n\nexport function setScheme(\n  config: Partial<Pick<ExpoConfig, 'scheme' | 'ios'>>,\n  infoPlist: InfoPlist\n): InfoPlist {\n  const scheme = [\n    ...getScheme(config),\n    // @ts-ignore: TODO: ios.scheme is an unreleased -- harder to add to turtle v1.\n    ...getScheme(config.ios ?? {}),\n  ];\n  // Add the bundle identifier to the list of schemes for easier Google auth and parity with Turtle v1.\n  if (config.ios?.bundleIdentifier) {\n    scheme.push(config.ios.bundleIdentifier);\n  }\n  if (scheme.length === 0) {\n    return infoPlist;\n  }\n\n  return {\n    ...infoPlist,\n    CFBundleURLTypes: [{ CFBundleURLSchemes: scheme }],\n  };\n}\n\nexport function appendScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n  if (!scheme) {\n    return infoPlist;\n  }\n\n  const existingSchemes = infoPlist.CFBundleURLTypes ?? [];\n  if (existingSchemes.some(({ CFBundleURLSchemes }) => CFBundleURLSchemes.includes(scheme))) {\n    return infoPlist;\n  }\n\n  return {\n    ...infoPlist,\n    CFBundleURLTypes: [\n      ...existingSchemes,\n      {\n        CFBundleURLSchemes: [scheme],\n      },\n    ],\n  };\n}\n\nexport function removeScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n  if (!scheme) {\n    return infoPlist;\n  }\n\n  // No need to remove if we don't have any\n  if (!infoPlist.CFBundleURLTypes) {\n    return infoPlist;\n  }\n\n  infoPlist.CFBundleURLTypes = infoPlist.CFBundleURLTypes.map((bundleUrlType) => {\n    const index = bundleUrlType.CFBundleURLSchemes.indexOf(scheme);\n    if (index > -1) {\n      bundleUrlType.CFBundleURLSchemes.splice(index, 1);\n      if (bundleUrlType.CFBundleURLSchemes.length === 0) {\n        return undefined;\n      }\n    }\n    return bundleUrlType;\n  }).filter(Boolean) as URLScheme[];\n\n  return infoPlist;\n}\n\nexport function hasScheme(scheme: string, infoPlist: InfoPlist): boolean {\n  const existingSchemes = infoPlist.CFBundleURLTypes;\n\n  if (!Array.isArray(existingSchemes)) return false;\n\n  return existingSchemes.some(({ CFBundleURLSchemes: schemes }: any) =>\n    Array.isArray(schemes) ? schemes.includes(scheme) : false\n  );\n}\n\nexport function getSchemesFromPlist(infoPlist: InfoPlist): string[] {\n  if (Array.isArray(infoPlist.CFBundleURLTypes)) {\n    return infoPlist.CFBundleURLTypes.reduce<string[]>((schemes, { CFBundleURLSchemes }) => {\n      if (Array.isArray(CFBundleURLSchemes)) {\n        return [...schemes, ...CFBundleURLSchemes];\n      }\n      return schemes;\n    }, []);\n  }\n  return [];\n}\n"],"mappings":"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"}