UNPKG

@devlander/expo-app-config

Version:

A package to help with deployment of expo applications for different environments

464 lines (463 loc) 12.8 kB
export type ColorsFromAssets = ColorAppConfig & ColorConfig; export interface SetupConfig { cli: { version: string; requireCommit: boolean; }; build: { production: { distribution: string; ios: { buildConfiguration: "Release" | "Debug"; bundleIdentifier: string; }; android: { gradleCommand: string; }; }; staging: { distribution: string; ios: { buildConfiguration: string; bundleIdentifier: string; simulator: boolean; }; android: { gradleCommand: string; buildType: string; withoutCredentials: boolean; }; env: { environment: string; branding: { logoURL: string; }; baseURL: { native: string; web: string; }; verbiage: { displayName: string; primaryTagline: string; secondaryTagline: string; }; jwPlayer: { playerKey: string; playerSecret: string; }; authentication: { login: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; register: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; }; stripeDetails: { secretKey: string; publishableKey: string; }; apiKeys: { logRocketSlug: string; }; }; }; development: { distribution: string; developmentClient: boolean; ios: { buildConfiguration: string; bundleIdentifier: string; simulator: boolean; }; android: { gradleCommand: string; withoutCredentials: boolean; }; env: { environment: string; branding: { logoURL: string; }; baseURL: { native: string; web: string; }; verbiage: { displayName: string; primaryTagline: string; secondaryTagline: string; }; jwPlayer: { playerKey: string; playerSecret: string; }; authentication: { login: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; register: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; }; stripeDetails: { secretKey: string; publishableKey: string; }; apiKeys: { logRocketSlug: string; }; }; }; local: { distribution: string; developmentClient: boolean; ios: { buildConfiguration: string; bundleIdentifier: string; simulator: boolean; }; android: { gradleCommand: string; withoutCredentials: boolean; }; env: { environment: string; branding: { logoURL: string; }; baseURL: { native: string; web: string; }; verbiage: { displayName: string; primaryTagline: string; secondaryTagline: string; }; jwPlayer: { playerKey: string; playerSecret: string; }; authentication: { login: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; register: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; }; stripeDetails: { secretKey: string; publishableKey: string; }; apiKeys: { logRocketSlug: string; }; }; }; }; submit: { production: { ios: { appStoreConnectApiKey: string; ascAppId: string; version: string; buildNumber: string; releaseNotes: string; screenshots: string[]; }; android: { serviceAccountKeyPath: string; track: string; packageName: string; versionCode: number; releaseNotes: string; }; }; staging: { ios: { appStoreConnectApiKey: string; ascAppId: string; version: string; buildNumber: string; releaseNotes: string; screenshots: string[]; }; android: { serviceAccountKeyPath: string; track: string; packageName: string; versionCode: number; releaseNotes: string; }; }; development: { ios: { appStoreConnectApiKey: string; ascAppId: string; version: string; buildNumber: string; releaseNotes: string; screenshots: string[]; }; android: { serviceAccountKeyPath: string; track: string; packageName: string; versionCode: number; releaseNotes: string; }; }; }; } interface IosEasBuildConfig { buildConfiguration: string; bundleIdentifier: string; simulator: boolean; } interface AndroidEasBuildConfig { gradleCommand: ":app:bundleDebug" | ":app:bundleRelease" | ":app:assembleDebug" | ":app:assembleRelease" | string; buildType: "release" | "debug" | string; withoutCredentials: boolean; } interface EasBuildConfig { distribution: "store" | "internal"; developmentClient: boolean; ios: IosEasBuildConfig; android: AndroidEasBuildConfig; env?: AppConfigFromEnv; } interface EasConfig { cli: { version: string; requireCommit: boolean; }; build: { production: EasBuildConfig; staging: EasBuildConfig; development: EasBuildConfig; local: { distribution: string; developmentClient: boolean; ios: { buildConfiguration: string; bundleIdentifier: string; simulator: boolean; }; android: { gradleCommand: string; withoutCredentials: boolean; }; env: AppConfigFromEnv; }; }; submit: { production?: EasSubmitConfig; staging?: EasSubmitConfig; dev?: EasSubmitConfig; }; } interface AndroidSubmitConfig { serviceAccountKeyPath: string; track: string; packageName: string; versionCode: number; releaseNotes: string; } interface IosSubmitConfig { appStoreConnectApiKey: string; ascAppId: string; version: string; buildNumber: string; releaseNotes: string; screenshots: string[]; } interface EasSubmitConfig { production: { ios: IosSubmitConfig; android: AndroidSubmitConfig; }; staging: { ios: IosSubmitConfig; android: AndroidSubmitConfig; }; development: { ios: IosSubmitConfig; android: AndroidSubmitConfig; }; } export type PartialEasConfig = Partial<EasConfig>; export interface BundleConfig { colorsPath: string; envVariables: AppConfigFromEnv; imagesPath: string; appName: string; title: string; domainName: string; versionsPath?: string; projectId: string; easConfig?: PartialEasConfig; } export interface AppConfigFromEnv { environment: EnvType; baseURL: { native: string; web: string; }; branding: { logoURL: string; }; verbiage: { displayName: string; primaryTagline: string; secondaryTagline: string; }; authentication: { login: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; register: { email: string; password: string; phoneNumber: string; firstName: string; lastName: string; }; }; apiKeys: { [key: string]: string; }; } export interface VersionsJSON { production: EnvironmentConfig; staging: EnvironmentConfig; development: EnvironmentConfig; } export interface AndroidVersion { versionCode: number; } export interface IOSVersion { buildNumber: string; } export interface AppVersion { version: string; } export interface EnvironmentConfig { ios: IOSVersion; android: AndroidVersion; app: AppVersion; } export declare enum EnvEumFromPackage { production = "production", staging = "staging", development = "development", local = "local" } export type EnvType = "production" | "staging" | "development" | "local" | EnvEumFromPackage; export interface ColorMode { light: string; dark?: string; } export interface SplashConfig { backgroundColor: ColorMode; } export interface AdaptiveIconConfig { backgroundColor: ColorMode; } export interface StatusBarConfig { backgroundColor: ColorMode; } export interface NavigationBarConfig { backgroundColor: ColorMode; } export interface ColorConfig { statusBar: StatusBarConfig; navigationBar: NavigationBarConfig; primaryColor: ColorMode; } export interface ColorAppConfig { splash: SplashConfig; adaptiveIcon: AdaptiveIconConfig; iconColor: ColorMode; themeColor: string; } export interface ExtraConfig { eas: { projectId: string; }; env: AppConfigFromEnv; } export interface PieceOfConfig extends Partial<any> { name: string; slug: string; version?: string; icon: string; scheme: string; android: { package: string; versionCode?: number; backgroundColor: string; splash: { image: string; backgroundColor: string; resizeMode?: "cover" | "contain"; }; adaptiveIcon: { foregroundImage: string; }; icon: string; }; web: { backgroundColor: string; splash: { image: string; backgroundColor: string; resizeMode?: "cover" | "contain"; }; shortName: string; favicon: string; themeColor: string; }; ios: { bundleIdentifier: string; backgroundColor: string; buildNumber?: string; splash: { image: string; resizeMode?: "cover" | "contain"; backgroundColor: string; }; icon: string; }; extra?: ExtraConfig; } export {};