@devlander/expo-app-config
Version:
A package to help with deployment of expo applications for different environments
464 lines (463 loc) • 12.8 kB
TypeScript
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 {};