@mattnucc/apple-targets
Version:
Generate Apple Targets with Expo Prebuild
484 lines (483 loc) • 22.2 kB
TypeScript
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;