UNPKG

@mattnucc/apple-targets

Version:
484 lines (483 loc) 22.2 kB
import { PBXNativeTarget, XcodeProject } from "@bacons/xcode"; export type ExtensionType = "widget" | "notification-content" | "notification-service" | "share" | "intent" | "bg-download" | "intent-ui" | "spotlight" | "matter" | "quicklook-thumbnail" | "imessage" | "clip" | "watch" | "watch-widget" | "location-push" | "credentials-provider" | "account-auth" | "action" | "safari" | "app-intent" | "device-activity-monitor" | "network-packet-tunnel" | "network-app-proxy" | "network-filter-data" | "network-dns-proxy" | "keyboard"; export declare const KNOWN_EXTENSION_POINT_IDENTIFIERS: Record<string, ExtensionType>; export declare const SHOULD_USE_APP_GROUPS_BY_DEFAULT: Record<ExtensionType, boolean>; export declare function getTargetInfoPlistForType(type: ExtensionType): { NSExtension?: undefined; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionAttributes: { NSExtensionActivationRule: { NSExtensionActivationSupportsFileWithMaxCount: number; NSExtensionActivationSupportsImageWithMaxCount: number; NSExtensionActivationSupportsMovieWithMaxCount: number; NSExtensionActivationSupportsText: boolean; NSExtensionActivationSupportsWebURLWithMaxCount: number; }; NSExtensionJavaScriptPreprocessingFile: string; NSExtensionServiceAllowsFinderPreviewItem: boolean; NSExtensionServiceAllowsTouchBarItem: boolean; NSExtensionServiceFinderPreviewIconName: string; NSExtensionServiceTouchBarBezelColorName: string; NSExtensionServiceTouchBarIconName: string; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPointIdentifier: string; NSExtensionPrincipalClass: string; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { EXAppExtensionAttributes: { EXExtensionPointIdentifier: string; }; NSExtension?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { CFBundleName: string; CFBundleIdentifier: string; CFBundleVersion: string; CFBundleExecutable: string; CFBundlePackageType: string; CFBundleShortVersionString: string; UIApplicationSupportsIndirectInputEvents: boolean; NSAppClip: { NSAppClipRequestEphemeralUserNotification: boolean; NSAppClipRequestLocationConfirmation: boolean; }; NSAppTransportSecurity: { NSAllowsArbitraryLoads: boolean; NSAllowsLocalNetworking: boolean; }; UILaunchStoryboardName: string; UIUserInterfaceStyle: string; UIViewControllerBasedStatusBarAppearance: boolean; NSExtension?: undefined; EXAppExtensionAttributes?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionPointIdentifier: string | undefined; NSExtensionPrincipalClass: string; NSExtensionAttributes?: undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionPointIdentifier: string | undefined; NSExtensionPrincipalClass: string; NSExtensionAttributes: { ASAccountAuthenticationModificationSupportsStrongPasswordChange: boolean; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple: boolean; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionPointIdentifier: string | undefined; NSExtensionPrincipalClass: string; NSExtensionAttributes: { RequestsOpenAccess: boolean; IsASCIICapable: boolean; PrefersRightToLeft: boolean; PrimaryLanguage: string; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionAttributes: { NSExtensionActivationRule: string; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionAttributes: { QLSupportedContentTypes: never[]; QLThumbnailMinimumDimension: number; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { CSExtensionLabel: string; NSExtension: { NSExtensionAttributes: { CSSupportedContentTypes: string[]; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; } | { NSExtension: { NSExtensionAttributes: { IntentsSupported: string[]; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsRestrictedWhileLocked?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionAttributes: { IntentsRestrictedWhileLocked: never[]; IntentsSupported: string[]; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; UNNotificationExtensionCategory?: undefined; UNNotificationExtensionInitialContentSizeRatio?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionAttributes: { UNNotificationExtensionCategory: string; UNNotificationExtensionInitialContentSizeRatio: number; NSExtensionActivationRule?: undefined; NSExtensionJavaScriptPreprocessingFile?: undefined; NSExtensionServiceAllowsFinderPreviewItem?: undefined; NSExtensionServiceAllowsTouchBarItem?: undefined; NSExtensionServiceFinderPreviewIconName?: undefined; NSExtensionServiceTouchBarBezelColorName?: undefined; NSExtensionServiceTouchBarIconName?: undefined; ASAccountAuthenticationModificationSupportsStrongPasswordChange?: undefined; ASAccountAuthenticationModificationSupportsUpgradeToSignInWithApple?: undefined; RequestsOpenAccess?: undefined; IsASCIICapable?: undefined; PrefersRightToLeft?: undefined; PrimaryLanguage?: undefined; QLSupportedContentTypes?: undefined; QLThumbnailMinimumDimension?: undefined; CSSupportedContentTypes?: undefined; IntentsSupported?: undefined; IntentsRestrictedWhileLocked?: undefined; }; NSExtensionPrincipalClass: string; NSExtensionPointIdentifier: string | undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; } | { NSExtension: { NSExtensionPointIdentifier: string | undefined; NSExtensionAttributes?: undefined; NSExtensionPrincipalClass?: undefined; }; EXAppExtensionAttributes?: undefined; CFBundleName?: undefined; CFBundleIdentifier?: undefined; CFBundleVersion?: undefined; CFBundleExecutable?: undefined; CFBundlePackageType?: undefined; CFBundleShortVersionString?: undefined; UIApplicationSupportsIndirectInputEvents?: undefined; NSAppClip?: undefined; NSAppTransportSecurity?: undefined; UILaunchStoryboardName?: undefined; UIUserInterfaceStyle?: undefined; UIViewControllerBasedStatusBarAppearance?: undefined; CSExtensionLabel?: undefined; }; export declare function productTypeForType(type: ExtensionType): "com.apple.product-type.application.on-demand-install-capable" | "com.apple.product-type.application" | "com.apple.product-type.extensionkit-extension" | "com.apple.product-type.app-extension"; export declare function needsEmbeddedSwift(type: ExtensionType): boolean; export declare function getFrameworksForType(type: ExtensionType): string[]; export declare function isNativeTargetOfType(target: PBXNativeTarget, type: ExtensionType): boolean; export declare function getMainAppTarget(project: XcodeProject): PBXNativeTarget; export declare function getAuxiliaryTargets(project: XcodeProject): PBXNativeTarget[]; export declare function getWatchAppTarget(project: XcodeProject): PBXNativeTarget | undefined;