UNPKG

37.6 kBTypeScriptView Raw
1export declare type PackageJSONConfig = {
2 [key: string]: any;
3};
4export declare type ProjectConfig = {
5 /**
6 * Fully evaluated Expo config with default values injected.
7 */
8 exp: ExpoConfig;
9 /**
10 * Project package.json object with default values injected.
11 */
12 pkg: PackageJSONConfig;
13 /**
14 * Unaltered static config (app.config.json, app.json, or custom json config).
15 * For legacy, an empty object will be returned even if no static config exists.
16 */
17 rootConfig: AppJSONConfig;
18 /**
19 * Path to the static json config file if it exists.
20 * If a project has an app.config.js and an app.json then app.json will be returned.
21 * If a project has an app.config.json and an app.json then app.config.json will be returned.
22 * Returns null if no static config file exists.
23 */
24 staticConfigPath: string | null;
25 /**
26 * Path to an app.config.js or app.config.ts.
27 * Returns null if no dynamic config file exists.
28 */
29 dynamicConfigPath: string | null;
30 /**
31 * Returns the type of the value exported from the dynamic config.
32 * This can be used to determine if the dynamic config is potentially extending a static config when (v === 'function').
33 * Returns null if no dynamic config file exists.
34 */
35 dynamicConfigObjectType: string | null;
36};
37export declare type AppJSONConfig = {
38 expo: ExpoConfig;
39 [key: string]: any;
40};
41export declare type BareAppConfig = {
42 name: string;
43 [key: string]: any;
44};
45declare type ExpoOrientation = 'default' | 'portrait' | 'landscape';
46declare type ExpoPrivacy = 'public' | 'unlisted';
47declare type SplashResizeMode = 'cover' | 'contain';
48/**
49 * 6 character long hex color string, eg: `'#000000'`
50 * @pattern ^#|(#)\\d{6}$
51 */
52declare type Color = string;
53declare type AndroidMode = 'default' | 'collapse';
54declare type AndroidBarStyle = 'light-content' | 'dark-content';
55export declare type IntentFilter = {
56 action: string;
57 category?: string[];
58 autoVerify?: boolean;
59 data?: {
60 scheme?: string;
61 host?: string;
62 port?: string;
63 path?: string;
64 pathPattern?: string;
65 pathPrefix?: string;
66 mimeType?: string;
67 };
68};
69declare type WebAppleBarStyle = 'default' | 'black' | 'black-translucent';
70/**
71 * Configuration for loading and splash screen for standalone apps.
72 */
73declare type Splash = {
74 /**
75 * Color to fill the loading screen background
76 */
77 backgroundColor?: Color;
78 /**
79 * Determines how the `image` will be displayed in the splash loading screen.
80 */
81 resizeMode?: SplashResizeMode;
82 /**
83 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
84 */
85 image?: Image;
86};
87/**
88 * Local path or remote url to an image to use as an image.
89 * {
90 * asset: true
91 * contentTypePattern: "^image/png$"
92 * contentTypeHuman: ".png image"
93 * }
94 */
95declare type Image = string;
96/**
97 * Local path or remote url to an image to use as an icon.
98 * {
99 * asset: true
100 * contentTypePattern: "^image/png$"
101 * contentTypeHuman: ".png image"
102 * square: true
103 * }
104 */
105declare type Icon = string;
106declare type AndroidAdaptiveIcon = {
107 /**
108 * Local path or remote url to an image to use for your app's icon on Android. If specified, this overrides the top-level `icon` and the `android.icon` keys. Should follow the guidelines specified at https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive. This icon will appear on the home screen.
109 */
110 foregroundImage?: Icon;
111 /**
112 * Local path or remote url to a background image for your app's Adaptive Icon on Android. If specified, this overrides the `backgroundColor` key. Should follow the guidelines specified at https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive.
113 */
114 backgroundImage?: Icon;
115 /**
116 * Color to use as the background for your app's Adaptive Icon on Android.
117 */
118 backgroundColor?: Color;
119};
120export declare type AndroidPlatformConfig = {
121 /**
122 * @autogenerated
123 */
124 publishSourceMapPath?: string;
125 /**
126 * The manifest for the Android version of your app will be written to this path during publish.
127 * {
128 * autogenerated: true
129 * }
130 */
131 publishManifestPath?: string;
132 /**
133 * The bundle for the Android version of your app will be written to this path during publish.
134 * {
135 * autogenerated: true
136 * }
137 */
138 publishBundlePath?: string;
139 /**
140 * The package name for your Android standalone app. You make it up, but it needs to be unique on the Play Store. See [this StackOverflow question](http://stackoverflow.com/questions/6273892/android-package-name-convention).
141 * @pattern ^[a-zA-Z][a-zA-Z0-9\\_]*(\\.[a-zA-Z][a-zA-Z0-9\\_]*)+$
142 * @regexHuman Reverse DNS notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Expo is our app. The name may only contain lowercase and uppercase letters (a-z, A-Z), numbers (0-9) and underscores (_). Each component of the name should start with a lowercase letter.
143 */
144 package?: string;
145 /**
146 * Version number required by Google Play. Increment by one for each release. Must be an integer. https://developer.android.com/studio/publish/versioning.html
147 */
148 versionCode?: number;
149 /**
150 * The background color for your app, behind any of your React views. This is also known as the root view background color. This value should be a 6 character long hex color string, eg: '#000000'. Default is white — '#ffffff'.
151 * Overrides the top-level `backgroundColor` key if it is present.
152 */
153 backgroundColor?: string;
154 /**
155 * Local path or remote url to an image to use for your app's icon on Android. If specified, this overrides the top-level `icon` key. We recommend that you use a 1024x1024 png file (transparency is recommended for the Google Play Store). This icon will appear on the home screen and within the Expo app.
156 */
157 icon?: Icon;
158 adaptiveIcon?: AndroidAdaptiveIcon;
159 /**
160 * URL to your app on the Google Play Store, if you have deployed it there. This is used to link to your store page from your Expo project page if your app is public.
161 * @pattern ^https://play\\.google\\.com/
162 * @example https://play.google.com/store/apps/details?id=host.exp.exponent
163 */
164 playStoreUrl?: string;
165 /**
166 * List of permissions used by the standalone app. Remove the field to use the default list of permissions.\n\n Example: `[ \"CAMERA\", \"ACCESS_FINE_LOCATION\" ]`.\n\n You can specify the following permissions depending on what you need:\n\n- `ACCESS_COARSE_LOCATION`\n- `ACCESS_FINE_LOCATION`\n- `CAMERA`\n- `MANAGE_DOCUMENTS`\n- `READ_CONTACTS`\n- `READ_EXTERNAL_STORAGE`\n- `READ_INTERNAL_STORAGE`\n- `READ_PHONE_STATE`\n- `RECORD_AUDIO`\n- `USE_FINGERPRINT`\n- `VIBRATE`\n- `WAKE_LOCK`\n- `WRITE_EXTERNAL_STORAGE`\n- `com.anddoes.launcher.permission.UPDATE_COUNT`\n- `com.android.launcher.permission.INSTALL_SHORTCUT`\n- `com.google.android.c2dm.permission.RECEIVE`\n- `com.google.android.gms.permission.ACTIVITY_RECOGNITION`\n- `com.google.android.providers.gsf.permission.READ_GSERVICES`\n- `com.htc.launcher.permission.READ_SETTINGS`\n- `com.htc.launcher.permission.UPDATE_SHORTCUT`\n- `com.majeur.launcher.permission.UPDATE_BADGE`\n- `com.sec.android.provider.badge.permission.READ`\n- `com.sec.android.provider.badge.permission.WRITE`\n- `com.sonyericsson.home.permission.BROADCAST_BADGE`
167 */
168 permissions?: string[];
169 /**
170 * [Firebase Configuration File](https://support.google.com/firebase/answer/7015592) google-services.json file for configuring Firebase.
171 */
172 googleServicesFile?: string;
173 /**
174 * Configuration to force the app to always use the light or dark user-interface appearance, such as \"dark mode\", or make it automatically adapt to the system preferences. If not provided, defaults to `light`.
175 * @fallback light
176 */
177 userInterfaceStyle?: 'light' | 'dark' | 'automatic';
178 config?: {
179 /**
180 * [Branch](https://branch.io/) key to hook up Branch linking services.
181 */
182 branch?: {
183 /**
184 * Your Branch API key
185 */
186 apiKey?: string;
187 };
188 /**
189 * [Google Developers Fabric](https://get.fabric.io/) keys to hook up Crashlytics and other services.
190 */
191 fabric?: {
192 /**
193 * Your Fabric API key
194 */
195 apiKey?: string;
196 /**
197 * Your Fabric build secret
198 */
199 buildSecret?: string;
200 };
201 /**
202 * [Google Maps Android SDK](https://developers.google.com/maps/documentation/android-api/signup) key for your standalone app.
203 */
204 googleMaps?: {
205 /**
206 * Your Google Maps Android SDK API key
207 */
208 apiKey: string;
209 };
210 /**
211 * [Google Mobile Ads App ID](https://support.google.com/admob/answer/6232340) Google AdMob App ID.
212 */
213 googleMobileAdsAppId?: string;
214 /**
215 * A boolean indicating whether to initialize Google App Measurement and begin sending
216 * user-level event data to Google immediately when the app starts. The default in Expo
217 * (Client and in standalone apps) is `false`.
218 *
219 * Sets the opposite of the given value to the following tag in AndroidManifest.xml:
220 * https://developers.google.com/admob/android/eu-consent#delay_app_measurement_optional
221 */
222 googleMobileAdsAutoInit: boolean;
223 /**
224 * [Google Sign-In Android SDK](https://developers.google.com/identity/sign-in/android/start-integrating) keys for your standalone app.
225 */
226 googleSignIn?: {
227 /**
228 * The Android API key. Can be found in the credentials section of the developer console or in `google-services.json`.
229 */
230 apiKey: string;
231 /**
232 * The SHA-1 hash of the signing certificate used to build the apk without any separator `:`. Can be found in `google-services.json`. https://developers.google.com/android/guides/client-auth
233 */
234 certificateHash: string;
235 };
236 };
237 /**
238 * Configuration for loading and splash screen for standalone Android apps.
239 */
240 splash?: {
241 /**
242 * Color to fill the loading screen background
243 */
244 backgroundColor?: Color;
245 /**
246 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover`, `contain` or `native`, defaults to `contain`.
247 */
248 resizeMode?: 'cover' | 'contain' | 'native';
249 /**
250 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
251 */
252 mdpi?: Image;
253 /**
254 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
255 */
256 hdpi?: Image;
257 /**
258 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
259 */
260 xhdpi?: Image;
261 /**
262 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
263 */
264 xxhdpi?: Image;
265 /**
266 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
267 */
268 xxxhdpi?: Image;
269 };
270 /**
271 * An array of intent filters.
272 * @uniqueItems
273 * @example [{
274 "autoVerify": true,
275 "action": "VIEW",
276 "data": {
277 "scheme": "https",
278 "host": "*.expo.io"
279 },
280 "category": [
281 "BROWSABLE",
282 "DEFAULT"
283 ]
284 }]
285 */
286 intentFilters?: IntentFilter[];
287};
288declare type Devtool = 'eval' | 'inline-source-map' | 'cheap-eval-source-map' | 'cheap-source-map' | 'cheap-module-eval-source-map' | 'cheap-module-source-map' | 'eval-source-map' | 'source-map' | 'nosources-source-map' | 'hidden-source-map' | 'nosources-source-map' | 'inline-cheap-source-map' | 'inline-cheap-module-source-map' | '@eval' | '@inline-source-map' | '@cheap-eval-source-map' | '@cheap-source-map' | '@cheap-module-eval-source-map' | '@cheap-module-source-map' | '@eval-source-map' | '@source-map' | '@nosources-source-map' | '@hidden-source-map' | '@nosources-source-map' | '#eval' | '#inline-source-map' | '#cheap-eval-source-map' | '#cheap-source-map' | '#cheap-module-eval-source-map' | '#cheap-module-source-map' | '#eval-source-map' | '#source-map' | '#nosources-source-map' | '#hidden-source-map' | '#nosources-source-map' | '#@eval' | '#@inline-source-map' | '#@cheap-eval-source-map' | '#@cheap-source-map' | '#@cheap-module-eval-source-map' | '#@cheap-module-source-map' | '#@eval-source-map' | '#@source-map' | '#@nosources-source-map' | '#@hidden-source-map' | '#@nosources-source-map' | boolean;
289/**
290 * Web platform specific configuration
291 */
292export declare type WebPlatformConfig = {
293 [key: string]: any;
294 /**
295 * Relative path of an image to use for your app's favicon.
296 */
297 favicon?: string;
298 /**
299 * Defines the title of the document, defaults to the outer level name
300 * @pwa name
301 * @metatag title
302 */
303 name?: string;
304 /**
305 * A short version of the app's name, 12 characters or fewer. Used in app launcher and new tab pages. Maps to `short_name` in the PWA manifest.json. Defaults to the `name` property.
306 * @pwa short_name
307 * @regexHuman Maximum 12 characters long
308 */
309 shortName?: string;
310 /**
311 * Specifies the primary language for the values in the name and short_name members. This value is a string containing a single language tag.
312 * @fallback 'en'
313 * @pwa lang
314 */
315 lang?: string;
316 /**
317 * Defines the navigation scope of this website's context. This restricts what web pages can be viewed while the manifest is applied. If the user navigates outside the scope, it returns to a normal web page inside a browser tab/window. If the scope is a relative URL, the base URL will be the URL of the manifest.
318 * @pwa scope
319 */
320 scope?: string;
321 /**
322 * Defines the color of the Android tool bar, and may be reflected in the app's preview in task switchers.
323 * @fallback 'expo.primaryColor', '#4630EB'
324 * @pwa theme_color
325 * @metatag theme-color
326 */
327 themeColor?: Color;
328 /**
329 * Provides a general description of what the pinned website does.
330 * @fallback 'expo.description'
331 * @pwa description
332 */
333 description?: string;
334 /**
335 * Specifies the primary text direction for the name, short_name, and description members. Together with the lang member, it helps the correct display of right-to-left languages.
336 * @fallback auto
337 * @pwa dir
338 *
339 */
340 dir?: 'auto' | 'ltr' | 'rtl';
341 /**
342 * Defines the developers’ preferred display mode for the website.
343 * @fallback standalone
344 * @pwa display
345 */
346 display?: 'fullscreen' | 'standalone' | 'minimal-ui' | 'browser';
347 /**
348 * The URL that loads when a user launches the application (e.g. when added to home screen), typically the index. Note that this has to be a relative URL, relative to the manifest URL.
349 * @pwa start_url
350 */
351 startUrl?: string;
352 /**
353 * Defines the default orientation for all the website's top level browsing contexts.
354 * @pwa orientation
355 */
356 orientation?: 'any' | 'natural' | 'landscape' | 'landscape-primary' | 'landscape-secondary' | 'portrait' | 'portrait-primary' | 'portrait-secondary';
357 /**
358 * Defines the expected “background color” for the website. This value repeats what is already available in the site’s CSS, but can be used by browsers to draw the background color of a shortcut when the manifest is available before the stylesheet has loaded. This creates a smooth transition between launching the web application and loading the site's content.
359 * @pwa background_color
360 * @fallback 'expo.splash.backgroundColor', '#ffffff'
361 */
362 backgroundColor?: Color;
363 /**
364 * If content is set to default, the status bar appears normal. If set to black, the status bar has a black background. If set to black-translucent, the status bar is black and translucent. If set to default or black, the web content is displayed below the status bar. If set to black-translucent, the web content is displayed on the entire screen, partially obscured by the status bar.
365 *
366 * @fallback black-translucent
367 * @metatag apple-mobile-web-app-status-bar-style
368 */
369 barStyle?: WebAppleBarStyle;
370 /**
371 * Hints for the user agent to indicate to the user that the specified native applications (defined in expo.ios and expo.android) are recommended over the website.
372 * @pwa prefer_related_applications
373 */
374 preferRelatedApplications?: boolean;
375 /**
376 * Basic customization options for configuring the default webpack config
377 */
378 build?: {
379 [key: string]: any;
380 /**
381 * Choose a custom style of source mapping to enhance the debugging process. These values can affect build and rebuild speed dramatically.
382 */
383 devtool?: Devtool;
384 /**
385 * Allows you to specify the base path for all the assets within your application.
386 * @deprecated
387 */
388 publicPath?: string;
389 /**
390 * Configuration for customizing webpack report. See `HtmlWebpackPlugin.Options` from `html-webpack-plugin`.
391 */
392 minifyHTML?: {
393 [option: string]: any;
394 };
395 /**
396 * Configuration for customizing the service worker. See `GenerateSWOptions` from `workbox-webpack-plugin`.
397 */
398 serviceWorker?: {
399 [options: string]: any;
400 };
401 };
402 /**
403 * Defines the meta tag elements that will be added to the head element of your index.html.
404 */
405 meta?: {
406 [key: string]: any;
407 /**
408 * ID provided by the Google Site Verification API: https://developers.google.com/site-verification/
409 */
410 googleSiteVerification?: string;
411 /**
412 * Apple PWA-specific meta elements. By default these values will be inferred from fields in the scope above, but you can override them here.
413 */
414 apple?: {
415 [key: string]: any;
416 /**
417 * Enables PWA functionality on iOS devices.
418 * @fallback 'yes'
419 * @metatag 'apple-mobile-web-app-capable'
420 */
421 mobileWebAppCapable?: string;
422 /**
423 * If content is set to default, the status bar appears normal. If set to black, the status bar has a black background. If set to black-translucent, the status bar is black and translucent. If set to default or black, the web content is displayed below the status bar. If set to black-translucent, the web content is displayed on the entire screen, partially obscured by the status bar.
424 *
425 * @deprecated use web.barStyle instead
426 * @fallback black-translucent
427 * @metatag apple-mobile-web-app-status-bar-style
428 */
429 barStyle?: WebAppleBarStyle;
430 };
431 /**
432 * [Twitter card protocol](https://developer.twitter.com/en/docs/tweets/optimize-with-cards/overview/markup.html)
433 */
434 twitter?: {
435 [key: string]: any;
436 };
437 /**
438 * [The Open Graph protocol](http://ogp.me/)
439 */
440 openGraph?: {
441 [key: string]: any;
442 };
443 /**
444 * X-UA protocol
445 */
446 microsoft?: {
447 [key: string]: any;
448 };
449 };
450 /**
451 * Experimental features. These will break without deprecation notice.
452 */
453 dangerous?: {
454 [key: string]: any;
455 };
456 /**
457 * Configuration for PWA splash screens.
458 */
459 splash?: WebSplashScreen;
460 config?: {
461 /**
462 * [Firebase Configuration Object](https://support.google.com/firebase/answer/7015592) Firebase web configuration.
463 */
464 firebase?: {
465 [key: string]: any;
466 };
467 };
468};
469/**
470 * Configuration for PWA splash screens.
471 */
472export declare type WebSplashScreen = {
473 /**
474 * Color to fill the loading screen background
475 */
476 backgroundColor?: Color;
477 /**
478 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.
479 */
480 resizeMode?: 'cover' | 'contain';
481 /**
482 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
483 */
484 image: Image;
485};
486export declare type IosPlatformConfig = {
487 /**
488 * @autogenerated
489 */
490 publishSourceMapPath?: string;
491 /**
492 * The manifest for the Android version of your app will be written to this path during publish.
493 * @autogenerated
494 */
495 publishManifestPath?: string;
496 /**
497 * The bundle for the Android version of your app will be written to this path during publish.
498 * @autogenerated
499 */
500 publishBundlePath?: string;
501 /**
502 * The bundle identifier for your iOS standalone app. You make it up, but it needs to be unique on the App Store. See [this StackOverflow question](http://stackoverflow.com/questions/11347470/what-does-bundle-identifier-mean-in-the-ios-project).
503 * @pattern ^[a-zA-Z][a-zA-Z0-9\\-\\.]+$
504 * @regexHuman "iOS bundle identifier notation unique name for your app. For example, host.exp.exponent, where exp.host is our domain and Expo is our app."
505 */
506 bundleIdentifier?: string;
507 /**
508 * Build number for your iOS standalone app. Must be a string that matches Apple's [format for CFBundleVersion](https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/20001431-102364).
509 * @pattern ^[A-Za-z0-9\\.]+$
510 */
511 buildNumber?: string;
512 /**
513 * The background color for your app, behind any of your React views. This is also known as the root view background color. This value should be a 6 character long hex color string, eg: '#000000'. Default is white — '#ffffff'.
514 * Overrides the top-level `backgroundColor` key if it is present.
515 */
516 backgroundColor?: string;
517 /**
518 * Local path or remote URL to an image to use for your app's icon on iOS. If specified, this overrides the top-level `icon` key. Use a 1024x1024 icon which follows Apple's interface guidelines for icons, including color profile and transparency. Expo will generate the other required sizes. This icon will appear on the home screen and within the Expo app.
519 */
520 icon?: Icon;
521 /**
522 * Merchant ID for use with Apple Pay in your standalone app.
523 */
524 merchantId?: string;
525 /**
526 * URL to your app on the Apple App Store, if you have deployed it there. This is used to link to your store page from your Expo project page if your app is public.
527 * @pattern ^https://itunes\\.apple\\.com/.*?\\d+
528 * @example https://itunes.apple.com/us/app/expo-client/id982107779
529 */
530 appStoreUrl?: string;
531 config?: {
532 /**
533 * [Branch](https://branch.io/) key to hook up Branch linking services.
534 */
535 branch?: {
536 /**
537 * Your Branch API key
538 */
539 apiKey: string;
540 };
541 /**
542 * Sets `ITSAppUsesNonExemptEncryption` in the standalone ipa's Info.plist to the given boolean value.
543 */
544 usesNonExemptEncryption?: boolean;
545 /**
546 * [Google Maps iOS SDK](https://developers.google.com/maps/documentation/ios-sdk/start) key for your standalone app.
547 */
548 googleMapsApiKey?: string;
549 /**
550 * [Google Mobile Ads App ID](https://support.google.com/admob/answer/6232340) Google AdMob App ID.
551 */
552 googleMobileAdsAppId?: string;
553 /**
554 * [Google Sign-In iOS SDK](https://developers.google.com/identity/sign-in/ios/start-integrating) keys for your standalone app.
555 */
556 googleSignIn?: {
557 /**
558 * The reserved client ID URL scheme. Can be found in `GoogeService-Info.plist`.
559 */
560 reservedClientId?: string;
561 };
562 };
563 /**
564 * [Firebase Configuration File](https://support.google.com/firebase/answer/7015592) GoogleService-Info.plist file for configuring Firebase.
565 */
566 googleServicesFile?: string;
567 /**
568 * Whether your standalone iOS app supports tablet screen sizes. Defaults to `false`.
569 */
570 supportsTablet?: boolean;
571 /**
572 * If true, indicates that your standalone iOS app does not support handsets, and only supports tablets.
573 */
574 isTabletOnly?: boolean;
575 /**
576 * If true, indicates that your standalone iOS app does not support Slide Over and Split View on iPad. Defaults to `true` currently, but will change to `false` in a future SDK version.
577 */
578 requireFullScreen?: boolean;
579 /**
580 * Configuration to force the app to always use the light or dark user-interface appearance, such as \"dark mode\", or make it automatically adapt to the system preferences. If not provided, defaults to `light`.
581 * @fallback light
582 */
583 userInterfaceStyle?: 'light' | 'dark' | 'automatic';
584 /**
585 * Dictionary of arbitrary configuration to add to your standalone app's native Info.plist. Applied prior to all other Expo-specific configuration. No other validation is performed, so use this at your own risk of rejection from the App Store.
586 */
587 infoPlist?: {
588 [key: string]: any;
589 };
590 /**
591 * An array that contains Associated Domains for the standalone app.
592 */
593 associatedDomains?: string[];
594 /**
595 * A boolean indicating if the app uses iCloud Storage for DocumentPicker. See DocumentPicker docs for details.
596 */
597 usesIcloudStorage?: boolean;
598 /**
599 * A boolean indicating if the app uses Apple Sign-In. See AppleAuthentication docs for details.
600 * @fallback false
601 */
602 usesAppleSignIn?: boolean;
603 /**
604 * A boolean value indicating if the app may access the notes stored in contacts. See Contacts docs for details.
605 * @fallback false
606 */
607 accessesContactNotes?: boolean;
608 /**
609 * Configuration for loading and splash screen for standalone iOS apps.
610 */
611 splash?: {
612 /**
613 * Local path to a XIB file as the loading screen. It overrides other loading screen options.
614 * {
615 * "asset": true,
616 * "contentTypePattern": "^text/xml$",
617 * "contentTypeHuman": ".xib interface builder document"
618 * }
619 */
620 xib?: string;
621 /**
622 * Color to fill the loading screen background
623 */
624 backgroundColor?: Color;
625 /**
626 * Determines how the `image` will be displayed in the splash loading screen. Must be one of `cover` or `contain`, defaults to `contain`.
627 */
628 resizeMode?: SplashResizeMode;
629 /**
630 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
631 */
632 image: Image;
633 /**
634 * Local path or remote url to an image to fill the background of the loading screen. Image size and aspect ratio are up to you. Must be a .png.
635 */
636 tabletImage?: Image;
637 };
638};
639export declare type ExpoConfig = {
640 /**
641 * The name of your app as it appears both within Expo and on your home screen as a standalone app.
642 */
643 name?: string;
644 /**
645 * A short description of what your app is and why it is great.
646 */
647 description?: string;
648 /**
649 * The friendly url name for publishing. eg: `expo.io/@your-username/slug`.
650 * @pattern ^[a-zA-Z0-9_\\-]+$
651 */
652 slug?: string;
653 /**
654 * The background color for your app, behind any of your React views. This is also known as the root view background color. This value should be a 6 character long hex color string, eg: '#000000'. Default is white — '#ffffff'.
655 */
656 backgroundColor?: string;
657 /**
658 * The username of the account under which this app is published. If not specified, the app is published as the currently signed-in user.
659 */
660 owner?: string;
661 /**
662 * Either `public` or `unlisted`. If not provided, defaults to `unlisted`. In the future `private` will be supported. `unlisted` hides the experience from search results.
663 */
664 privacy?: ExpoPrivacy;
665 /**
666 * The Expo sdkVersion to run the project on. This should line up with the version specified in your package.json.
667 * @pattern ^(\\d+\\.\\d+\\.\\d+)|(UNVERSIONED)$
668 */
669 sdkVersion?: string;
670 /**
671 * Your app version, use whatever versioning scheme that you like.
672 */
673 version?: string;
674 /**
675 * Platforms that your project explicitly supports. If not specified, it defaults to `[\"ios\", \"android\"]`.
676 */
677 platforms?: Platform[];
678 /**
679 * If you would like to share the source code of your app on Github, enter the URL for the repository here and it will be linked to from your Expo project page.
680 * @pattern ^https://github\\.com/
681 */
682 githubUrl?: string;
683 /**
684 * Lock your app to a specific orientation with `portrait` or `landscape`. Defaults to no lock.
685 */
686 orientation?: ExpoOrientation;
687 /**
688 * On Android, this will determine the color of your app in the multitasker. Currently this is not used on iOS, but it may be used for other purposes in the future.
689 */
690 primaryColor?: Color;
691 /**
692 * Local path or remote url to an image to use for your app's icon. We recommend that you use a 1024x1024 png file. This icon will appear on the home screen and within the Expo app.
693 */
694 icon?: Icon;
695 /**
696 * Configuration for remote (push) notifications.
697 */
698 notification?: {
699 /**
700 * Local path or remote url to an image to use as the icon for push notifications. 96x96 png grayscale with transparency.
701 */
702 icon?: Icon;
703 /**
704 * Tint color for the push notification image when it appears in the notification tray.
705 */
706 color?: Color;
707 /**
708 * Display the notification when the app is in foreground on iOS.
709 */
710 iosDisplayInForeground?: boolean;
711 /**
712 * Show each push notification individually (`default`) or collapse into one (`collapse`).
713 */
714 androidMode?: AndroidMode;
715 /**
716 * If `androidMode` is set to `collapse`, this title is used for the collapsed notification message. eg: `'#{unread_notifications} new interactions'`.
717 */
718 androidCollapsedTitle?: string;
719 };
720 /**
721 * By default, Expo looks for the application registered with the AppRegistry as `main`. If you would like to change this, you can specify the name in this property.
722 */
723 appKey?: string;
724 /**
725 * Configuration for the status bar on Android.
726 */
727 androidStatusBar?: {
728 /**
729 * Configures the status bar icons to have a light or dark color.
730 */
731 barStyle?: AndroidBarStyle;
732 /**
733 * Specifies the background color of the status bar.
734 */
735 backgroundColor?: Color;
736 };
737 /**
738 * Configuration for the bottom navigation bar on Android.
739 */
740 androidNavigationBar?: {
741 /**
742 * Determines how and when the navigation bar is shown. Boolean type added for backwards-compatibility (pre SDK-37)
743 */
744 visible?: 'leanback' | 'immersive' | 'sticky-immersive' | boolean;
745 /**
746 * Configure the navigation bar icons to have a light or dark color. Supported on Android Oreo and newer.
747 */
748 barStyle?: AndroidBarStyle;
749 /**
750 * Specifies the background color of the navigation bar.
751 */
752 backgroundColor?: Color;
753 };
754 /**
755 * Adds a notification to your standalone app with refresh button and debug info.
756 */
757 androidShowExponentNotificationInShellApp?: boolean;
758 /**
759 * URL scheme to link into your app. For example, if we set this to `'demo'`, then demo:// URLs would open your app when tapped.
760 * @pattern ^[a-z][a-z0-9+.-]*$
761 * @regexHuman String beginning with a lowercase letter followed by any combination of lowercase letters, digits, \"+\", \".\" or \"-\"
762 * @standaloneOnly
763 */
764 scheme?: string;
765 /**
766 * The relative path to your main JavaScript file.
767 */
768 entryPoint?: string;
769 /**
770 * Any extra fields you want to pass to your experience. Values are accessible via `Expo.Constants.manifest.extra` ([read more](../sdk/constants.html#expoconstantsmanifest))
771 */
772 extra?: {
773 [key: string]: any;
774 };
775 rnCliPath?: string;
776 packagerOpts?: {
777 [key: string]: any;
778 };
779 ignoreNodeModulesValidation?: boolean;
780 nodeModulesPath?: string;
781 /**
782 * Configuration for how and when the app should request OTA JavaScript updates
783 */
784 updates?: {
785 /**
786 * If set to false, your standalone app will never download any code, and will only use code bundled locally on the device. In that case, all updates to your app must be submitted through Apple review. Defaults to true. (Note that this will not work out of the box with ExpoKit projects)
787 */
788 enabled?: boolean;
789 /**
790 * By default, Expo will check for updates every time the app is loaded. Set this to `'ON_ERROR_RECOVERY'` to disable automatic checking unless recovering from an error.
791 */
792 checkAutomatically?: 'ON_ERROR_RECOVERY' | 'ON_LOAD';
793 /**
794 * How long (in ms) to allow for fetching OTA updates before falling back to a cached version of the app. Defaults to 30000 (30 sec).
795 * minimum: 0,
796 * maximum: 300000
797 */
798 fallbackToCacheTimeout?: number;
799 };
800 /**
801 * Provide overrides by locale for System Dialog prompts like Permissions Boxes
802 */
803 locales?: {
804 [key: string]: any;
805 };
806 /**
807 * iOS standalone app specific configuration
808 * @standaloneOnly
809 */
810 ios?: IosPlatformConfig;
811 /**
812 * Android standalone app specific configuration
813 * @standaloneOnly
814 */
815 android?: AndroidPlatformConfig;
816 /**
817 * Web platform specific configuration
818 */
819 web?: WebPlatformConfig;
820 /**
821 * Used for all Facebook libraries. Set up your Facebook App ID at https://developers.facebook.com.
822 * @pattern ^[0-9]+$
823 */
824 facebookAppId?: string;
825 /**
826 * Used for native Facebook login.
827 */
828 facebookDisplayName?: string;
829 /**
830 * Used for Facebook native login. Starts with 'fb' and followed by a string of digits, like 'fb1234567890'. You can find your scheme at https://developers.facebook.com/docs/facebook-login/ios in the 'Configuring Your info.plist' section.
831 */
832 facebookScheme?: string;
833 facebookAutoInitEnabled?: boolean;
834 facebookAutoLogAppEventsEnabled?: boolean;
835 facebookAdvertiserIDCollectionEnabled?: boolean;
836 /**
837 * Is app detached
838 * @generated
839 */
840 isDetached?: boolean;
841 /**
842 * Extra fields needed by detached apps
843 * @generated
844 */
845 detach?: {
846 scheme?: string;
847 iosExpoViewUrl?: string;
848 androidExpoViewUrl?: string;
849 [key: string]: any;
850 };
851 /**
852 * Configuration for loading and splash screen for standalone apps.
853 */
854 splash?: Splash;
855 /**
856 * Configuration for scripts to run to hook into the publish process
857 */
858 hooks?: {
859 postPublish?: string[];
860 };
861 /**
862 * An array of file glob strings which point to assets that will be bundled within your standalone app binary. Read more in the [Offline Support guide](https://docs.expo.io/versions/latest/guides/offline-support.html)
863 */
864 assetBundlePatterns?: string[];
865 [key: string]: any;
866};
867export declare type ExpRc = {
868 [key: string]: any;
869};
870export declare type Platform = 'android' | 'ios' | 'web';
871export declare type ProjectTarget = 'managed' | 'bare';
872export declare type ConfigErrorCode = 'NO_APP_JSON' | 'NOT_OBJECT' | 'NO_EXPO' | 'MODULE_NOT_FOUND' | 'INVALID_MODE' | 'INVALID_FORMAT' | 'INVALID_CONFIG';
873export declare type ConfigContext = {
874 projectRoot: string;
875 /**
876 * The static config path either app.json, app.config.json, or a custom user-defined config.
877 */
878 staticConfigPath: string | null;
879 packageJsonPath: string | null;
880 config: Partial<ExpoConfig>;
881};
882export declare type GetConfigOptions = {
883 skipSDKVersionRequirement?: boolean;
884 strict?: boolean;
885};
886export declare type WriteConfigOptions = {
887 dryRun?: boolean;
888};
889export declare type ConfigFilePaths = {
890 staticConfigPath: string | null;
891 dynamicConfigPath: string | null;
892};
893export {};