Utilização

Validate a configuration in an app-development tool.

Este tipo é usado por config.resolveConfig

tsx
// Validate a configuration in an app-development tool.
import { resolveConfig, SETTING_DEFAULTS, IOS_BACKGROUND_MODES } from 'kuito/config';

const config = resolveConfig(
  {
    name: 'Notes',
    ios: { bundleIdentifier: 'com.example.notes' },
    android: { applicationId: 'com.example.notes' },
    environments: { staging: { idSuffix: '.staging' } },
  },
  '/project/kuito.config.ts',
  'staging',
);
console.log(config.ios.bundleIdentifier, config.splash, config.icon);
console.log(SETTING_DEFAULTS.minSdk, IOS_BACKGROUND_MODES);

Declaração do tipo

ts
export interface AppConfig {
  name: string;
  version: string;
  buildNumber: number;
  icon: IconSource | null;
  orientation: Orientation;
  colorScheme: ColorScheme;
  backgroundColor: string | null;
  statusBar: { style: StatusBarStyle; hidden: boolean };
  urlSchemes: string[];
  linkDomains: string[];
  ios: {
    bundleIdentifier: string;
    icon: { light: IconSource | null; dark: IconSource | null; tinted: IconSource | null };
    supportsTablet: boolean;
    requiresFullScreen: boolean;
    deploymentTarget: string;
    teamId: string | null;
    associatedDomains: string[];
    pushEnvironment: PushEnvironment | null;
    backgroundModes: IOSBackgroundMode[];
    infoPlist: PlistDictionary;
    entitlements: PlistDictionary;
  };
  android: {
    applicationId: string;
    adaptiveIcon: {
      foreground: IconSource | null;
      /** A `#RRGGBB` color or an image. */
      background: string | IconSource | null;
      monochrome: IconSource | null;
    };
    softInputMode: SoftInputMode;
    minSdk: number;
    /** The keystore as the config wrote it, relative to its file. */
    signing: { keystore: string | null; keyAlias: string | null };
    manifest: AndroidManifestAdditions;
    theme: Record<string, string>;
  };
  permissions: KuitoPermissions;
  backgroundTasks: string[];
  fonts: FontSource[];
  splash: SplashConfig | null;
  /** The URL without a trailing slash. */
  updates: { url: string; publicKey: string } | null;
  strict: boolean;
  /** Each migration's statements. */
  migrations: string[][];
}

Membros 19

NomeTipoObrigatórioDescrição
namestringSim—
versionstringSim—
buildNumbernumberSim—
iconIconSourceSim—
orientationOrientationSim—
colorSchemeColorSchemeSim—
backgroundColorstringSim—
statusBar{ style: StatusBarStyle; hidden: boolean;}Sim—
urlSchemesstring[]Sim—
linkDomainsstring[]Sim—
ios{ bundleIdentifier: string; icon: { light: IconSource | null; dark: IconSource | null; tinted: IconSource | null; }; supportsTablet: boolean; requiresFullScreen: boolean; deploymentTarget: string; teamId: string | null; associatedDomains: string[]; pushEnvironment: PushEnvironment | null; backgroundModes: IOSBackgroundMode[]; infoPlist: PlistDictionary; entitlements: PlistDictionary;}Sim—
android{ applicationId: string; adaptiveIcon: { foreground: IconSource | null; background: string | IconSource | null; monochrome: IconSource | null; }; softInputMode: SoftInputMode; minSdk: number; signing: { keystore: string | null; keyAlias: string | null; }; manifest: AndroidManifestAdditions; theme: Record<string, string>;}Sim—
permissionsKuitoPermissionsSim—
backgroundTasksstring[]Sim—
fontsFontSource[]Sim—
splashSplashConfigSim—
updates{ url: string; publicKey: string;}SimThe URL without a trailing slash.
strictbooleanSim—
migrationsstring[][]SimEach migration's statements.
statusBar — campos aninhados

statusBar campos

NomeTipoObrigatórioDescrição
styleStatusBarStyleSim—
hiddenbooleanSim—
ios — campos aninhados

ios campos

NomeTipoObrigatórioDescrição
bundleIdentifierstringSim—
icon{ light: IconSource | null; dark: IconSource | null; tinted: IconSource | null;}Sim—
supportsTabletbooleanSim—
requiresFullScreenbooleanSim—
deploymentTargetstringSim—
teamIdstringSim—
associatedDomainsstring[]Sim—
pushEnvironment"development" | "production"Sim—
backgroundModes("location" | "audio" | "voip" | "fetch" | "remote-notification" | "processing" | "external-accessory" | "bluetooth-central" | "bluetooth-peripheral" | "nearby-interaction" | "push-to-talk")[]Sim—
infoPlistPlistDictionarySim—
entitlementsPlistDictionarySim—
icon — campos aninhados

icon campos

NomeTipoObrigatórioDescrição
lightIconSourceSim—
darkIconSourceSim—
tintedIconSourceSim—
android — campos aninhados

android campos

NomeTipoObrigatórioDescrição
applicationIdstringSim—
adaptiveIcon{ foreground: IconSource | null; background: string | IconSource | null; monochrome: IconSource | null;}Sim—
softInputModeSoftInputModeSim—
minSdknumberSim—
signing{ keystore: string | null; keyAlias: string | null;}SimThe keystore as the config wrote it, relative to its file.
manifestAndroidManifestAdditionsSim—
themeRecord<string, string>Sim—
adaptiveIcon — campos aninhados

adaptiveIcon campos

NomeTipoObrigatórioDescrição
foregroundIconSourceSim—
backgroundstring | IconSourceSimA #RRGGBB color or an image.
monochromeIconSourceSim—
signing — campos aninhados

signing campos

NomeTipoObrigatórioDescrição
keystorestringSim—
keyAliasstringSim—
updates — campos aninhados

updates campos

NomeTipoObrigatórioDescrição
urlstringSim—
publicKeystringSim—
Gerado a partir das declarações TypeScript públicas: assinaturas, props e predefinições vêm da fonte verificada, as descrições da sua JSDoc. Nenhuma predefinição é inventada.