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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"}